

今天,由“AI教母”李飞飞创办的World Labs公司发布并开源了一款重量级产品:Spark 2.0。这是一款专为Web构建的动态3D高斯喷溅(3DGS)渲染器,最初作为内部工具开发,现已全面开放。
Spark与Web上最流行的3D框架Three.js深度集成,并利用WebGL2实现跨平台运行。这意味着,从桌面电脑到iOS、Android手机,乃至VR设备,只要拥有支持Web的浏览器,就能体验它带来的3D视觉震撼。

李飞飞本人转发了相关消息,她表示,Spark 2.0现已可在多种终端设备上流式渲染超1亿个高斯点,并为能推动基于网页的3DGS开源生态发展感到自豪。
那么,Spark 2.0的核心升级究竟是什么?它又是如何做到在消费级设备上驾驭如此庞大数据量的?让我们一起深入其技术细节。

Spark起源:玩转“高斯点”
在AI摄影测量技术的帮助下,将现实世界扫描转化为三维数据已非难事。而3D高斯散射(3DGS) 技术的出现,则让在普通设备上交互式渲染这些三维扫描数据成为了可能。
传统图形学使用带纹理映射的三角形网格来表现物体表面,而3DGS则另辟蹊径,它使用数百万个半透明、带颜色的椭球体(即高斯点,splat),通过相互混合来勾勒出所有表面与微小细节。

每个高斯点都携带一组属性:空间中心位置、椭球体三轴半径、三维朝向、RGB颜色以及不透明度。
将这些高斯点渲染到屏幕上,最经典的方法是“画家算法”:先将所有高斯点按从后到前(从远到近)排序,然后依次绘制。每个三维椭球体投影到屏幕上会变成一个近似的二维椭圆,对椭圆内的每个像素,根据高斯分布计算其透明度,最后将这个颜色与已绘制的画面叠加混合,最终形成完整的3D图像。

Spark最初是World Labs团队为解决内部需求而开发的工具。当时市面上的网页版3DGS渲染器大多存在局限,例如一次只能处理单个对象,且缺乏动态效果。
World Labs希望打造一款通用、开源的3DGS渲染器,让任何人都能在网页上创建可交互的3D高斯场景。他们选择了基于Three.js和WebGL2进行开发,后者是目前几乎所有设备都能稳定运行的唯一网页3D图形接口。
为了构建超大型3D交互场景,必须将多个3DGS对象无缝组合。Spark采用了一个三步算法来确保它们在同一空间中共存,而不会看起来像是简单“贴”在一起:
- 从所有3DGS模型中生成一个全局高斯点列表,并统一转换到同一个空间坐标系下;
- 针对当前视角,将这个全局列表按从远到近排序;
- 得到全局列表及渲染顺序后,通过单次实例化绘制指令,一次性渲染所有高斯点。

例如上图中这个科伊特塔(Coit Tower)3D世界,它包含了超过4000万个高斯点,但在浏览器中仍能实现完全流畅的交互。而随着Spark 2.0的推出,拥有亿级以上高斯点的巨型世界,也能在多数终端设备上流畅运行了。

无限加载超大3D世界的秘诀
如何在Web环境中流畅渲染1亿+的高斯点?Spark 2.0通过三大核心系统攻克了这一规模挑战:连续细节层次(LoD)树、渐进式.RAD流式加载以及GPU虚拟内存分页。
在计算机图形学中,处理大型3D场景的常用技术是细节层次(LoD)系统:根据观察者距离的远近,自动调整渲染的细节量。Spark采用了连续型LoD方案,将所有高斯点组织在一个层级结构——LoD高斯树中。

在这棵树中,每个中间节点都是其子节点的低分辨率版本:通过将多个子高斯点合并为一个新高斯点,来近似表示子节点的形状与颜色。这一合并过程层层递进,直至根节点——一个包含了整个物体所有高斯点整体信息的大型高斯点。
Spark通过遍历LoD高斯树,为当前视角计算出最优的待渲染高斯点子集,只挑选那些质量最好、数量最恰当的点进行渲染。同时,系统会设置一个最大高斯点数量上限(通常在50万到250万之间),确保每一帧只渲染固定数量的高斯点,从而实现稳定、流畅的高帧率。用户可以通过调整这个上限,在流畅度和画面精细度之间自由权衡。此外,细节层次(LoD)更新是异步执行的,不会干扰主线程的渲染循环。

为了支持构建超大型复合世界,Spark的算法升级为可同时遍历多棵LoD树实例,只需在空间中任意添加3DGS LoD对象即可。它还实现了固定中心聚焦渲染,将渲染配额优先分配给视线中心区域,提升视觉焦点处的细节精度,而在视野边缘及后方则使用更粗糙的大尺寸高斯点。
通过命令行工具 build-lod,可将任意3DGS文件转换为LoD高斯树,并编码为全新的可流式传输格式 .RAD 文件。

官方介绍了两种构建LoD树的算法:Tiny-LoD和Bhatt-LoD。两种方法均为免训练,无需任何参考图像或额外输入,直接对原始3DGS数据进行处理。
Spark 2.0定义的 .RAD 全新文件格式,不仅能对3DGS数据进行高效压缩,更支持随机访问式流式传输。这使得模型在网络传输过程中可以实现渐进式精细化渲染,物体在加载时能够几乎瞬间显示出来。

GPU虚拟内存分页是另一项关键创新。Spark 2.0将操作系统虚拟内存的管理思路应用到了3DGS渲染上:在GPU上预留一块固定空间(最多存储约1600万个高斯点),将数据分成每6.4万个高斯点一个块。GPU中的存储位置称为物理页,而.RAD文件中的块称为虚拟块,Spark会自动管理文件数据块与GPU物理页之间的映射关系。

加载规则清晰高效:按LoD优先级,先加载视野里最需要精细显示的块。当GPU空间占满时,则淘汰最久未使用、优先级最低的块,腾出空间给新块。在遍历多棵LoD树时,Spark会统一记录所有文件、所有块的访问顺序,为全部块做一个全局优先级排序,从而最优化加载顺序与显存使用,避免系统卡死。
这正是“用有限的GPU显存,无限加载超大3DGS世界”背后的核心秘诀。对于希望在前端 & 移动领域探索前沿Web3D和人工智能图形技术的开发者而言,深入理解这些机制无疑大有裨益。

商业落地充满想象力
让原本需要专业GPU才能渲染的庞大3D世界,在任何手机的浏览器里都能流式加载、运行和交互,这无疑是空间智能领域迈出的重要一步。
World Labs近期还推出了两个模型更新:Marble 1.1改进了光照与对比度,大幅减少了视觉伪影;Marble 1.1-Plus则是专为规模打造的新模型,能创建比以往更大、更复杂的环境。

已有不少开发者利用World Labs的技术制作出热门应用。例如Teleport,用户只需环绕物体拍摄几张照片,便能在几分钟内生成可完整探索的3D世界。也有独立开发者借助这项3D世界生成技术,更高效地完成了自己的游戏作品。

业内分析认为,Spark 2.0的开源是3DGS与Web3D领域的里程碑事件。它直接解决了“超大规模3D场景在网页/移动端流畅加载渲染”这一行业痛点,将3D世界开发的门槛从顶尖实验室降低到“全民开发”的水平。
当高保真3D世界能像图片和视频一样,在各类终端上自由流动与交互,无疑将催生出许多充满想象力的新商业形态。对于关注技术前沿的开发者社区,例如云栈社区,这类突破性开源项目正是推动行业共同进步的宝贵资源。