目前,生成一个互动性的三维空间已经不再是新鲜事了,但如何将庞大的虚拟世界嵌入到普通用户的手机浏览器中却是个挑战。
最近,李飞飞领导的人工智能公司 World Labs 推出了他们的最新成果 Spark 2.0,并将其开放源代码。

这款专门为网页设计的动态三维高斯点云(3DGS)渲染引擎,能够让任何设备上的浏览器流畅运行上亿粒子的大规模三维场景,这在以前是难以想象的。

把如此庞大的三维世界塞进手机里为什么这么难?
你或许听说过「3D Gaussian Splatting」,简称3DGS。简单来说,这是一种将真实环境转化为可互动的三维内容的技术,仅需拍摄一圈照片就能完成。
相比传统的三角形面片建模方法,3DGS 使用的是数百万个透明彩色椭球体,每一个被称为一个「splat」(斑点)。

左图使用纹理映射三角网格,右图则用高斯斑点渲染同一个物体。
每个 splat 并非简单的几何点,而是一个有完整数据的椭球体。它记录了位置、尺寸、方向和颜色等信息。

透明度是其中关键属性之一。它决定了多个 splat 叠加时对周围环境的影响程度,形成了一个高斯曲线:中间最实,向外逐渐变淡直至消失。
正是这种“软边界”的叠加方式,使得数百万个 splat 聚集在一起后能呈现出砖墙的质感、树叶透光的效果和玻璃反射的特性。
这种技术不仅效果逼真,信息量也非常大。一个高质量的 3DGS 扫描场景可能包含几千万甚至上亿个 splat,文件大小往往超过 1 GB。

因此带来了新问题:普通手机能够流畅渲染的上限大约为 100 到 500 万个 splat,而高质量扫描数据则有数千万,两者相差甚远。
目前市面上的渲染器也存在局限性,无法正确处理多个扫描对象在同一场景中的显示问题,要么只能单独渲染一个,要么出现排序混乱、物体表面粘连的情况。
正因如此,Spark 应运而生。据官方博客介绍,最初它是 World Labs 内部使用的工具,用于在网页上展示 3DGS 生成的世界。
经过多番比较后,他们决定自己开发一个新的渲染器来解决这些问题。
Spark 的技术基础是流行的 Web 三维框架 THREE.js,并运行于 WebGL2 上,适用于所有现代设备。它的核心逻辑分为三步:先在 GPU 上生成跨对象的全局 splat 列表,再统一按从远到近排序,最后一次渲染完成。

“全局排序”听起来简单,但实际上这是让多个 3DGS 对象共存于同一场景中的关键。Spark 还在此基础上提供了一套 GPU 处理流水线,用户可以对每个 splat 做个性化操作,如重新着色、调整透明度和添加动态动画等。
Spark 1.0 版本解决了多对象渲染的问题,但面对上亿的 splat 场景仍显不足。于是就有了 Spark 2.0 的问世。
让设备仅渲染所需的最小信息量
Spark 2.0 的核心在于三种技术组合:LoD 细节层级、渐进式流加载和虚拟内存管理,这些单独来看都有先例可循,但结合使用则大大提升了在手机浏览器中流畅显示亿级 splat 场景的能力。
连续 LoD 树:高效利用资源
游戏界早已广泛应用了“细节层级”概念。近处的树用大量三角形绘制,远处的树仅需少量即可,节省计算力。Unreal Engine 的 Nanite 系统也是基于这个思路。

Spark 2.0 则将这一逻辑应用于 splat 上,并且做得更加彻底。
它构建了一棵连续 LoD 树,每个内部节点都是其子节点融合后的近似版本,最终汇聚成整个场景的单一 splat。渲染时根据视角动态选择细节级别。

整个过程以固定的 splat 预算为约束,移动端预算大约 50 万,桌面端则为 250 万。无论场景中总共有多少 splat,实际上传给 GPU 的数量始终保持在预算范围内,从而确保了稳定的帧率。
进一步地,Spark 引入了“注视点渲染”,将更多预算分配给你正在关注的方向,周围区域则自动降低细节层次。

新的 .RAD 格式:像刷短视频一样加载

为了解决传输效率问题,Spark 2.0 设计了一种新型 .RAD 文件格式。它把 splat 数据分成每块 64K 的独立小段,分别压缩,并在文件头中记录所有数据块的偏移位置。
第一块永远是最粗粒度的 64K 段,下载完毕后即可显示场景轮廓。系统会根据视角判断哪些区域最需要细化,优先加载这些细节内容。
得益于这一机制,不同来源的 3DGS 场景可以共享同一个内存池。理论上,只要有足够的网速,无数个独立扫描场景可以无缝拼接成一个无限大的世界。

