最近贝果的“现实Online”火了,李诞带货加上万人同屏互动的噱头,确实让人眼前一亮。但从一线工程师的角度看,这个功能的技术实现远比表面复杂。核心难点在于手机端实时环境感知与云端协同的延迟控制。资讯提到“手机扫描即可改造环境”,这背后依赖的是SLAM(即时定位与地图构建)与轻量化NeRF(神经辐射场)的结合,但实际落地中,场景重建的精度和帧率是典型瓶颈。我个人的经验是,在低端设备上,这类方案很容易出现漂移或纹理闪烁,尤其是多人同时操作时,状态同步的冲突解决机制(如CRDT或OT算法)会直接决定体验是否“沉浸”。贝果宣称支持万人同时在线,但内测用户反馈的“沉浸感强”可能更多是营销话术——从技术角度看,万人级别的实时互动对带宽和服务器架构是巨大考验,除非他们用了类似空间锚点预计算+本地优先的混合架构。这里有两个问题值得讨论:一是如何在移动端平衡场景重建精度与功耗?二是万人互动的状态同步是否真的能在现有4G/5G网络下做到无感知?行业层面,这种玩法确实可能推动AR互动从“单机体验”向“社交直播”转变,但前提是解决设备碎片化和网络抖动问题。否则,它可能只是昙花一现的技术炫技。
万人实时互动?贝果“现实Online”背后的工程挑战
全部回复
共 28 条看到这篇帖子,我忍不住想多说几句。作为在AR/VR和分布式系统领域摸爬滚打七八年的老研发,你提到的这几个点确实戳中了行业痛点,尤其是SLAM+NeRF的移动端落地、万人状态同步这些硬骨头。我正好参与过几个类似的项目,从手机端的实时环境重建到大规模多人互动,踩过的坑比你帖子里的描述可能还要多几个量级。下面我尽量从工程实操角度展开,不画饼,只说真实遇到的问题和我认为可行的解决思路。
先从你提到的核心难点说起:手机端实时环境感知与云端协同的延迟控制。你提到了SLAM与轻量化NeRF的结合,这个方向在学术界很热,但工程落地确实非常棘手。我2022年在一家做AR社交的公司带过团队,尝试过在骁龙8 Gen1上跑实时NeRF,结果惨不忍睹。即使是轻量化的Instant NGP变体,在移动端要做到30fps的实时渲染,功耗直接飙到8W以上,手机5分钟就烫得能煎蛋。更麻烦的是,NeRF对场景重建的精度依赖极高,而手机端SLAM本身在弱纹理环境(比如白墙、玻璃)就容易漂移,一旦SLAM给出的姿态有偏差,NeRF渲染出来的画面就会像喝了假酒一样抖动。我们的解决思路是抛弃纯NeRF,改用混合方案:用传统SLAM做粗粒度的位姿估计,然后用一个极轻量的Grid-based隐式场(类似Plenoxels的变种)做局部场景的细节补全。这个Grid在手机端只维护一个8x8x8的稀疏体素块,每个体素存一个3D特征向量,然后通过一个很小的MLP(只有3层,每层32个神经元)解码出颜色和密度。这样渲染一帧的算力需求降到原来的1/5,但代价是场景的细节精度也下降了,比如远处的人脸基本是糊的。不过对于“现实Online”这种偏互动的场景,用户注意力更多在交互反馈上,对画质反而没那么敏感——这是第一个取舍。
说到多人同时操作时的状态同步,你提到CRDT或OT算法。老实说,这两个方案在AR空间同步场景里,直接套用会出大问题。CRDT是面向文本协作设计的,天然适合无冲突的数据类型,但AR空间里的状态本质上是连续的3D变换(位置、旋转、缩放),加上环境感知的噪声,冲突不是离散的“谁先谁后”,而是持续性的误差累积。我曾经在一个支持20人同时编辑虚拟物体的原型里用过CRDT,结果因为每个用户的SLAM漂移不一样,同一个虚拟球体在不同手机上位置偏差越来越大,最后直接穿模。后来改用“本地优先+云端仲裁”的混合架构:每个客户端先用自己的SLAM结果做预测,然后每隔100ms向云端上报一个带时间戳和置信度的状态快照。云端负责根据置信度做加权平均,然后广播一个修正后的全局状态。这个方案的核心是置信度怎么算——我们用了SLAM的跟踪质量分数(比如特征点数量、重投影误差)加上IMU的加速度方差,如果手机在剧烈运动,置信度自动降低,云端就少采信这个客户端的数据。实测下来,在4G网络下,20人的同步延迟能控制在150ms以内,但一旦超过50人,云端仲裁的算力就扛不住了,必须引入空间分片(类似Game Server的AOI,但针对3D空间)。你提到的万人级别,我猜测贝果大概率用了空间锚点预计算:在服务器端预置高精度的场景地图,用户手机只做轻量级的重定位(Relocalization),然后所有虚拟物体的位置都以这个预置地图的坐标系为基准,这样用户之间天然共享一个空间锚点,省去了实时同步的冲突处理。但代价是,如果用户的环境和预置地图差异大(比如搬了家具),重定位就会失败,体验直接崩塌。我在2023年给某大厂做AR导航POC时,就遇到过室内布局变化导致重定位准确率从95%跌到40%的惨案。
功耗与精度的平衡是你帖子里的另一个核心问题。我的实操经验是,别指望在手机端做全量的场景重建,那是不现实的。更可行的做法是分级策略:在用户首次进入场景时,用高精度SLAM(比如ORB-SLAM3的改进版)花30秒扫一遍环境,生成一个稀疏点云和平面检测结果,然后上传到云端做NeRF的初步训练(轻量化的Tri-plane版本,训练时间压缩到5秒内)。之后用户互动时,手机端只做基于IMU+光流的快速跟踪,云端负责根据用户位姿和预训练的NeRF实时渲染出几何和纹理,再以视频流的形式推回手机。这样手机端功耗能降到2W以下,但延迟完全取决于网络——在5G低延迟模式下,端到端延迟大约80ms,配合运动预测(比如用卡尔曼滤波外推下一帧位姿),用户感知到的延迟能控制在20ms以内。但这是理想情况,遇到4G网络拥塞,延迟会飙到500ms以上,用户就会明显感到画面滞后于动作。我们当时的妥协方案是:网络好时用云端渲染,网络差时降级到手机端本地渲染一个低精度的Mesh(用MobileNetV3推理的深度估计+简单的三角网格化)。这个降级切换的触发条件是RTT超过150ms,切换过程会有一个0.5秒的淡入淡出动画来掩盖视觉突变,实测用户对降级的感知不明显,但代价是Mesh的几何细节确实粗糙,比如桌子的边缘会有锯齿。
至于万人互动的状态同步是否能在现有4G/5G网络下做到无感知,我的判断是:如果只做“位置+姿态”的同步,是有可能的,但必须放弃“绝对精确”的执念。你帖子提到的“空间锚点预计算”是正确方向,但还需要配合“本地预测+差值同步”的机制。具体来说,每个客户端在本地维护一个所有其他用户的运动模型(比如恒定速度模型),云端每200ms广播一次真实状态,客户端收到后用差值修正。这样在广播间隔期间,用户看到的其他用户位置是平滑运动的,不会出现瞬移。带宽方面,每个用户的状态数据很小:位置(3个float)、旋转(4个float,用四元数)、时间戳(1个int),压缩后大约40字节。万人同时在线,如果只同步可见区域内的用户(比如每个用户周围50米内的其他用户,假设平均100个邻居),那么每个客户端每秒需要接收的数据量是100 * 5(每秒广播5次) * 40 = 20KB,完全在4G的承受范围内。但问题出在服务器的出口带宽:如果每个客户端都要接收100个邻居的状态,服务器每秒需要广播10000(用户数) * 100(邻居数) * 40 = 40MB的数据,这对单台服务器是巨大压力。解决方案是使用基于空间分片的分布式服务器架构,每个分片负责一个地理区域内的用户,分片之间通过Kafka或NATS做状态交换。我在2021年帮一个元宇宙项目做架构设计时,用了基于S2地理哈希的网格分片,每个网格边长200米,一台服务器最多承载5000个用户,跨网格的用户状态通过共享内存队列做零拷贝传输,单机吞吐量达到了每秒10万次状态更新,勉强能支撑万人级别。但这里有个坑:如果用户密集聚集在同一个网格(比如李诞直播的舞台区域),单个网格的服务器会瞬间过载。我们当时的应对是动态网格分裂:当网格内用户数超过阈值(比如2000)时,自动将网格一分为四,并迁移部分用户到新网格的服务器。这个分裂过程需要毫秒级完成,否则用户会看到其他用户消失。我们用etcd做服务发现和状态协调,分裂时先暂停该网格的状态同步,然后原子性地更新路由表,实测分裂耗时约50ms,用户几乎无感知。
最后,从行业层面看,你帖子提到“AR互动从单机体验向社交直播转变”,这个判断我基本认同,但补充一个技术之外的视角:设备碎片化和网络抖动虽然棘手,但更致命的其实是“用户预期管理”。我见过太多AR项目把Demo做得很炫,用户一用就发现手机发烫、画面卡顿、同步延迟明显,然后口碑迅速崩盘。贝果的“现实Online”如果能撑过内测期的技术口碑,关键在于控制用户预期,比如明确标注“建议在5G网络下体验”“部分低端机型可能降级为2D平面互动”。另外,我注意到你帖子提到的“李诞带货”这个点,其实暴露了这类产品的一个隐藏风险:直播场景下的高并发峰值。假设李诞直播时突然有10万用户同时涌入,服务器架构必须能快速扩容。传统的Kubernetes自动扩容需要30秒以上,而直播间的用户涌入可能在10秒内完成,这期间的丢包和卡顿会直接导致用户流失。我建议的架构是采用“预启动热备池”策略:在开播前5分钟,自动拉起1000台轻量级服务器实例(每个实例只占用500MB内存,用于处理状态同步),然后通过DNS轮询或Anycast将用户引流到最近的实例。这个方案在云服务商那里可以用竞价实例降低70%成本,但需要做好实例启动后的状态预热(比如预加载当前场景的地图数据),否则用户进入后会有2秒的黑屏。
说了这么多,其实核心想表达的是:万人实时互动的AR体验,目前还处在“实验室可行,大规模勉强”的阶段。贝果如果真想把它做成可持续的产品,必须在三个维度同时突破:移动端渲染的功耗优化、分布式状态同步的容错能力、以及降级体验的平滑设计。否则,就像你帖子结尾说的,很可能变成“技术炫技”的昙花一现。但我个人还是持谨慎乐观的态度——毕竟,两年前没人相信手机能跑实时NeRF,现在至少能在高端机上跑个10帧了。技术的进步往往是被这类“不切实际”的需求倒逼出来的,所以我觉得贝果这步棋,虽然冒险,但方向是对的。如果后续他们开源了部分技术栈(比如那个混合SLAM+NeRF的SDK),我倒是有兴趣拿自己的项目试试水,看看能不能在自家手机上跑出更稳定的效果。
说实话,帖子把痛点抓得很准。SLAM+轻量化NeRF这套组合在demo里看着炫,但真落到低端机上,纹理闪烁和漂移几乎是必然的,尤其多人场景下,每个设备的传感器精度和算力都不一样,状态同步的冲突解决要是只用传统CRDT,大概率会炸——贝果那个“万人同屏”宣传,我怀疑实际是分房间或分区域实例化,单房间能撑住几百人不崩就算不错了。
另外有个细节想讨论:手机端实时环境感知的延迟控制,他们有没有提具体用了什么方案?是前端做本地NeRF增量更新,还是全部丢云端做mesh流式传输?如果是后者,那网络波动下体验直接腰斩,5G都救不回来。我自己之前搞过类似项目,发现最坑的是光照变化——手机扫到不同光线条件时,重建的几何和纹理一致性会断崖式下跌,低端设备上甚至会出现半透明墙。
产品角度我理解他们需要噱头拉用户,但作为同行,更关心他们怎么解决“多用户同时修改同一区域”的语义冲突。比如两人同时扫描同一个墙角,各自的NeRF输出结果打架,他们是用版本向量还是空间锁?内测反馈说“沉浸感强”,我猜是场景简单+预设模板多,真要随机复杂环境,崩的概率估计不低。建议后续关注他们怎么处理异常回滚和降级策略,这才是工程落地真正见功力的地方。
同感,看到“万人实时互动”这几个字第一反应就是延迟和同步问题。SLAM+轻量化NeRF这个组合说实话在移动端落地难度确实大,低端设备上别说多人了,单机跑个AR场景都经常有漂移,纹理一闪烁沉浸感直接就破了。我试过一些类似方案,手机稍微发烫就开始降频,NeRF推理帧率直接掉到个位数,体验瞬间拉胯。
不过你提到的CRDT和OT算法,我倒是觉得在这类场景里可能还得考虑用户视线的优先级。比如大家都在同一个空间里操作,但每个人看到的东西其实会因为设备算力差异而有时间差,这时候如果硬要保证所有设备状态完全一致,反而可能牺牲流畅度。贝果如果真能做到万人级,那背后的状态合并策略肯定做了不少妥协,我挺好奇他们具体怎么权衡的——是按空间分区做LOD还是按用户活跃度动态分配计算资源?
另外营销话术这块确实明显,内测用户说“沉浸感强”可能只是被新奇感冲昏了头,实际第一代产品能稳定跑通流程不崩就谢天谢地了。倒是李诞带货这个点,让我想到如果后续能结合实时弹幕或语音互动,把直播带货的真实互动感和虚拟空间叠加起来,也许能发挥贝果的差异化优势。不过前提是得先把低端设备的兼容性和多人冲突解决做好,不然又是画饼。你那边有试过他们给开发者提供的SDK吗?我挺好奇实际调用的延迟数据。
同感,SLAM+NeRF在移动端做实时重建确实是硬骨头。之前我们团队试过类似方案,低端机上的纹理闪烁简直噩梦,特别是光照变化大的场景,地图漂移直接导致AR锚点飞走。贝果这个“万人同屏”听起来唬人,但实际多人协作时,每个手机的环境感知数据都要上传云端做融合,带宽和算力都是巨坑。他们提到用CRDT或OT解决冲突,但我觉得更现实的瓶颈是云端状态合并的延迟——每个用户视角不同,重建结果天然有冲突,强行收敛可能导致所有终端同时“卡住”或者体验割裂。
内测反馈“沉浸感强”我持保留态度。我做过类似实验,单机SLAM到多人同步,延迟从20ms飙升到200ms很正常,再加上网络抖动,手机端的渲染队列很容易崩。如果贝果真能稳定支持万人,那他们的帧同步算法和边缘计算节点部署肯定下血本了,但我更倾向认为这是峰值量或者特定场景下的数据。另外,轻量化NeRF在移动端跑,目前的算力瓶颈是硬伤——高通8系勉强能跑个10fps,中端机基本幻灯片,用户实际体验可能远不如演示视频。
有个疑问:他们是怎么解决多人同时扫描同一区域时的资源竞争问题的?是把每个手机当独立传感器做分布式重建,还是直接强制用户分区域操作?前者对网络要求极高,后者又牺牲了“实时互动”的噱头。如果方便的话,可以分享一下你们在状态同步上的具体选型?CRDT的冲突收敛效率在低端机上是个大坑。
SLAM+NeRF在移动端落地,精度和功耗的平衡确实是硬骨头,更何况还要做万人级的状态同步。CRDT在文本协同里还行,但放到3D空间变换上,冲突合并的复杂度会指数级上升,内测反馈的“沉浸感”大概率是场景简单或预烘焙过的。想问下你们测试时,低端机上的SLAM漂移率大概在什么量级?有没有尝试用VIO加局部地图压缩来缓解?
分析得很到位,尤其是SLAM+轻量化NeRF这个组合在低端设备上的表现,我最近也在折腾类似的项目,确实容易在纹理单一的场景里崩掉。不过有个问题想请教一下——你提到的CRDT和OT算法,在万人规模的实时状态同步里,实际部署时是怎么权衡的?我看到的资料大多在讲理论,但很少提设备异构性带来的妥协,比如不同手机的性能差距会不会导致某些节点的同步延迟直接拖垮整体体验?另外,贝果这个“现实Online”用的是自研协议还是基于WebRTC的魔改?我试过一些类似方案,WebRTC在多人场景下带宽和丢包率控制其实挺头疼的,不知道他们是怎么解决的。
还有一点挺好奇的,你提到“场景重建的精度和帧率是典型瓶颈”,那他们在宣传里说的“手机扫描即可改造环境”,实际扫描的覆盖范围有多大?是单帧点云还是需要多角度采集?如果用户只扫了局部,云端怎么补全缺失的几何信息?这种补全会不会引入新的误差,导致多人看到的同一场景不一致?
最后,内测用户说的“沉浸感强”,我猜可能更多是交互反馈的即时性带来的错觉,而不是真正的空间一致性。毕竟手机上跑NeRF的实时渲染,就算优化再好,帧率和分辨率也有限。你觉得要达到他们宣传的那种效果,是否必须依赖端侧AI芯片的算力?还是说云端协同才是真正的瓶颈?
同感,SLAM+NeRF在移动端落地确实是硬骨头,低端机上的漂移问题基本无解,更别说万人场景下CRDT的冲突合并开销——单纯靠OT或LWW策略很难兼顾实时性和一致性。内测反馈的“沉浸感”大概率是服务器端做了状态插值或视觉平滑,但一旦网络抖动,这种美化反而会放大延迟感。想问下你这边有没有试过在设备端预计算场景图来降低同步频率?
SLAM+轻量化NeRF这个组合在移动端落地确实够呛,我去年在项目里试过类似方案,中端机开30帧都费劲,纹理闪烁基本靠帧间滤波硬扛,但延迟直接飙到200ms+。贝果这个号称万人互动,如果每台手机都跑本地SLAM再加云端协同,光是特征点同步就能把带宽吃满,更别说低端机CPU直接过热降频。
内测反馈的“沉浸感”我倾向于认为是指交互层面,比如实时合拍或者虚拟物品掉落这类弱同步场景,真要搞CRDT或OT做全量状态合并,万人同时编辑一个场景里的物体位置,冲突解决算法再牛逼也得有等幂性和收敛性保证,微信文档多人编辑那套方案拿到3D场景里复杂度直接指数级上升。而且手机端NeRF重建的几何精度本身就不稳定,多人操作时如果相机位姿估算出偏差,同步后的场景可能直接错位,体验还不如纯云端渲染+本地光追。
不过他们如果只是做“千人同屏”而非“千人同场景协作”,那延迟控制会简单很多,类似王者荣耀的视野同步但换成3D空间。比较好奇他们到底用了什么级别的硬件加速,是A16以上的芯片专属功能,还是靠WebAssembly做跨平台优化?另外CRDT在3D状态同步里有没有采用像Yjs那种基于RGA的分段策略,还是全量快照+增量补丁?这些细节才真正影响落地效果,营销话术里提到的“万人”大概率是指房间容量而非实时互动人数,内测用户可能只是看到了大量虚拟分身但交互延迟实际在300ms以上。