引言
在计算机视觉这一快速发展的领域中,在计算机内部重建现实的探索在短短几年内取得了巨大的飞跃。我们从摄影测量学起步,发展到革命性的神经辐射场 (NeRF),最近又迎来了 3D 高斯泼溅 (3D Gaussian Splatting, 3DGS)。
3DGS 通过实现实时渲染和 NeRF 难以企及的快速训练速度改变了游戏规则。它不再将场景表示为连续的体素,而是表示为数百万个离散的 3D 高斯“团块”。虽然这对于有机、模糊的结构非常有效,但在处理人造世界时却遇到了障碍。看看你的周围——墙壁、桌子、屏幕和建筑物都是由锐利的边缘和平面定义的。从本质上讲,高斯函数是柔软、圆形且扩散的。试图用圆形团块来表示锋利的立方体,就像试图用水气球搭建乐高房子一样;你需要极其大量的气球来近似平面,而且效果永远不够完美。
这种局限性导致了内存膨胀,并在本应是硬边缘的地方产生了视觉伪影。但是,如果我们改变基本的构建块呢?如果我们不使用模糊的团块,而是使用一种天生就能理解边缘和体积的图元 (primitive) 呢?
这就是 3D 凸包泼溅 (3D Convex Splatting, 3DCS) 的核心贡献。

在这篇文章中,我们将深入探讨一篇新的研究论文,该论文提出用 3D 光滑凸包 (3D Smooth Convexes) 取代高斯。我们将探索这些新图元如何在保持我们期望的实时渲染速度的同时,实现更锐利的边缘、更好的表面表示和更低的内存使用率。
背景: 高斯的“模糊”问题
要理解为什么 3D 凸包泼溅是必要的,我们需要先看看当前最先进技术: 3D 高斯泼溅 (3DGS) 的局限性。
3DGS 使用数百万个 3D 高斯来表示场景。每个高斯本质上是一个椭球体,由其位置、旋转、缩放、不透明度和颜色定义。为了渲染图像,这些 3D 椭球体被投影到 2D 相机平面上 (泼溅) 并混合在一起。
虽然效率很高,但高斯在几何上存在两个主要限制:
- 缺乏物理边界: 从理论上讲,高斯函数是无限延伸的 (尽管它衰减得很快) 。它没有一个硬性的“停止点”。这使得它极其不适合表示平坦的墙壁或锐利的角落。
- 球体填充问题: 想象一下试图用网球填满一个方盒子。无论你把它们塞得多紧,球与盒子的角落之间总会有空隙。为了填补空隙,你需要越来越小的球。在 3DGS 中,这意味着系统必须生成数百万个微小的高斯,仅仅为了制造坚实、平坦表面的错觉。
这导致了一种权衡: 你要么接受“模糊”的边缘,要么通过使用数百万个图元来模拟锐度,从而导致内存使用量激增。
凸包登场
3D 凸包泼溅背后的研究人员提出了一种植根于几何学的解决方案: 3D 光滑凸包 (The 3D Smooth Convex)。
凸形状是一种体积,对于形状内的任意两点,连接它们的线段也完全位于形状内部。想想立方体、金字塔或十二面体。与高斯不同,凸形状可以有平坦的面和锐利的角。通过使用这些作为我们的渲染图元,我们可以仅用少数几个大的、平坦的凸包来表示一张桌子或一堵墙,而不是成千上万个微小的高斯。

如上图所示,效率的提升是巨大的。要使用高斯获得椅子腿的清晰表示,你需要一团密集的点云。而使用凸包,一个拉长的形状就可以完美地表示整条腿。
核心方法: 3D 凸包泼溅
那么,我们要如何实际实现这一点呢?我们不能直接把标准的三角形网格扔进泼溅管道中,因为我们需要系统是可微的 (differentiable) 。 我们需要能够微调形状的参数,并看到它是如何改变图像的,从而让计算机“学习”场景的形状。
该方法依赖于一套复杂的流程,该流程在数学上定义这些形状,将它们投影到 2D,并进行渲染。

