Spark 2.0是什么
Spark 2.0是World Labs(李飞飞创立)开源的Web端3D高斯溅射渲染引擎,基于Three.js和WebGL2构建。Spark 2.0首创LoD细节层次系统、渐进式流式传输与虚拟内存技术,可在桌面、手机、VR等任意设备浏览器中实时渲染超1亿个splats的大规模3D世界,实现场景从粗糙到精细的平滑渐进式加载,突破传统Web 3D渲染的规模与性能瓶颈,让海量超大场景即时交互、沉浸式流畅浏览成为可能。
Spark 2.0的主要功能
- 超大规模场景渲染:支持在桌面、手机、VR 等任意设备的浏览器中流式传输并实时渲染包含超过 1 亿个 splats 的超大 3D 世界。
- 多对象全局合成:同时渲染多个独立的 3DGS 对象,自动对所有 splats 进行统一的全局深度排序,确保不同对象在空间中正确融合而非简单叠加。
- 连续 LoD 细节层次:通过构建 LoD Splat Tree 层级结构,根据相机距离和视角动态计算最优的树切割线,自动在近处显示高精度、远处显示低精度,实现平滑无跳变的细节过渡。
- 渐进式流式传输:采用自研的 .RAD 文件格式,使场景首次加载时立即呈现 64K splats 的粗糙版本,根据视角优先下载并细化可见区域的数据,实现边传输边精细化的流畅体验。
- 虚拟内存管理:为 splats 分配固定的 GPU 内存池作为页表,根据用户在场景中的实时位置自动从网络获取和置换数据块,突破移动设备内存限制访问海量数据。
- 注视点渲染优化:通过 Foveated Rendering 技术自动将渲染预算向视野中心倾斜,降低屏幕边缘和相机后方区域的细节级别,在不影响主观画质的前提下显著提升帧率。
- 实时编辑与重光照:支持在浏览器中直接对 3D 高斯溅射场景进行实时编辑、颜色调整和动态重光照操作,无需离线预处理可看到修改效果。
- 可编程特效系统:提供基于 GLSL 的代码接口和可视化着色器图节点系统,支持开发者创建动态动画、SDF 几何裁剪、透明度调整等丰富的自定义视觉效果。
Spark 2.0的技术原理
- 3D 高斯溅射基础:Spark 2.0 采用 3D Gaussian Splatting 技术,用数百万个半透明 3D 椭球体(splats)替代传统三角网格表示场景,每个 splat 由位置、缩放、旋转、颜色和不透明度定义,通过 GPU 按深度顺序混合渲染形成最终图像。
- 三步渲染管线:系统采用“生成全局列表→全局深度排序→实例化绘制”的架构,将多对象 splats 转换到统一坐标系并应用动态效果(动画、裁剪等),通过 GPU 计算距离后由 CPU 基数排序确定渲染顺序,最后单次绘制调用完成所有 splats 的光栅化。
- 连续 LoD Splat Tree:为解决亿级 splats 的渲染压力,Spark 自底向上构建层级树结构,将子节点合并为父节点形成多分辨率表示,运行时通过优先级队列在固定预算(50-250 万 splats)内动态计算最优“树切割线”,实现近精细远粗糙的平滑过渡。
- 渐进式流式传输:采用自研 .RAD 格式将数据分块(每块 64K splats)列式压缩存储,文件头记录随机访问索引,使场景可先以 64K 粗糙版本即时呈现,根据视角通过 HTTP 范围请求动态下载细化数据块,实现边下边看的渐进加载。
- 虚拟内存管理:分配固定 GPU 内存池作为 splat 页表,结合 LoD 树遍历结果动态判断当前视口所需数据块,当用户移动时自动从网络拉取新数据并置换旧数据,使浏览器能访问远超本地内存限制的海量 splats。
- LoD 树生成算法:提供 Tiny-LoD(基于空间网格快速合并,采用排序代替哈希优化缓存,适合网页实时生成)和 Bhatt-LoD(基于 Bhattacharyya 距离度量高斯相似度进行高质量合并,适合离线处理)两种无训练依赖的算法构建层级结构。
如何使用Spark 2.0
-
环境引入:在项目中通过 CDN 或 npm 安装 Spark 2.0 和 Three.js,确保目标浏览器支持 WebGL2 标准。
-
基础加载:对于小规模场景,直接调用
loadSplat方法加载 PLY、SPZ 或 Splat 格式的原始 3DGS 文件并添加到 Three.js 场景中。 -
大场景预处理:针对超亿级 splats 的大规模场景,用命令行工具
spark build-lod将原始文件离线转换为支持渐进式流式传输的 .RAD 格式。 -
流式加载:在代码中调用
loadRad方法加载转换后的文件,配置 splat 渲染预算和注视点渲染参数控制细节层次和性能表现。 -
渲染更新:在动画循环中持续调用 splat 对象的
update方法并传入当前相机参数,自动完成深度排序和 LoD 细节切换。 -
多对象合成:同时加载多个 LoD 对象时,Spark 会自动遍历所有对象的 splat 树并统一分配全局渲染预算,实现无缝融合。
Spark 2.0的关键信息和使用要求
- 产品定位:World Labs(李飞飞创立)开源的 Web 端 3D 高斯溅射(3DGS)渲染引擎,基于 Three.js 和 WebGL2 构建,可在任意设备浏览器中实时渲染超 1 亿 splats 的大规模 3D 场景。
- 核心技术:① LoD Splat Tree(连续细节层次,动态选择渲染精度);② 渐进式流式传输(.RAD 格式,先呈现粗糙版本再按需细化);③ 虚拟内存(固定 GPU 内存池动态置换数据块)。
- 性能表现:支持桌面、iOS、Android、VR 全平台,突破设备内存限制,实现边下载边交互的流畅体验。
- 环境要求:
-
支持 WebGL2 的现代浏览器(Chrome、Safari、Firefox、Edge 等)。
-
无需 WebGPU,兼容性更广
-
- 硬件支持:桌面端、移动端(iOS/Android)、VR 设备(Quest 3、Apple Vision Pro 等)。
Spark 2.0的核心优势
-
超大规模承载:突破消费级设备通常仅支持 1-500 万 splats 的限制,可实时渲染 1 亿+ splats 的巨型场景。
-
即点即看的流式体验:采用自研 .RAD 格式与渐进式传输技术,场景用 64K 粗糙版本即时呈现,无需等待数百 MB 数据完全下载。
-
全平台无缝兼容:基于 WebGL2 构建,覆盖桌面、iOS、Android 及 VR 设备,无需担心 API 支持差异。
-
智能细节平衡:独创连续 LoD Splat Tree 系统,根据视角距离与注视点动态调整精度,近实远虚且过渡平滑无跳变。
-
多对象全局融合:支持同时加载多个独立 3DGS 对象,自动进行跨对象全局深度排序,解决传统渲染器”贴图叠加”问题。
-
内存无感扩展:通过虚拟内存页表机制,自动从网络置换数据块,使浏览器可访问远超本地 GPU 内存限制的海量资源。
Spark 2.0的项目地址
- 项目官网:https://www.worldlabs.ai/blog/spark-2.0
- GitHub仓库:https://github.com/sparkjsdev/spark/
Spark 2.0的应用场景
-
数字孪生与城市治理:用于构建城市级数字孪生底座,支持在浏览器中实时浏览包含数千万 splats 的智慧城市三维模型,无需部署重型客户端可实现远程巡检与管理。
-
VR/AR 沉浸体验:用于 VR/AR 头显设备上的大空间沉浸式漫游,可在 Quest 3 或 Apple Vision Pro 中流畅探索超大规模的虚拟文旅与世界构建场景。
-
实时内容创作:用于基于网页的实时协作与内容创作,支持在浏览器中直接对 AI 生成的 3D 世界进行实时编辑、重光照及动态特效调整。
-
线上展览与电商:用于博物馆、艺术展及房地产的线上展示,通过渐进式流式加载技术让用户 instant 浏览大型数字化场景而无需等待完整下载。
-
网页游戏与虚拟活动:用于开放世界网页游戏和虚拟演唱会,实现边玩边下载的流式场景加载,支持超大规模虚拟环境的实时交互渲染。
© 版权声明
文章版权归作者所有,未经允许请勿转载。