3D高斯泼溅(Splatting)简明教程

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器

3D 高斯泼溅(Splatting)是用于实时辐射场渲染的 3D 高斯分布描述的一种光栅化技术,它允许实时渲染从小图像样本中学习到的逼真场景。 本文将详细介绍它的工作原理以及它对图形学的未来意味着什么。

1、什么是 3D 高斯泼溅?

3D 高斯泼溅的核心是一种光栅化技术。 这意味着:

  • 有描述场景的数据。
  • 在屏幕上绘制数据。
  • 类似于计算机图形学中的三角形光栅化,用于在屏幕上绘制许多三角形:

然而,它不是三角形,而是高斯分布。 这是一个栅格化的高斯函数,为了清晰起见,绘制了边框:

高斯泼溅由以下参数描述:

  • 位置:它所在的位置 (XYZ)
  • 协方差:如何拉伸/缩放(3x3 矩阵)
  • 颜色:它是什么颜色(RGB)
  • Alpha:透明度如何 (α)

在实践中,会同时绘制多个高斯曲线:

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

这是每个高斯光栅化完全不透明的样子:

这是对 3D 高斯分布的非常简短的概述。 接下来,让我们逐步完成本文中描述的完整过程。

1、3D高斯泼溅原理

3D高斯泼溅的实现原理分为一下几个部分:

  • 运动结构恢复:利用SfM得到点云
  • 点云转高斯分布
  • 模型训练
  • 光栅化

1.1 运动结构恢复

第一步是使用运动结构恢复 (SfM: Structure from Motion) 方法从一组图像中估计点云。 这是一种从一组 2D 图像估计 3D 点云的方法。 这可以通过 COLMAP 库来完成。

1.2 转换为高斯分布

接下来,每个点都转换为高斯分布。 这对于光栅化来说已经足够了。 然而,只能从 SfM 数据推断位置和颜色。 为了学习产生高质量结果的表示,我们需要对其进行训练。

1.3 模型训练

训练过程使用随机梯度下降,类似于神经网络,但没有层。 训练步骤为:

  • 使用可微分高斯光栅化将高斯光栅化为图像(稍后详细介绍)
  • 根据光栅化图像和地面真实图像之间的差异计算损失
  • 根据损失调整高斯参数
  • 应用自动致密化和修剪

步骤 1-3 从概念上讲非常简单。 第 4 步涉及以下内容:

  • 如果对于给定的高斯梯度很大(即它太错误),则分割/克隆它
  • 如果高斯很小,则克隆它
  • 如果高斯很大,则将其分割
  • 如果高斯的 alpha 太低,请将其删除

此过程有助于高斯更好地拟合细粒度细节,同时修剪不必要的高斯。

1.4 可微分高斯光栅化

如前所述,3D 高斯分布是一种光栅化方法,它将数据绘制到屏幕上。 然而,一些重要的元素还包括:

  • 快速
  • 可微分

光栅化器的原始实现可以在这里找到。 光栅化涉及:

  • 从相机角度将每个高斯投影为 2D。
  • 按深度对高斯进行排序。
  • 对于每个像素,从前到后迭代每个高斯,将它们混合在一起。

这篇论文中描述了其他优化。

光栅化器是可微分的也很重要,这样就可以用随机梯度下降来训练它。 然而,这仅与训练相关 - 训练有素的高斯也可以用不可微的方法呈现。

2、谁关注3D高斯泼溅?

为什么 3D 高斯溅射受到如此多的关注? 显而易见的答案是结果不言自明 - 这是高质量的实时场景。 然而,故事可能还有更多。

关于高斯泼溅还能做什么还有很多未知数。 它们可以动画化吗? 即将发表的论文《动态 3D 高斯:通过持久动态视图合成进行跟踪》表明他们可以。 还有许多其他未知数。 他们能做反思吗? 可以在没有参考图像训练的情况下对它们进行建模吗?

最后,人们对嵌入式人工智能的研究兴趣日益浓厚。 这是人工智能研究的一个领域,最先进的性能仍然低于人类性能几个数量级,其中大部分挑战在于表示 3D 空间。 鉴于 3D 高斯分布可以产生非常密集的 3D 空间表示,这对具身AI 研究有何影响?

这些问题需要注意方法。 实际影响如何还有待观察。

3、图形学的未来

那么这对图形学的未来意味着什么呢? 好吧,让我们将其分为优点/缺点:

优点

  • 高品质、逼真的场景
  • 快速、实时光栅化
  • 训练速度相对较快

缺点

  • 高 VRAM 使用率(4GB 用于查看,12GB 用于训练)
  • 大量磁盘占用(一个场景 1GB+)
  • 与现有渲染管道不兼容
  • 静态(暂时)

到目前为止,原始的 CUDA 实现尚未适应生产渲染管道,如 Vulkan、DirectX、WebGPU 等,因此还有待观察会产生什么影响。

目前已经进行了以下适应性工作:

  • 远程查看器
  • WebGPU查看器
  • WebGL 查看器
  • Unity查看器
  • 优化的 WebGL 查看器

这些依赖于远程流传输 (1) 或传统的基于四元组的光栅化方法 (2-5)。 虽然基于四元组的方法与数十年的图形技术兼容,但它可能会导致质量/性能降低。 然而,查看器 #5 表明,尽管采用基于四元组的方法,优化技巧仍可以带来高质量/性能。

那么我们会看到 3D 高斯泼溅在生产环境中完全重新实现吗? 答案可能是肯定的。 主要瓶颈是对数百万个高斯进行排序,这在原始实现中使用 CUB 设备基数排序(一种仅在 CUDA 中可用的高度优化的排序)有效完成。 然而,只要付出足够的努力,在其他渲染管道中当然可以达到这种性能水平。


原文链接:3D高斯泼溅 --- BimAnt

相关推荐
天空之城--1 小时前
Claude Code 高效开发 Web 2D/3D 完全指南:心法、自定义 Skill 体系与社区技能包实战
前端·3d
清风笑烟语20 小时前
rustfs 集群部署
3d
还是大剑师兰特1 天前
Unity 从零搭建简易3D场景(新手分步教程)
3d·unity·游戏引擎
EQ-雪梨蛋花汤1 天前
Android 3D 开发教程(三):Sceneform-EQR 配置 PBR 材质、光照、相机与实时阴影
android·3d·材质
弈语道破AI1 天前
3D渲染不再熬时间!即梦 Seedance 2.5 具备3D白模渲染功能的AI视频生成工具
人工智能·3d·音视频
答案—answer2 天前
VibeCoding 能做到什么程度?我用它做了一座 3D 数字博物馆
3d·ai编程·threejs·vibecoding
玖玥拾2 天前
Unity3D RPG 入门项目(四)背包拖拽、物品悬浮提示、项目开发思维
3d·unity·游戏引擎
cyadyx3 天前
【Three.js】Three.js 中加载 3D 模型
前端·javascript·3d
chaoyuanl3 天前
悬空玻璃剧场源头厂家选型全解析|270°裸眼3D悬空玻璃剧场投资避坑指南
大数据·人工智能·3d·xr·娱乐·mr
在下胡三汉3 天前
GLTF vs OBJ vs FBX vs GLB:选择合适的 3D 文件格式,怎么获取下载
3d