Spark 2.0 发布后,李飞飞表示,“Spark 2.0 现在可以在任何设备上流畅展示超过 1 亿个 splat 对象,我们很荣幸为基于 Web 的 3DGS 渲染开源生态系统做出贡献。”
李飞飞并未强调“实现了什么”,而是将重点放在了“对社区的贡献”上。这表明该公司在推动整个生态系统的进步方面有着积极的态度。
根据现有案例,开发者确实利用 Spark 进行各种尝试。Webby 奖得主 James C. Kane 利用 Spark 开发了一款名为 Starspeed 的多人宇宙飞船射击游戏,该游戏场景由超过 1 亿个 splat 构建而成。
整个游戏场景通过浏览器以 .RAD 格式流加载,并附带了合成波风格的背景音乐,提供了一个直接在网页上运行的科幻环境。

艺术方面也有不少探索。Hugues Bruyère 的《Dormant Memories》将真实地点的 3D 扫描与虚构空间并置在一起,创造出可探索的交互环境。
来自 Hololive 空间信息技术部门的藤原龍则使用 Spark 渲染了多个大型真实捕获场景,在智能手机、Quest 和 Vision Pro 上均能流畅运行。
这些开发者的尝试充分展示了 Spark 2.0 在不同设备和应用场景中的强大性能。但这只是故事的一半。
一行链接,交付世界
对于一个致力于打造“AI 世界模型”的公司来说,李飞飞团队的愿景远不止于此。如果说 Spark 2.0 解决了如何流畅展示的问题,那么他们真正的目标是如何降低创建这些三维内容的门槛。

创作平台 Marble 和 Spark 深度绑定,用户可以通过一行文字或一张图片在 Marble 中生成 3D 世界,并使用 Marble Studio 将多个世界拼合成更大的场景,最后用 Spark 渲染成可分享的网页体验。
当 AI 能够创造无限大的三维世界时,我们如何将其交付给每一个普通人?现在,World Labs 提出了最新的解决方案:一个简单的网页链接。这可能就是他们给出的答案。
整个游戏场景由超过 1 亿个 splat 构建,附带 10 首合成波风格原声音乐,全部通过浏览器以 .RAD 格式流式加载,惊艳的科幻环境可以直接在网页里跑起来。

附体验地址🔗:https://starspeed.game/
艺术方向则有 Hugues Bruyère 的《Dormant Memories》。他是互动体验工作室 Dpt. 的联合创始人,这个系列把真实地点的 3D 扫描和想象中的空间并置在一起,做成可探索的交互环境。现实与虚构之间的边界在 splat 颗粒感里变得模糊,倒是意外地切题。

附体验地址🔗:https://smallfly.com/dormant_memories/
来自 Hololive 空间信息技术部门的藤原龍则用 Spark 渲染了多个大型真实捕获场景,单场景最高达到 4000 万 splat,在智能手机、Quest 和 Vision Pro 上均能流畅运行。

附体验地址🔗:https://works.lilea.net/spark/
这些来自开发者的多元化尝试,充分证明了 Spark 2.0 在不同设备和应用场景下的强悍实力。但这仅仅是故事的一半。
对于一家致力于打造「AI 世界模型」的公司而言,李飞飞团队的野心绝不止于提供一个开源的渲染工具。如果说 Spark 2.0 解决了「如何流畅观看」的最后一步交付难题,那么「如何低门槛地创造」这些 3D 内容,才是他们真正的杀手锏。
Spark 和 World Labs 的创作平台 Marble 深度绑定,用一行文字或一张图片在 Marble 里生成 3D 世界,用 Marble Studio 把多个世界拼合成更大的场景,再用 Spark 渲染成可分享的网页体验,这条链路目前已经跑通。
技术进步往往以「强无止境」为最高原则,但有时「够用」或许才是最合适。Spark 2.0 讲的正是这么一个故事。
而让设备在任何时候只渲染「刚好够用」的 splat,这个想法本身并不新鲜,但把它落地到网页端的渲染上,还要同时兼容手机浏览器和 Quest,每一步都是实打实的工程问题。
当 AI 能生成无限大的 3D 世界时,我们用什么载体把它交付给每一个普通人?现在,World Labs 给出的最新答案是一个网页链接。
