← 全部指南
指南 · 7 分钟

什么是高斯泼溅?写给创作者的通俗指南

高斯泼溅(3D Gaussian Splatting)是什么?用通俗的话讲清它的原理、和 NeRF 的区别、算不算 AI,以及怎样拍出好素材。

01

什么是高斯泼溅?

高斯泼溅(3D Gaussian Splatting,简称 3DGS)是一种把普通照片或手机视频变成可自由环视的 3D 场景的方法。如果你在网页里看到过一个可以顺滑转动视角、几乎和原始视频一样真实的房间、雕塑或街角,它很可能就是一个高斯场景。

这项技术来自 2023 年发表在 SIGGRAPH 上的论文《3D Gaussian Splatting for Real-Time Radiance Field Rendering》,作者是 Bernhard Kerbl、Georgios Kopanas、Thomas Leimkühler 和 George Drettakis(来自 Inria、蔚蓝海岸大学和马克斯·普朗克信息学研究所)。它解决的是“新视角合成”问题:从相机没有站过的位置去看拍摄的场景,而且快到可以实时浏览。

传统 3D 模型是由三角形拼成的表面。高斯场景不一样,它用大量细小、柔和、半透明的形状来描述场景,每个形状都有自己的位置、大小、朝向、颜色和不透明度。论文测试的场景里,最终结果大约包含 100 万到 500 万个这样的形状。从任何角度看过去,它们叠加在一起,画面可以非常接近照片。

02

高斯泼溅是怎么工作的?

整个过程大致分三步。

  • 求出相机位置。COLMAP 这类运动恢复结构(SfM)工具会比对你的照片,在多张图里匹配同一个特征点,算出每张照片是从哪里拍的。顺带还会得到一份稀疏点云,也就是勾勒出场景轮廓的一组粗略 3D 点。
  • 放置高斯。每个点成为一个 3D 高斯的起始位置,可以把它想象成一个椭球形的小色团。每个高斯记录位置、形状与朝向(协方差)、不透明度,以及用球谐函数表示的颜色,让颜色可以随观察角度略有变化。
  • 优化。软件从和你照片相同的视角把这些高斯渲染出来,与真实照片对比,然后微调每个参数来缩小差异。过程中,细节不足的地方会通过复制小高斯或拆分大高斯来补充,几乎透明的高斯则会被删掉。论文的完整质量设置要迭代 30,000 次。

浏览之所以快,是因为结果是显式数据:渲染器按当前视角把高斯按深度排序,再用显卡常规的光栅化流程混合到屏幕上,不需要为每个像素去调用神经网络。论文作者报告可以在 1080p 分辨率下实时渲染。

03

高斯泼溅和 NeRF 有什么区别?

常被拿来比较的是 NeRF(神经辐射场),由 Ben Mildenhall 等人在 2020 年提出。NeRF 把场景存放在一个神经网络里。渲染一个像素时,要沿着从相机射出的光线采样很多点,逐个询问网络这些点的密度和颜色,再用体渲染合成。画质可以很好,但每一帧都要查询网络非常多次。

3DGS 论文在测试中量化了这个差距。在 Mip-NeRF 360 数据集上,高质量的 Mip-NeRF 360 方法训练约 48 小时,渲染速度约每秒 0.06 帧;高斯泼溅训练约 41 分钟,渲染约每秒 134 帧,画质相当。当时已经有 Instant-NGP 这类更快的 NeRF 变体,但在同一测试中大约每秒 9 到 12 帧,而且在这些大场景上画质更低。

对创作者来说,实际区别在于:NeRF 是藏在网络权重里的隐式表示,高斯场景则是一份显式的高斯列表,可以直接查看、裁剪和清理。两者都属于辐射场方法,也都需要先有已知相机位置的照片。

04

高斯泼溅算 AI 吗?

要看你怎么定义 AI。高斯泼溅不是生成式 AI,它不会像聊天机器人或图像生成器那样编写、想象或创造内容。它是根据你自己的照片去拟合一个模型,所以画面里的东西都来自相机真实拍到的内容。相机没拍到的区域,通常会变得模糊、稀疏或空缺,而不是被补上编造的细节。

不过它确实借用了机器学习的工具:拟合过程使用基于梯度的优化,和训练神经网络属于同一类方法,通常也在显卡上运行。但原始方法里并没有神经网络,所以更准确的说法是:它是一种与机器学习密切相关的优化技术,而不是一个 AI 模型。

05

怎样拍出效果好的高斯场景