1. 定义 3D 光滑凸包
该论文建立在 CvxNet 的概念之上,CvxNet 使用平面来定义凸形状。然而,3DCS 采用了稍微不同的方法使其与泼溅兼容。
这种方法中的 3D 凸包不是直接定义平面,而是由一组 3D 点 (假设有 \(K\) 个点) 定义。形状是这些点的“凸包 (convex hull)”——想象一下把橡皮筋绕在一堆钉子上;橡皮筋内部的形状就是凸包。
光滑性的数学原理
标准的凸包具有无限锐利的角,这对优化来说是有问题的 (梯度很难流过尖锐的不连续点) 。为了解决这个问题,作者使用了光滑近似符号距离函数 (Smooth Approximate Signed Distance Function) 。
首先,他们定义了从一点到定义凸包的平面的距离 \(L_j(p)\):

然后,为了创建“光滑”的凸包,他们使用了 LogSumExp 函数。该函数聚合了构成凸包的所有平面的距离,但柔化了它们之间的交集。

在这里,参数 \(\delta\) (delta) 控制光滑度 。
- 高 \(\delta\): 形状接近具有锐角的硬多面体。
- 低 \(\delta\): 角落变得圆润和柔软。
指示函数 (锐度)
一旦我们定义了形状,我们需要知道它有多“致密”。它是一个实心物体,还是雾状的?这由使用 Sigmoid 激活的指示函数 (Indicator Function) 控制:

在这里,参数 \(\sigma\) (sigma) 控制边界的锐度 。
- 高 \(\sigma\): 从“内部”到“外部”的过渡是瞬间的 (像实心墙) 。
- 低 \(\sigma\): 过渡是渐进的 (像云) 。
通过结合这两个参数,系统可以表示各种各样的形状,从坚硬的立方体到柔软、雾状的团块。

2. 泼溅过程: 从 3D 到 2D
在渲染中,我们不直接看 3D 形状;我们看到的是它在 2D 屏幕上的投影。3DGS 将 3D 椭球体投影为 2D 椭圆。3DCS 需要将 3D 凸包投影为 2D 凸多边形。
计算 3D 凸包然后投影它的计算成本很高。作者使用了一条巧妙的捷径:
- 投影点: 将定义 3D 形状的 \(K\) 个点使用标准透视投影分别投影到 2D 相机平面上。

计算 2D 凸包: 一旦点到了 2D 平面上,使用一种称为 Graham 扫描 (Graham Scan) 的算法来找到这些 2D 点的凸包。这勾勒出了屏幕上的形状轮廓。
计算 2D 指示函数: 用于 3D 形状的数学公式 (LogSumExp) 在这里被复用到 2D 中。连接 2D 凸包点的线充当“平面”,允许系统计算形状内每个像素的颜色和不透明度。
投影形状的 2D 指示函数如下所示:

注意到 \(d\) 项了吗?它根据与相机的距离缩放参数,以确保透视的正确性。
3. 光栅化
最后,我们在屏幕上有一组 2D 形状。光栅化器按深度 (离相机最近的优先) 对它们进行排序并混合它们的颜色。这使用了 NeRF 和 3DGS 中常见的标准 Alpha 混合公式:

这一步是完全可微的,并在 CUDA 中实现以获得高性能。这意味着系统可以将渲染图像与地面真值照片进行比较,计算误差,并更新 3D 点的位置、它们的颜色和不透明度。
优化: 自适应致密化
一个场景很少简单到可以用初始的随机凸包集来表示。系统需要在必要的地方添加更多细节。
在 3DGS 中,高斯会被克隆或分裂。3DCS 使用类似但在几何上独特的方法。当优化检测到某个凸包未能充分表示某个区域 (基于梯度) 时,它会触发分裂 (Split) 。

由 \(K\) 个点定义的单个凸包被分裂成 \(K\) 个新的、更小的凸包。这些新形状的中心对应于原始形状的点。这确保了新形状大致覆盖相同的体积,但现在可以自由独立移动并捕捉更精细的细节。
为了确保系统收敛,他们使用了一个损失函数,结合了 L1 距离 (像素差异) 、SSIM (结构相似性) 和掩码损失,以最小化使用的图元数量。

