李飞飞新突破:网页3D大场景秒开,手机畅跑1亿点云Spark2.0开源

李飞飞旗下 AI 世界模型公司 World Labs 发布并开源了一个最新成果:Spark 2.0。

这个专为网页端设计的动态 3D 高斯点云(3DGS)渲染引擎,让在任何设备的浏览器里流畅运行上亿粒子的超大 3D 场景,开始逐渐成为现实。

https://www.worldlabs.ai/blog/spark-2.0

1. 连续 LoD 树:把好钢用在刀刃上

LoD(Level of Detail)在游戏圈早已是成熟概念。近处的树用几千个三角形,远处的树只留几十个,按需分配,省算力。Unreal Engine 的 Nanite 系统也是这个思路,把三角形细节和视距挂钩,自动缩放。

Spark 2.0 把同样的逻辑搬到了 splat 上,做得更彻底。

离散切换几个版本容易产生画面「跳变」,Spark 的做法是构建一棵完整的「连续 LoD 树」,每个内部节点都是其子节点 splat 融合后的近似版本,层层向上汇聚,最终到达根节点,也就是整个场景最粗粒度的单一 splat。

渲染时,系统根据当前视角在这棵树上动态划一刀,靠近视角的区域取底层细节,远处取高层粗粒度。

整个过程受一个固定的 splat 预算约束,移动端约 50 万,桌面端约 250 万。场景里总共有多少 splat 都无所谓,实际送上 GPU 的数量始终稳定在预算范围内,帧率自然稳了。

在此之上,Spark 还引入了「注视点渲染」(Foveated Rendering),把更多预算集中分配给你正在看的方向,边缘和背后的区域细节自动收窄。这个效果放在 VR 设备上尤其直观,通常需要眼动追踪才能实现,Spark 用固定锥形区域近似模拟,同样奏效。

2. 全新 .RAD 格式:像刷短视频一样「流式」加载

渲染效率的问题解决了,传输效率的问题同样棘手。现有的 3DGS 文件格式有两个:.PLY 和 .SPZ。前者未压缩,10M splat 高达 2.3 GB,虽然可以边下边显示,但体积实在吃不消。

后者用列式存储加 Gzip 压缩,同等数据量压缩到 200-250 MB,代价是必须等整个文件下载完才能显示,因为每个 splat 的属性分散在文件各处,缺了哪一段都拼不出完整内容。

为了鱼和熊掌兼得,Spark 2.0 设计了新格式 .RAD(RADiance fields)。它把 splat 数据切成每块 64K 个 splat 的独立小块,分别压缩,并在文件头中记录所有块的字节偏移位置,支持随机访问任意一块。

第一块永远是整个场景最粗粒度的 64K 个 splat,下载完毕后场景轮廓立刻可见。此后系统根据视角判断哪些区域最需要细化,优先拉取对应的数据块,画面从模糊逐渐推演出细节。3 个并行的 Web Worker 线程在后台同步拉取和解码,你走到哪,细节就跟到哪。

3. GPU 虚拟内存:在有限显存里装下无限空间

流式加载解决了带宽的问题,但 GPU 内存的硬上限依旧是个难啃的骨头。移动端浏览器对显存有严格约束,塞不下整个 4000 万 splat 的场景。

从已有的落地案例来看,开发者确实在用 Spark 做各种方向的尝试。Webby 奖得主 James C. Kane 独立开发了一款名为 Starspeed 的多人宇宙飞船射击游戏。

4.应用案例

整个游戏场景由超过 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/

相关推荐
西红柿炖牛腩3542 小时前
Web3D 加载卡顿:GLB 几何重、贴图大、格式散,本地 3D 模型压缩怎么选
3d·贴图
熊猫钓鱼>_>2 小时前
从2D平铺到3D沉浸:我用HarmonyOS 7端侧AI做了一个全程数据不出设备的空间化私密相册
前端·人工智能·3d·华为·华为云·harmonyos·鸿蒙
Martina_03212 小时前
AI生成的盔甲换动作后漂移?用6步检查挂点、骨架映射与 Bind Pose
人工智能·游戏·3d·ai·自然语言处理·aigc·游戏策划
创世虚拟世界18 小时前
从零打通 MCP 访问创世虚拟世界CRM的 3D 数据,我搭了一个可直接调用的演示站
3d
李游Leo1 天前
HarmonyOS 7 + Spatial Recon Kit-C++:3DGS 高斯参数的非有限值隔离与可渲染性门禁【鸿蒙心迹】
开发语言·c++·3d·harmonyos
迁移科技1 天前
小体积蕴含大能量:Epic Eye Pixel Mini轻量化相机的应用美学
人工智能·3d·自动化·视觉检测
Martina_03211 天前
同一片森林换个镜头就忽冷忽暖?用6步统一曝光、LUT与相机后处理
人工智能·游戏·数学建模·3d·自然语言处理·aigc·游戏策划
Better Bench1 天前
奇异值分解(SVD)在3D骨骼旋转中的应用:原理与实现
3d·人体姿态估计·骨骼关键点
追烽少年x1 天前
从零构建一个3D点云预览器:Python + PySide6 + pyqtgraph 实战
python·3d
西红柿炖牛腩3542 天前
Three.js 模型体积优化:Draco/Meshopt 压缩与 DRACOLoader 配置的 4 个步骤
javascript·3d·性能优化