原文(英文):Gaussian Splatting (3DGS) for VFX: The Honest Guide 作者:Arvid Schneider(CG Lounge) 说明:本文为中文翻译版,技术术语保留英文;原文中课程推广与站内导流内容已移除,外部技术参考链接保留。
一种捕捉真实世界的新方式
2023 年 7 月,Inria 和 Max Planck Institute 的团队发表了一篇论文——“3D Gaussian Splatting for Real-Time Radiance Field Rendering”。短短几个月内,它改变了人们对捕捉和渲染真实环境的思考方式。论文提出的方法把 3D 场景表示为数百万个微小的半透明椭球体(称为 Gaussian),从普通照片训练而来,并能以每秒超过 100 帧的速度实时渲染。
到 2026 年初,Gaussian splatting 已经落地到生产工具中:Nuke 17 原生支持,Houdini 21 包含技术预览,OpenUSD 26.03 增加了一等公民的 schema,V-Ray 7 可以对 splat 做光线追踪。Framestore 更是用 4D Gaussian splatting 为《Superman》交付了约 40 个最终像素镜头。
这篇文章会把 Gaussian splatting 到底是什么、能做什么不能做什么、目前如何接入 VFX 工具,以及它在从采集到合成的生产管线中处于什么位置,讲清楚。
Gaussian Splatting 的原理
传统 3D 管线处理多边形,Photogrammetry 处理 mesh 和贴图,NeRF 处理神经网络。Gaussian splatting 处理的是另一种东西:由数百万个小型 3D 椭球体组成的点云,每一个都是空间中的一个 Gaussian 分布。
每个 Gaussian 存储五类属性:
| 属性 | 控制什么 |
|---|---|
| Position(x, y, z) | 在 3D 空间中的位置 |
| Scale(3 个值)+ Rotation(四元数) | 椭球体的大小和朝向 |
| Color(spherical harmonics) | 视角相关颜色:外观随观察角度变化,捕捉高光与光泽 |
| Opacity | splat 的透明程度 |
其中视角相关颜色是关键。Spherical harmonics(SH)编码了每个 Gaussian 的颜色如何随观察角度变化,这正是 splat 看起来照片级真实而非扁平的原因。汽车引擎盖上的反射、木桌表面的光泽、走过窗前时窗户捕捉光线的方式变化——SH 全部能捕捉到。
训练。 你从一个场景的多角度照片开始。COLMAP(一个 Structure from Motion 工具)处理这些照片,估算相机位置并生成稀疏点云。每个点作为初始 Gaussian 的种子。然后一个可微分光栅化器把当前 Gaussian 渲染成图像,与原始照片比较,通过梯度下降调整 Gaussian 属性。经过数千次迭代,重建不足的区域会克隆出新的 Gaussian,单个 Gaussian 覆盖过多的地方会分裂,不透明度降到接近零的地方会被剪除。
输出是一个包含数百万 Gaussian 的 .ply 文件。在 RTX 3060 上训练大约需要 20-30 分钟。
渲染。 这是突破所在。渲染器不做光线追踪(在场景中投射光线),而是把每个 3D Gaussian 投影成 2D 屏幕上的 2D 椭圆,按深度排序,再从前往后合成。这与 GPU 光栅化硬件直接对应,所以在消费级 GPU 上 1080p 能跑到 100+ FPS。渲染时没有神经网络推理,没有 ray marching,只有快速的 alpha 合成。
来源:Kerbl et al., SIGGRAPH 2023
Gaussian Splatting 能做什么
实时新视角合成。 给定位置 A、B、C 拍摄的照片,训练好的模型可以从一个从未拍过的位置 D 渲染出照片级真实的画面。原论文在 1080p 下演示了 30+ FPS;目前的实现在 RTX 4060 级别的硬件上能达到 100+ FPS。
手机采集。 一部现代智能手机(iPhone 13+、Pixel 7+、Galaxy S22+)拍 20 到 200 张照片、帧间重叠率 70-80% 就够了。锁定曝光,使用主摄(不是超广角),从多个高度和角度覆盖被摄主体。
反光和半透明表面。 Photogrammetry 在处理光亮或半透明物体时很吃力,因为它假设表面是漫反射的。Gaussian splatting 处理得更好,因为 spherical harmonics 编码的是视角相关外观,而不是假设每个点只有一个固定颜色。
大型环境。 室外场景、建筑室内、影视布景。无人机或 DSLR 采集数千张照片,就能生成可漫游的照片级环境。Rotor Studios 在商业制作中用 4000-5000 张输入照片来采集汽车广告背景环境。
Gaussian Splatting 不能做什么
这一节比上一节更重要。
Relighting(重新打光)。 原始照片的光照被烘焙进了 spherical harmonic 系数。你不能加一盏 key light、去掉一个阴影、改变时间,或者匹配到光照不同的 plate 上。这是架构层面的限制,不是功能缺失。Gaussian 存储的是外观,不是材质属性。没有 BRDF,没有 diffuse/specular 分离,没有 PBR 着色模型。
可重光照 Gaussian splatting 的研究是存在的(Relightable 3D Gaussian,NeurIPS 2023;LumiGauss,WACV 2025),但它们需要特殊的训练管线,截至 2026 年 4 月尚未进入任何商业 DCC 工具。Volinga Plugin Pro(用于 Unreal Engine)可以通过 proxy geometry 实现 splat 的投影和接收阴影,但这是阴影交互,不是完整的基于材质的 relighting。
干净的 mesh 提取。 Gaussian 是空间中无结构的椭球体,不是表面。你不能把 splat 文件丢给模型师说”帮我 retopo 一下”。SuGaR(CVPR 2024)增加了让 Gaussian 对齐表面的正则化项,然后做 Poisson 重建,但生成的 mesh 有记录在案的质量问题:表面起伏不平、高曲率区域细节退化、对场景尺度敏感。
传统 AOV。 没有 diffuse、specular、shadow、ambient occlusion 或 material ID 通道。没有可分解的 PBR 着色模型。Nuke 17 的 SplatRender 能输出 depth、deep data 和 motion blur,但给不了你从 Arnold 或 Karma 渲染中得到的那套完整 AOV。
投射和接收阴影。 V-Ray 自己的文档写得很清楚:Gaussian splat “被视为自发光物体,无法直接接收其他物体的阴影”。渲染器对 splat 绕开了经典光线追踪。
动画。 标准 3DGS 捕捉的是静态场景。4D Gaussian Splatting(CVPR 2024)可以处理动态场景,但需要同步多相机采集阵列(不是单手持相机),并且在大幅度运动时会出现已知的时序跳变伪影。
透明和玻璃物体。 这是根本性限制。Alpha 混合模型无法分离透明几何体和它背后内容的贡献。镜子、玻璃板、水面会产生漂浮伪影或空洞。
边缘质量。 Gaussian 是柔软的椭球体。物体与背景的边界会产生半透明光晕,而不是硬边。对于需要 tight matte 的干净合成来说,这是真实的限制。
3DGS vs Photogrammetry vs NeRF
| Photogrammetry | NeRF | 3DGS | |
|---|---|---|---|
| 输出 | Mesh + UV 贴图 | 隐式神经网络 | 显式 Gaussian |
| 几何 | 干净、可测量、可 retopo | 无法提取 | 提取质量差(研究级) |
| 渲染速度 | 标准光栅化/光线追踪 | 慢(秒级每帧) | 实时(100+ FPS) |
| 训练时间 | 无(算法处理,非训练) | 数小时到数天 | 20-30 分钟 |
| 反光表面 | 失败(高光被烘成贴图) | 尚可 | 好(spherical harmonics) |
| 透明物体 | 失败 | 差 | 差(根本性限制) |
| Relighting | 可以(mesh + 材质 = 完整 PBR) | 仅研究阶段 | 仅研究阶段 |
| 管线集成 | 任意 DCC、任意渲染器 | 专用查看器 | 正在落地(Houdini、Nuke、UE5、Blender) |
| 文件交接 | .obj、.fbx、.abc、.usd | 私有格式 | .ply、.splat、.spz、.usd(26.03) |
一句话总结: Photogrammetry 给你可以重新打光、重新贴图、做动画的几何;3DGS 给你可以实时漫游的外观。它们解决的是不同的问题。在很多项目上,答案是两者都要:进入灯光管线的 hero asset 用 photogrammetry,环境采集、参考和背景 plate 用 Gaussian splatting。
来源:Teleport/Varjo 对比、Splatware、PyImageSearch NeRF vs 3DGS
它在 VFX 制作中的位置
Superman(2025):第一次最终像素应用
Framestore 在《Superman》中用 4D Gaussian splatting 交付了约 40 个最终像素镜头,用于 Kryptonian 全息影像(Bradley Cooper 和 Angela Sarafyan 饰演超人的生父母)。
采集管线使用 Infinite Realities 的 Deus Capture Stage,约 200 台同步相机组成球形阵列。受控光照下单次两分钟的拍摄。每次采集的 GPU 训练持续数天,输出 24fps 的 PLY 文件序列。
后期阶段,Framestore 用 Houdini + GSOPs 做创意加工:施加噪声场、变换、把 splat 体积切分成”损坏数据包”的片段。Nuke 负责合成,用 Irrealix splat 插件直接从 PLY 序列提取深度。SIBR Viewer(基于原始 3DGS 代码定制修改)通过命令行相机控制渲染最终帧。
一个值得注意的制作细节:切割 Gaussian 云产生的破碎椭球边缘,意外带来了一种有机的”传输错误”美感,Framestore 把它融进了全息影像的视觉效果里。限制变成了特性。
来源:Art of VFX、fxguide podcast、befores & afters
电影之外:MV 与广告
Gaussian splatting 也进入了 MV 和商业广告领域,这些领域对美学灵活性的要求高于照片级合成。
A$AP Rocky 的《Helicopter》使用了动态 Gaussian splatting,被描述为主流音乐发行中最大胆的动态 GS 实际应用之一。Perfume 的 MV(2026 年 2 月,东京 Crescent Inc.)首次使用 4DViews 的 HOLOSYS+ splatting 管线做体积捕捉。Tinie Tempah 的《Closer》则使用 Argus Rig 做 3DGS 采集。
广告方面,The Electric Lens Co. 制作了首个有记录的全 HDR Gaussian splatting 广告(“We Know Good Food”),4K ACES HDR 60fps,通过 Nuke + Irrealix 插件合成了 10 个各含 3000 万点的 splat 场景。这很有意义,因为它证明了在受控生产环境中,splat 是可以走通 ACES/线性色彩管线的。
目前实际可用的 VFX 场景
| 使用场景 | 是否可用 | 说明 |
|---|---|---|
| 布景/环境参考采集 | 可以 | 手机 + Scaniverse,免费。光照信息已包含在采集中 |
| 合成用背景 plate | 可以 | Nuke 17 SplatRender 带 depth,可在 plate 上做 Z 合成 |
| Previs / techvis | 可以 | 实时漫游采集的环境 |
| 受控舞台采集(Superman 模式) | 可以 | 需要专用多相机阵列 |
| LED volume 背景(虚拟制作) | 正在落地 | UE5 中的 Volinga,支持 ACES/OCIO。尚无一线项目确认案例 |
| 替代 CG 环境搭建 | 不行 | 无法 relight、无法艺术指导 |
| Hero 角色 | 不行 | 静态、无动画、无 AOV |
把 CG 物体放进 Gaussian Splat 里
这是每个 VFX 艺术家都会问的问题:我能不能把一个场地采集成 Gaussian splat,把 CG 角色或物体放进去,让 splat 环境为 CG 表面提供光照和反射?
简短的回答:目前的生产工具都做不到。
问题出在架构上。标准 Gaussian splatting 把光照烘焙进每个 Gaussian 的 spherical harmonic 颜色里。splat 是一个外观模型,不是一个可以提取光源的场景。从渲染器的角度看,没有可以反弹的灯光、没有可以反射的表面、没有可以采样的环境。
反射。 V-Ray 的文档确认 splat 在渲染器中是”自发光物体”。把 CG 铬球放进含 splat 的 V-Ray 场景,技术上它确实能在反射里看到 splat 几何体,但反射到的是烘焙好的外观,不是物理光照环境。GSOPs 的 Karma 路径则把 spherical harmonics 烘焙成扁平的 v@Cd 颜色以兼容光线追踪,明确放弃了视角相关效果。当你转动相机,CG 物体上的反射不会正确更新。
环境照明。 没有任何生产级 DCC 允许 Gaussian splat 充当 CG 物体的环境光或 HDRI dome。研究系统是有的:GaSLight(ICCV 2025)演示了在 Blender 的 Cycles 里把 HDR Gaussian 当作发光体,为插入的 CG 物体提供空间变化照明。GBake(SIGGRAPH 2025)从 splat 场景内部烘焙 cubemap 反射探针供 Unity 使用。两者都不是已发布的生产工具。
阴影。 CG 物体向 splat 投影是可行的,通过 shadow catcher proxy geometry(V-Ray 支持,Nuke 标准合成流程也可行)。splat 向 CG 物体投影则仅限于 Unreal Engine 中通过 GSX Shadows 的平行光实现。其他工具都不支持。
Z 深度合成是可行的。 Nuke 17 的 SplatRender 输出 depth 和 deep data。你可以用标准 Z 合成把 CG 元素正确地放在 splat 几何体的前面或后面。遮挡问题解决了,光照交互没有。
现实的折中方案
目前在采集环境中放置 CG 的生产工作流是这样的:
- 把场地采集成 Gaussian splat(作为背景 plate);
- 在同一拍摄现场,于插入点拍摄铬球和灰球,制作传统 HDRI;
- 在渲染器(Karma、Arnold、V-Ray)里用采集的 HDRI 为 CG 物体打光;
- 在 Nuke 17 中渲染 splat 背景并输出 depth;
- 用 Z 深度把 CG 渲染合成到 splat 背景上,保证正确遮挡;
- 用 shadow catcher proxy geometry 把 CG 阴影投到 splat 地面上。
splat 替代的是背景 plate,HDRI 负责 CG 的光照和反射。即使在 Gaussian splatting 时代,片场的铬球依然是必需品。
Houdini 集成
Houdini 21 原生支持(2025 年 8 月)
SideFX 在 Houdini 21 中加入了初步的 Gaussian splatting 支持:
- Bake GSplat SOP:把标准 .ply 属性(f_dc、rot、opacity、scale、f_rest)转换为 Houdini 内部格式(Cd、scale、orient、GS_Alpha、GS_SPH 系数);
- Solaris 导入:通过 SOP Import LOP 把烘焙好的 splat 带入 Solaris stage;
- Karma XPU 渲染:重建 splat 唯一支持的渲染 delegate。Karma CPU 显示的是点云,不是重建图像;
- 混合场景:splat 和传统几何体可以共存于同一个 Solaris stage。
SideFX 将其标注为”技术预览,非生产可用”。它适合做实验和研发,不适合仅靠原生路径输出最终帧。
来源:SideFX Karma H21 What’s New、Entagma 教程
GSOPs(v2.9,2026 年 1 月)
GSOPs(CG Nomads 出品,David Rhodes 和 Ruben Diaz)是 Houdini 目前最完整的 Gaussian splatting 工具集。采用 AGPL-3.0 许可(免费层级),Karma/Solaris 支持则需要付费的 Early Access 层级。
免费层级(SOPs):
- 导入 .ply、.splat、.spz 文件(自动识别 3DGS 与 2DGS);
- 裁剪、变换、对齐、锐化单个 Gaussian;
- DBSCAN 聚类去除噪声和漂浮点;
- 使用 HDRI 做近似 IBL relighting(预烘焙,非光线追踪);
- 实时视口渲染,与传统几何体做深度合成;
- 粗略 mesh 提取;
- v2.9 新增属性桥接,可在 GSOPs 与 H21 原生约定之间转换。
Early Access 层级(LOPs):
- gaussian_splats_import LOP 通过 proxy sphere + MaterialX shader 把 splat 注入 Solaris stage;
- Karma 渲染,与 CG 几何体之间有正确的阴影和反射;
- 这是需要 splat 与完整灯光设置集成的 Houdini 用户的生产级路径。
重要区分: 免费层级的 IBL relighting 是重烘焙外观的近似;Early Access 的 Karma/Solaris 路径则用 proxy geometry 实现真正的光线追踪阴影与反射交互。这是两种不同级别的集成。
来源:GSOPs GitHub、Digital Production、Radiance Fields
OpenUSD 26.03(2026 年 3 月)
Alliance for OpenUSD 增加了原生 Gaussian splatting schema:UsdVolParticleField3DGaussianSplat。它继承自 Gprim,意味着 splat 成为可组合的 USD primitive:可分层、可引用、可设 variant,和 mesh、volume prim 一样。
该版本包含用于一致性测试的参考 Hydra delegate 渲染器(hdParticleField),以及一个 PLY 转 USD 的 Python 脚本。Houdini 何时把 OpenUSD 26.03 集成进 Solaris,目前还没有公开时间表。
来源:AOUSD blog、CG Channel、OpenUSD schema 文档
Nuke 17:用 Splat 合成
Nuke 17.0(2026 年 2 月发布)是第一个原生支持 Gaussian splatting 的主流合成工具,所有版本(标准 Nuke、NukeX、Nuke Studio)均可用。
你能做什么:
| 节点 | 功能 |
|---|---|
| GeoImport / GeoReference | 把 .ply 和 .splat 文件导入 Nuke 的 3D 系统 |
| SplatRender | 把 splat 渲染为 2D,带 depth 输出、deep 输出和 motion blur |
| GeoGrade | 对 splat 做非破坏性调色,支持基于 field 的遮罩 |
| GeoDeletePoints | 删除不想要的 splat(漂浮点、噪声) |
| Field 节点 | FieldCrop、FieldRamp、FieldImage、SDF 形状,用于区域遮罩 |
在 plate 上合成: SplatRender 的输出直接进入 Nuke 的 2D 节点流。Depth 输出支持与 CG 元素或 plate 几何体做 Z 合成。Framestore 的 Superman 管线用的就是这种方式(Nuke 17 之前用第三方插件)从 PLY 序列提取深度,把全息元素合成到实拍画面上。
Nuke 17 做不到什么: relight splat、生成 normal 通道、拆分 diffuse/specular、生成 Cryptomatte。splat 是渲染好的外观,不是着色模型。
来源:Foundry 发布说明、Digital Production、Radiance Fields
Blender
Blender 社区是 Gaussian splatting 最活跃的采用者之一。
3DGS Render by KIRI Engine(v4.1,免费,Apache 2.0)是主力插件。它导入 .ply 文件,通过自定义 OpenGL/GLSL shader 在 EEVEE 中执行渲染。这不是 EEVEE 的标准材质管线,插件运行自己的 shader 来呈现 Gaussian 外观。
你能做什么:
- 实时导入、查看和渲染 Gaussian splat;
- 用 Blender 标准工具编辑 splat(选择、删除、变换);
- 直接在 splat 上绘制图像纹理或纯色(v3.0+,2025 年 3 月);
- 把 mesh 物体(.OBJ)转换为 Gaussian splat 的 .ply 格式;
- 通过 “Combine with Native Render” 模式把 splat 和普通 Blender mesh 放在同一场景;
- 应用几何节点修改器、裁剪盒、相机剔除。
你不能做什么:
- 通过 Cycles 渲染(路径追踪 splat 渲染目前仅处于研究阶段);
- 让 CG 物体接收来自 splat 环境的光照或反射(combine 模式是 2D 合成器合并,不是真正的 3D 集成);
- 使用正交视口模式(splat 需要透视投影)。
“Combine with Native Render” 这个功能值得特别说明:它分别渲染 splat 和 mesh,然后合成在一起。你的 CG 角色和 splat 背景会有正确的深度排序(遮挡正常),但两者之间没有光传输。没有 GI 反弹、没有反射、没有阴影交互。这是合成,不是渲染。
SkySplat(v0.4,BlenderCon 2025 发布)针对的是另一种工作流:无人机视频转 splat,全程在 Blender 内完成。视频处理、COLMAP 重建和 splat 训练都在同一个界面里。
渲染引擎支持情况(2026 年 4 月)
| 渲染器 | Gaussian Splat 支持 | 关键信息 |
|---|---|---|
| Karma XPU | 技术预览 | H21 原生。Karma CPU 仅显示点云。SideFX 标注”非生产可用” |
| Karma(经 GSOPs) | 支持(付费 Early Access) | Proxy sphere + MaterialX。与 CG 几何体有阴影和反射 |
| V-Ray 7 | 支持(原生,2025 年 1 月) | 首个支持的商业渲染器。光线追踪,带阴影 + 反射。v7.2 新增 splat 裁剪(2025 年 12 月) |
| Arnold | 不支持 | 截至 2026 年 4 月没有任何公告或文档 |
| RenderMan 27 | 不支持 | 未来可能通过 OpenUSD 26.03 schema 实现,但目前没有 |
| Redshift | 仅第三方 | Gumroad 上有 TACTYC shader 插件,非原生 |
| EEVEE(Blender) | 支持 | 通过 KIRI Engine 3DGS Render 插件(v4.1,免费)。Cycles 不支持 |
| Nuke SplatRender | 支持 | Depth、deep、motion blur。无完整 AOV |
值得关注的缺口: Arnold 完全没有支持。对于以 Arnold 为主力管线的工作室,目前要用 Gaussian splatting,只能走 V-Ray 或 GSOPs 的 Karma 路径作为替代。
上手:采集与工具
采集设备
手机就行,真的。输入是照片,不是专业扫描数据。从多个角度拍 20 到 200 张重叠照片。锁定曝光(自动曝光会干扰 SfM 步骤),用主摄,从低、中、高不同角度覆盖主体。
更大的环境(房间、外景、布景)用 DSLR 或无人机拍 300-1000+ 张效果更好。Rotor Studios 为汽车环境采集 4000-5000 张照片。
软件管线
| 步骤 | 工具 | 成本 |
|---|---|---|
| 采集(手机) | Scaniverse(Niantic) | 免费,端上处理,导出 .ply 和 .spz |
| 采集(手机) | Polycam | 免费增值,云端处理 |
| 训练(桌面) | Postshot(Jawset) | 免费层级 / €17-39 每月。GUI 应用,建筑场景表现强 |
| 训练(开源) | nerfstudio + splatfacto | 免费。需要 NVIDIA GPU(RTX 3060 8GB 起步),训练约 25 分钟 |
| SfM(前置步骤) | COLMAP | 免费。在 nerfstudio 内自动运行 |
| 清理(浏览器) | SuperSplat(PlayCanvas) | 免费,MIT。选择、删除、遮罩、压缩,无需安装 |
| Houdini | GSOPs + H21 Bake GSplat SOP | GSOPs 免费层级(SOPs)/ 付费(Solaris)。H21 原生免费 |
| Nuke | Nuke 17.0 原生 | 所有版本均包含 |
| Blender | KIRI Engine 3DGS Render(v4.1) | 免费。导入、编辑、绘制、经 EEVEE 渲染 |
一个实际工作流
- 用手机上的 Scaniverse 采集一个场景(免费,端上处理);
- 在 SuperSplat 中清理 splat:去漂浮点、裁剪边界、调整朝向;
- 通过 GSOPs 或 Bake GSplat SOP 把 .ply 导入 Houdini;
- 在 Solaris 中与 CG 几何体组合(需要阴影/反射交互时用 GSOPs Early Access LOP);
- 通过 Karma XPU(原生)或 V-Ray 7(生产级阴影)渲染;
- 或者:直接通过 GeoImport 导入 Nuke 17,用 SplatRender 渲染,在 plate 上合成。
这对 VFX 意味着什么
Gaussian splatting 不是 CG 管线的替代品。你无法艺术指导烘焙好的光照,无法对 splat 点云做 retopo,无法生成供合成师逐灯调色的渲染通道。
它真正的定位是:一种快速、照片级真实的采集格式,填补传统管线处理缓慢的环节。 布景参考、背景环境、保留真实光照的现场数据、速度比控制更重要的前期可视化。
工具演进得很快。十八个月前,splat 还只存在于研究代码和网页查看器里;现在它已经进入 Nuke、Houdini、V-Ray、USD 和 Unreal。Arnold 和 RenderMan 还不支持,但 USD 26.03 给了两者可以构建的 schema。未来一年很可能会补上这个差距。
对于做灯光和合成的艺术家:这是一种正在进入你管线的新数据类型。 它不取代你今天做的任何事,但会与之并存。现场团队会采集场地的 splat,环境部门会把它们用作参考或背景 plate,合成师会收到 .ply 文件,需要知道 SplatRender 能给什么、不能给什么。
实际行动建议:下载 Scaniverse,拍点身边的东西,在 SuperSplat 里清理,导入你的 DCC。十分钟的动手实践,比任何文章都更有用。