实验与结果
这种几何复杂性值得吗?研究人员在标准基准测试中对比了 3DCS 与 3DGS、Mip-NeRF360 以及其他基于图元的方法 (如 2DGS 和 GES) : Tanks and Temples、Deep Blending 和 Mip-NeRF360 。
几何保真度
第一个基本验证是看凸包是否真的比高斯更好地表示形状。

如图 6 所示,光滑凸包 (下排) 可以用极少的点形成锐利的三角形和正方形。高斯 (上排) 即使添加更多数量也难以形成角落;它们天生就倾向于圆形。
定量性能
表 1 总结了主要结果。使用的指标包括 LPIPS (越低越好,衡量感知质量) 、PSNR (越高越好,衡量像素精度) 和 SSIM (越高越好,结构相似性) 。

数据的主要结论:
- 卓越的质量: 3DCS 在几乎所有数据集上的 LPIPS 分数都优于 (更低) 3DGS。这意味着图像对人眼来说看起来更自然。
- 内存效率: 在 “Tanks&Temples” 数据集上,3DCS 在实现更高质量的同时,使用的内存大约是 3DGS 的一半 (282MB 对比 411MB) 。“Light” (轻量) 版本的 3DCS 使用的更少 (83MB) 。
- 速度: 虽然 3DCS 的训练和渲染速度比极速的 3DGS 慢 (由于更复杂的凸包计算) ,但它仍然比 Mip-NeRF360 快几个数量级。
室内与室外
该方法在结构化环境中表现最为出色。在 Mip-NeRF360 数据集中,研究人员将结果分为室内和室外场景。

对于室内场景 (桌子、墙壁、房间) ,3DCS 显著优于 3DGS。这验证了凸包图元更适合人造几何结构的假设。
视觉对比
数据固然重要,但在计算机图形学中,视觉质量才是王道。

在图 7 中,请看 Train 一行。3DGS 渲染中的背景结构模糊不清。3DCS 渲染则保留了建筑的硬线条。同样,在 Flowers 一行中,3DCS 比 3DGS 平滑后的表示更好地捕捉了草的高频细节。
另一个引人注目的对比是使用更少形状表示场景的能力。

这张图 (图 11) 至关重要。它表明 3DCS 不仅仅是“不一样的泼溅技术”——它是一种语义上更好的分解 。 凸包自然地与实际物体 (如叶子或树桩) 对齐,而高斯只是创造了一层近似物体的雾。
效率对比
最后,让我们看看参数数量与质量 (LPIPS) 之间的权衡。

红线 (3DCS) 始终位于蓝线 (3DGS) 下方。这意味着对于任何给定的内存或模型大小“预算”,凸包泼溅都能为你提供更好看的图像。
结论与启示
3D 凸包泼溅代表了“泼溅”领域的成熟。虽然 3D 高斯泼溅证明了我们可以实时渲染辐射场,但 3DCS 提出了一个重要问题: “高斯是完成这项工作的正确形状吗?”
答案似乎是: 并不总是。
通过采用 3D 光滑凸包,研究人员创建了一个系统,它:
- 尊重几何: 自然地处理硬边缘和平面表面。
- 节省内存: 更有效地表示体积,需要更少的图元。
- 保持质量: 在感知指标上优于高斯,特别是在室内、结构化场景中。
虽然与简单的高斯相比,它在渲染速度上略有下降,但为了获得的视觉保真度,这种权衡通常是值得的。这篇论文为未来的混合渲染引擎铺平了道路——也许未来的引擎会用凸包来渲染墙壁和物体,而用高斯来渲染烟雾和火焰。
对于计算机视觉的学生和研究人员来说,3DCS 是一个完美的例子,说明了重新审视基本假设 (如“我们应该使用什么图元?”) 如何能带来显著的性能突破。
本文中展示的所有图像和数据均直接来源于研究论文 “3D Convex Splatting: Radiance Field Rendering with 3D Smooth Convexes”。
](https://deep-paper.org/en/paper/2411.14974/images/cover.png)