拍摄比任何参数设置都重要。软件只能重建相机拍到的东西,最好是从多个角度都拍到。

  • 重叠。每张照片应和下一张有大部分画面相同。苹果 Object Capture 的拍摄指南要求相邻照片至少重叠 70%,并提醒低于 50% 时重建可能失败。这条经验同样适用于高斯泼溅。
  • 绕着主体走。用脚移动,而不是原地转身;在不同高度各绕一圈,让顶部和下方都被拍到。
  • 照片数量。常见的照片组是 30 到 150 张相互重叠的照片,取决于主体大小和细节。
  • 柔和均匀的光线。直射阳光或闪光灯带来的硬阴影会干扰重建,阴天或室内反射光更容易出好结果。
  • 曝光一致。在 iPhone 上可以长按取景画面,直到出现“AE/AF 锁定”,这样亮度和对焦不会在照片之间跳变。
  • 也可以拍视频。缓慢、平稳的视频可以让软件自动抽帧。移动要平稳,光线要足,避免运动模糊。
06

需要了解的局限

高斯泼溅非常擅长一件事:让拍下来的地方从新角度看也很真实。但它不适合所有 3D 工作。

  • 不是测量工具。高斯场景用于观看,不是为 CAD 或精确测量设计的。
  • 没有实体表面。场景由柔和的高斯组成,没有干净的网格可用于 3D 打印、游戏引擎碰撞或在 Blender 里建模。虽然有把高斯转成网格的工具,但转出来的网格通常会失去高斯场景最吸引人的观感。
  • 难拍的主体。镜子、玻璃、抛光金属和水面会随视角变化;人、宠物、风中的树叶等运动物体,会破坏“场景静止”的前提。可能出现漂浮杂点、模糊或重影。
  • 覆盖缺口。相机没拍清楚的地方会缺失或糊掉。
  • 查看器支持。高斯场景需要能识别它的查看器或编辑器;网格几乎到处都能打开,高斯文件则不然。
07

用 SplatLoom 在自己电脑上生成高斯场景

想试试这项技术,并不需要服务器集群或命令行。SplatLoom 是一款桌面应用,支持 Mac(Apple Silicon,macOS 15 及以上)和 Windows 10/11 x64,可以把相互重叠的 JPG/PNG 照片或 MP4/MOV 视频完全在你自己的电脑上生成 3D 高斯场景。不上传、不需要账号,也没有云端处理。

默认流程很短:选择照片或视频,点“生成”,然后查看结果,用方框或球形裁剪、矩形框选、一键清理尖刺以及撤销/重做来整理。可以导出高斯 PLY 文件、PNG 静帧、12 秒 1080p MP4 环绕视频,或一个可离线打开的独立 HTML 查看器。它基于安装包内置的开源引擎:COLMAP 负责相机位置,Brush 在本机显卡上训练高斯,PlayCanvas 负责查看器,不需要安装 Python。

在我们的测试中,一段 13 到 20 秒的手机视频在 Apple M5 Pro MacBook 上从头到尾处理大约用了 9 到 14 分钟。这只是一次测试,不是承诺;实际耗时取决于你的电脑和素材。

SplatLoom 一次性买断价 19.90 美元,同时包含 Mac 和 Windows 安装包,没有订阅,也没有点数;如果在你的电脑上无法运行,7 天内可退款。它不导出网格,不是测量工具,Windows 版的显卡支持也比 Mac 版推出得晚。

常见问题

做高斯场景需要会写代码吗?

不需要。原始研究代码需要 Python 和命令行,但现在已有桌面应用把这些步骤包装成普通界面。比如 SplatLoom 在安装包里内置了 COLMAP、Brush 和 PlayCanvas,选好照片或视频,点“生成”即可。

高斯场景可以编辑吗?

可以,但有限度。你可以裁剪、框选并删除高斯,去掉漂浮杂点或背景;但不能像编辑网格那样雕刻或重新建模。

处理一个场景要多久?

取决于显卡、照片数量或视频长度以及设置。举一个实测数据:在我们的测试中,SplatLoom 在 Apple M5 Pro MacBook 上处理一段 13 到 20 秒的手机视频,全程约 9 到 14 分钟。

高斯泼溅比摄影测量更好吗?

没有绝对的好坏。高斯场景通常更接近真实观感,包括随视角变化的光泽等效果;如果你需要可测量、可 3D 打印或可放进游戏引擎的表面,摄影测量生成的网格更合适。

参考资料:https://arxiv.org/abs/2308.04079 · https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/ · https://arxiv.org/abs/2003.08934 · https://colmap.github.io/ · https://developer.apple.com/documentation/realitykit/capturing-photographs-for-realitykit-object-capture · https://github.com/ArthurBrussee/brush

在 SplatLoom 中试试