3D高斯喷洒是一种在《实时辐射场渲染的三维高斯喷洒》中描述的光栅化技术,它允许从少量图像样本学习逼真场景的实时渲染。本文将介绍其工作原理以及对图形学未来的意义。
在此处查看远程高斯查看器空间,或在下方嵌入一个高斯喷洒场景示例。
什么是3D高斯喷洒?
3D高斯喷洒本质上是一种光栅化技术。这意味着:
- 有描述场景的数据。
- 将数据绘制在屏幕上。
这类似于计算机图形学中的三角形光栅化,用于在屏幕上绘制许多三角形。

但是,不是三角形,而是高斯函数。下面是一个单个栅格化的高斯函数,为了清晰起见,还绘制了边框。

它由以下参数描述:
- 位置:它的位置(XYZ)
- 协方差:它的拉伸/缩放程度(3×3矩阵)
- 颜色:它的颜色(RGB)
- 透明度:它的透明度(α)
实际上,可以同时绘制多个高斯函数。

这是三个高斯函数。那么,700万个高斯函数呢?

下面是每个高斯函数完全不透明时的效果:

这只是对3D高斯喷洒的简要概述。接下来,让我们详细介绍论文中描述的完整过程。
工作原理
1. 运动结构
第一步是使用运动结构(Structure from Motion,SfM)方法从一组图像中估计出一个点云。这是一种从一组2D图像中估计出3D点云的方法。可以使用COLMAP库来完成。

2. 转换为高斯函数
接下来,将每个点转换为高斯函数。这已经足够进行光栅化。然而,仅从SfM数据中可以推断出位置和颜色。为了学习出高质量的结果,我们需要进行训练。
3. 训练
训练过程使用随机梯度下降(Stochastic Gradient Descent),类似于神经网络,但没有层。训练步骤如下:
- 使用可微分高斯栅格化将高斯函数光栅化为图像(后面会详细介绍)
- 根据光栅化图像与真实图像之间的差异计算损失
- 根据损失调整高斯函数的参数
- 应用自动密实化和修剪
步骤1-3在概念上非常简单。步骤4涉及以下内容:
- 如果给定高斯函数的梯度很大(即它太错误了),则分裂/克隆它。
- 如果高斯函数很小,则克隆它。
- 如果高斯函数很大,则分裂它。
- 如果高斯函数的透明度过低,则将其移除。
这个过程可以帮助高斯函数更好地拟合细节,并修剪不必要的高斯函数。
4. 可微分的高斯栅格化
如前所述,3D高斯喷洒是一种栅格化方法,用于将数据绘制到屏幕上。然而,还有一些重要的元素:
- 快速
- 可微分
原始的栅格化实现可以在这里找到。栅格化包括:
- 从摄像机视角将每个高斯函数投影到2D空间。
- 按深度对高斯函数进行排序。
- 对于每个像素,按照从前到后的顺序将它们混合在一起。
附加优化可在论文中找到。
栅格化器的可微性也是至关重要的,这样它就可以使用随机梯度下降进行训练。然而,这仅适用于训练阶段 – 训练后的高斯函数也可以使用不可微的方法进行渲染。
谁关心呢?
为什么3D高斯喷洒如此受关注?显而易见的答案是,其结果不言而喻 – 它可以实时生成高质量的场景。然而,可能还有更多的故事。
关于高斯喷洒还有很多未知之处。它们可以进行动画吗?即将出版的论文《动态3D高斯函数:通过持续动态视图合成进行跟踪》表明可以。还有许多其他未知之处。它们可以反射吗?它们可以在没有参考图像训练的情况下进行建模吗?
最后,人们对具身化人工智能的研究兴趣越来越浓厚。这是人工智能研究的一个领域,其中最先进的性能远远低于人类水平,其中很大一部分挑战在于表示3D空间。鉴于3D高斯喷洒提供了3D空间的非常密集的表示,这对于具身化人工智能研究可能会产生什么影响?
这些问题引起了人们对这种方法的关注。目前尚不清楚实际影响会是什么样子。
图形的未来
那么,这对图形的未来意味着什么?好吧,让我们将其分为优点和缺点:
优点
- 高质量、逼真的场景
- 快速、实时栅格化
- 相对快速的训练
缺点
- 高显存使用量(4GB用于查看,12GB用于训练)
- 大磁盘空间(1GB+用于一个场景)
- 与现有渲染流水线不兼容
- 目前是静态的
到目前为止,原始的CUDA实现尚未适应于生产渲染流水线,如Vulkan,DirectX,WebGPU等,因此尚不清楚其影响将会是什么。
已经有以下适应:
- 远程查看器
- WebGPU查看器
- WebGL查看器
- Unity查看器
- 优化的WebGL查看器
这些要么依赖于远程流式传输(1),要么依赖于传统的基于四边形的栅格化方法(2-5)。虽然基于四边形的方法与几十年的图形技术兼容,但可能会导致较低的质量/性能。然而,查看器#5表明,优化技巧可以实现高质量/性能,尽管采用基于四边形的方法。
那么,我们是否会在生产环境中完全重新实现3D高斯喷洒?答案可能是肯定的。主要瓶颈是对数百万个高斯函数进行排序,原始实现使用了CUB设备基数排序,这是一种高度优化的排序算法,仅在CUDA中可用。然而,付出足够的努力,肯定可以在其他渲染流水线中实现这种性能水平。
如果您有任何问题或希望参与进来,请加入Hugging Face的Discord!