手机拍 6 张照片,浏览器里 36 秒就变出一个能转着看的 3D 场景:这个开源项目连图都不上传
一句话先说结论
有个叫 splatting-rs 的开源项目,把「用几张照片做出 3D 场景」这件事整个塞进了浏览器标签页里:你丢进去六张手机照片,等大约半分钟,就能拖动查看一个立体的、可以转视角的 3D 场景,还能把结果下载成 .ply 文件。全程照片不出你的电脑,服务器什么都不用。
它到底是什么
平时你用手机拍一堆照片,想让它们变成能转的 3D 模型,传统做法是:先在工作站上用 COLMAP 这类工具估算每张照片拍摄时的位置和角度(也就是「相机位姿」),再花几分钟到几十分钟去训练。慢、重、还得装一堆软件。
splatting-rs 想干的事,是把这条链路的前半段(也是过去最慢最烦的那半段)直接跳过。它用的是「前馈」思路:让神经网络一次前向推理,就从照片里推出深度和相机信息,不用再单独解一遍位姿;然后在浏览器里用 WebGPU 直接把「3D 高斯泼溅」(3D Gaussian Splatting,简称 3DGS)训练出来。渲染出来的效果,就是那种可以从任意角度贴近看、有体积感的 3D 场景。
为什么值得关注
3DGS 这两年一直是 3D 重建的热门方向,但它的「入口」很劝退:光是解相机位姿这一步,就足以把普通用户挡在门外。而这一次,真正的新意在「跑在哪里」——不是做出了更好的泼溅效果,而是把整条流程搬进了一个网页标签:不用装环境、不用上传、不用等服务器排队。
往大了说,这让 XR / 网页 3D 多了一条「零安装、本地生成」的路:以前看到的泼溅内容多是别人做好给你的,现在你自己在浏览器里就能造一个。
它是怎么做到的
项目由三个 Rust 库叠成一条流水线:
- mapanything-rs:把 Meta 的 MapAnything 网络移植过来,一次前向就把照片变成带颜色的点云,官方说「不需要相机位姿」。
- depthanything3-rs:用字节跳动的 Depth Anything 3 Small,从照片预测深度、相机和焦距。它只有约 137MB 权重,而不是 MapAnything 的 4.9GB——作者称它是「为浏览器准备的第一段」。
- instantsplat-rs:按 InstantSplat 的思路,在点云上每个点初始化一个高斯,再用自己用 WGSL 写的 wgpu 光栅器去优化。
在网页里,Depth Anything 3 Small 跑在编译成 wasm 的 CPU 后端(放在一个 Web Worker 里,页面不会卡),高斯的优化则跑在 WebGPU 上,用的是和原生版本相同的 WGSL 内核。demo 页面承诺得很直接:「Nothing leaves your browser.(什么都不离开你的浏览器)」
实测数字(作者给出的唯一一组)
作者在 M5 芯片的 headless Chrome 里跑了一次:六张 3024×4032 的手机照片(缩到 378×504)。
- 一次性下载模型:7 秒(之后浏览器会缓存,不再下载)
- 预处理:0.14 秒
- Depth Anything 3 Small:23.5 秒(wasm 单线程,含 SIMD)
- 初始化约 26 万个高斯:0.04 秒
- 训练:26 步/秒,默认 300 步花 11.5 秒(跑在 WebGPU)
- 合起来约 36 秒,共生成 259,975 个高斯
一个关键对照:同样的这个深度网络,原生跑在 Metal 上只要 2 秒。也就是说,浏览器里最慢的一环不是训练,而是那个卡在 wasm 单线程上的网络。瓶颈在哪,作者自己写得清清楚楚。
适合谁用
- 想快速把一个实物、一个小房间、一件小玩意变成「能转着看」的 3D 的人;
- 在意隐私、不想把照片传到任何服务器的人;
- 做 WebXR / 网页 3D、想要一条本地生成路径的开发者。
不适用 / 局限(这部分作者也没藏着)
- 只在它所使用的少数几个输入视角附近才靠谱;换到别的角度,泼溅会「尖刺、破面」。想稳住的话,得再加一步用完整 COLMAP 采集去 refine,98 帧约 3000 步要花大约 5 分钟——等于又请回了它本想跳过的那套工具。
- 输入分辨率被模型卡在长边 504 或 518 像素。
- Depth Anything 3 Small 解出来的相机,精度不如 MapAnything。
- 原生工具面向 Apple Silicon(走 Metal),有 CPU 兜底;网页里的 WebGPU 只能在 localhost 或 HTTPS 下跑。
- 两个 Rust 移植都还没和 PyTorch 参考实现对过数值,只在真实拍摄上「看过效果」。
- 目前它只是作者的个人早期实验(仓库自称「我的高斯泼溅实验」,检查时 0 star、只有 7 次提交),只有这一组单芯片实测,别当成成熟产品。
怎么用 / 上手路径
- 打开在线 demo(主页链接指向 antoinemopa.github.io/splatting-rs)。
- 第一次点一下,下载 137MB 的 Depth Anything 3 Small 权重;之后浏览器会缓存,下次直接用。
- 选两张或更多手机照片,等大约半分钟。
- 用鼠标拖动查看,满意就下载 splat.ply。
想更讲究效果,也可以在本地按仓库 README 用命令行跑,或者用完整版 MapAnything(11 张照片在 M5 上约 3 分钟,但相机位姿会更准)。
一点提醒
它目前的价值不在「结果有多完美」,而在「这条链路现在能跑在一个网页里、还不上传」。如果你要的是能直接拿去商用的成品模型,先别抱太高期望;如果你关心的是隐私、零安装、以及 WebXR 的方向,那这个一周大的项目值得盯着看。
参考来源
- GitHub 仓库:https://github.com/antoineMoPa/splatting-rs (Apache-2.0)
- 浏览器实测说明(README):https://github.com/antoineMoPa/splatting-rs/blob/main/instantsplat-rs/web/README.md
- 在线 demo:https://antoinemopa.github.io/splatting-rs/
- Metaverse Watcher 报道:https://www.metaversewatcher.io/splatting-rs-browser-gaussian-splat-six-photos-webgpu/
- ExplorXR《XR Daily》(2026-10-18):https://explorxr.com/posts/2026-10-18-xr-daily/
*说明:本文基于该项目的官方仓库/README 与多家媒体的转述整理,非官方新闻稿;数字均来自作者自述的实测,尚未经第三方复现。*