2023年12月15日

3D高斯泼溅

辐射场方法最近彻底改变了由多张照片或视频捕获的场景的视觉合成。然而,实现高质量可视化仍需要训练和渲染成本高昂且速度缓慢的神经网络。

这正是 3D Gaussian Splatting 的用武之地,这种方法有望实时渲染 3D 场景——以下是所有细节!

什么是 3D Gaussian Splatting?

Gaussian Splatting 是一种诞生于 90 年代科学领域的渲染技术。然而,它在去年 8 月 SIGGRAPH 2023 上展示的实时场景可视化应用,使其重新成为焦点。

Gaussian Splatting 是一种光栅化技术,用于从多个视角拍摄的图像进行实时 3D 重建和渲染。

3D 空间被定义为一组高斯函数,每个高斯函数的参数通过机器学习计算得出。这意味着:

  • 拥有描述场景的数据。
  • 将数据绘制到屏幕上。

因此,它类似于计算机图形学中的三角形光栅化,后者用于在屏幕上绘制许多三角形。但不同的是,这里绘制的是高斯函数而非三角形。因此,它由以下参数描述:

  • 位置:其所在位置 (XYZ)
  • 协方差:其拉伸/缩放方式 (3×3 矩阵)
  • 颜色:RGB
  • Alpha:其透明度 (α)

这里有一个示例

*光栅化三角形 – 高斯函数

Gaussian Splatting 如何工作?

3D Gaussian Splatting 将 3D 场景表示为数百万个粒子(高斯函数),每个 3D 高斯函数都带有位置/方向/缩放,以及不透明度和颜色。

为了渲染这些粒子,它们会被转换到 2D 空间,然后进行组织以实现高效渲染。遵循的步骤如下:

  1. 运动恢复结构:我们首先使用运动恢复结构(SfM)方法从图像生成点云。这可以通过COLMAP完成。
  2. 转换为高斯函数:每个点被转换为高斯函数,使光栅化成为可能。然而,从 SfM 数据中只能推断出位置和颜色。
  3. 训练:要使表示产生高质量的结果,必须对其进行训练。为此,使用了类似于神经网络的随机梯度下降法。
    1. 使用可微分高斯光栅化,将高斯函数光栅化为图像。
    2. 根据光栅图像与真实参考图像之间的差异计算损失函数。
    3. 根据损失调整高斯参数。
    4. 应用自动致密化。
  4. 可微分高斯光栅化:在此步骤中,每个 2D 高斯函数必须从相机视角进行投影,按深度排序,并且对于每个像素,必须前后结合地重复每个高斯函数。

摄影测量与 NeRF

光度法是一种通过多个视角的图像生成 3D 多边形的技术。虽然它对于扫描物体非常有用,但无法表现没有轮廓的场景(如天空)或远景中的精细细节。此外,在反射或透明元素等某些情况下,也无法精确生成 3D 多边形。

为了解决这些限制,NeRF(神经辐射场)应运而生。它也是一种从不同视点拍摄的图像渲染 3D 场景的方法,但使用 AI 来精确渲染开放场景以及具有反射或半透明表面的表面。唯一的缺点是,实时渲染场景需要非常强大的硬件。

3D Gaussian Splatting 是解决同一问题的另一种方法,但实时渲染场景不需要那么多的计算能力。这是因为,虽然它需要机器学习来训练高斯参数,但渲染过程不需要任何繁重的处理,可以实时完成。

我们在 Plain Concepts 的实践方式

在 Plain Concepts,我们正致力于将 3D Gaussian Splatting 技术集成到我们的 Evergine 3D 引擎中。尽管这是一项不断取得进展的新技术,但在 Plain Concepts,我们相信它已准备好用于实际项目,并且我们确信将在接下来的项目中看到它的实施。

 

 

图形的未来

围绕 Gaussian Splatting 仍存在一些未知数,特别是关于能否对其进行动画处理,或避免出现某些视觉伪影,以及通过关联几何模型来解决碰撞管理的问题。

但正如我们之前提到的,我们很可能会看到 3D Gaussian Splatting 在生产环境中得到全面实施。

此外,嵌入式 AI 将成为 3D 空间研究的关键因素。但可以肯定的是,这项新技术将创建高质量的逼真场景,实现快速实时的光栅化,并且训练相对迅速。

作者
Elena Canorea
文案与内容专员