如果你一直关注3D计算机视觉领域的快速发展,你无疑已经接触过 3D高斯泼溅 (3D Gaussian Splatting, 3DGS) 。 它凭借实时渲染速度和高质量的重建效果彻底改变了该领域。然而,就像任何新兴技术一样,它也有自己的阿喀琉斯之踵。对于3DGS来说,这个软肋就是镜子和发光物体 。
标准的3DGS难以渲染高光 (Highly Specular) 表面——比如抛光金属、玻璃或镜子,这些材料能清晰地反射周围环境。当你在3DGS场景中看镜子时,通常看到的不是附近茶壶或玩具车的清晰反射,而是一团模糊、不连贯的乱麻。
在这篇文章中,我们将深入探讨 SpecTRe-GS , 这是在CVPR上提出的一种解决该问题的新方法。研究人员提出了一种混合方案: 他们结合了高斯泼溅的速度和光线追踪 (Ray Tracing) 的物理准确性,以此来建模复杂的互反射 (inter-reflections) 。

如图1所示,区别非常明显。虽然以前的方法在反光碗上产生了幽灵般或模糊的伪影,但SpecTRe-GS捕捉到了附近魔方的清晰反射。让我们来看看他们是如何做到这一点的。
问题所在: 为什么3DGS讨厌镜子
要理解解决方案,我们首先需要了解原始3D高斯泼溅的局限性。
3DGS将场景表示为一团3D高斯 (椭球体) 。为了渲染颜色,它使用球谐函数 (Spherical Harmonics, SH) 。 SH非常适合表示平滑变化的视点相关颜色变化,就像天鹅绒随着你绕着它移动而改变亮度一样。然而,SH仅限于低频信号。
完美的镜面反射是高频信号。当你稍微移动头部时,镜中的图像会发生剧烈变化。要使用SH表示清晰的反射,你需要数量极其庞大的系数,这将导致内存使用量和计算成本激增。
此外,标准的3DGS独立处理每个高斯。它并不天生“知道”场景其余部分的几何形状。这使得在使用标准光栅化管线时,根本不可能计算互反射——即物体A在物体B的反光表面内可见。
解决方案概览
研究人员曾尝试以各种方式解决这个问题。有些人试图将反射烘焙到纹理中 (但这在你移动相机时会失效) 。其他人使用屏幕空间光线追踪 (SSRT) ,但这只能反射屏幕上当前可见的内容 (如果被反射的物体在相机视野之外,这种方法就会失效) 。

如表1所总结,现有的绝大多数方法要么完全忽略互反射,要么将它们“烘焙”到模型中,这使得后续无法编辑场景 (例如,移动物体并看到其反射也随之移动) 。SpecTRe-GS旨在填补这一空白,实现高频、可编辑的3D光线追踪反射 。
核心方法: SpecTRe-GS
研究人员引入了一条从根本上改变发光物体渲染方式的管线。核心思想是将场景分离为两种类型的材质:
- 粗糙表面 (Rough Surfaces): 使用标准、高效的3DGS管线渲染。
- 高光表面 (Highly Specular Surfaces): 使用基于物理的光线追踪模块渲染。

让我们拆解一下图2所示的架构。
1. 适用于高斯的渲染方程
SpecTRe-GS不仅仅依赖球谐函数,而是采用了基于物理的渲染 (PBR) 方程 。 对于场景中的高光部分,颜色不仅仅是一个存储的值;它是根据光线从表面反弹的情况计算出来的。
该反射模型将来自表面点 \(\mathbf{x}\) 的光分离为漫反射 (散射) 和镜面反射 (像镜子一样) 分量:

- \(I_{\mathrm{diff}}\) 是漫反射颜色 (就像物体的基础色) 。
- \(I_{\mathrm{spec}}\) 是清晰的反射。
为了计算镜面反射 \(I_{\mathrm{spec}}\),系统需要知道两件事: 表面的反射率是多少 (\(A_{\mathrm{spec}}\)),以及从反射方向 (\(\omega_{\mathrm{r}}\)) 射入的光是什么 (\(I_{\mathrm{i}}\))。

反射率 \(A_{\mathrm{spec}}\) 使用菲涅尔效应建模——这是物理术语,意思是“物体在掠射角下看起来更反光”。他们使用Schlick近似来计算:

在这里,\(F_0\) 是存储在每个高斯上的可学习参数,表示当你直视材料时的反射率。
2. 追踪入射光线
最困难的部分是确定 \(I_{\mathrm{i}}\)——入射辐射度 。 这就是你在镜子里面实际看到的图像。在真实的物理环境中,光线来自两个来源:
- 直接光照 (Direct Lighting): 来自天空或环境贴图的光 (\(I_{\mathrm{dir}}\))。
- 间接光照 (Indirect Lighting): 从场景中其他物体反射的光 (\(I_{\mathrm{ind}}\))。
SpecTRe-GS通过从相机发射光线,使其从发光的高斯上反弹,并观察它接下来击中了什么来计算这一点。

- \(V_{\mathrm{i}}\) 是可见性 (如果光线没有击中任何东西直达天空则为1,如果被物体阻挡则为0) 。
- 如果光线击中天空,我们采样环境贴图 (\(I_{\mathrm{dir}}\))。
- 如果光线击中另一个物体,我们查询该物体的颜色 (\(I_{\mathrm{ind}}\))。
最后,系统使用掩码 \(M\) 结合标准渲染和这种新的镜面渲染。该掩码标识图像的哪些部分是高光的。

3. 点云中的高效光线追踪
工程上的挑战在于: 如何高效地对一团柔软、半透明的斑点进行光线追踪?
标准光线追踪器 (如Nvidia的OptiX) 作用于三角形 (网格) 。3DGS使用的是高斯。为了弥补这一差距,SpecTRe-GS构建了一个几何加速结构 (GAS) 。
他们没有对精确的高斯椭球体进行光线追踪 (这在数学上很繁重) ,而是用拉伸的二十面体 (一种有20个面的几何形状) 来近似每个高斯。这就充当了一个紧紧包裹高斯的“代理网格”。

该公式根据高斯的协方差 (形状) 和旋转来缩放二十面体,确保网格代理与视觉斑点相匹配。
当光线击中此代理时,系统会通过解析计算精确的“交点”,以确保深度精确。使高斯沿光线的贡献最大化的深度 \(t\) 为:

通过在硬件加速框架 (OptiX) 内使用这种代理几何体,SpecTRe-GS能够非常快速地追踪数百万条二次光线——仅比标准光栅化慢50%到100%,对于添加完整的全局光照来说,这是一个令人印象深刻的成绩。
4. 训练和几何增强
光线追踪是无情的。如果镜子的几何形状稍微有点凹凸不平,反射就会看起来扭曲呈波浪状。标准的3DGS通常会产生“蓬松”的几何形状,远看还可以,但在光线反弹方面表现糟糕。
为了解决这个问题,作者引入了一种具有特定损失函数的鲁棒训练策略:

这里的一个关键组件是 \(\mathcal{L}_{\mathrm{n}}\),即法线先验引导 。 他们使用预训练的单目法线估计模型 (StableNormal) 来猜测表面方向应该是什么,如果高斯的指向错误,就会受到惩罚。

联合几何优化
仅仅惩罚法线是不够的。系统需要从反射本身学习几何形状。如果反射看起来不对劲,那镜子的角度肯定有问题。
为了实现这一点,作者对光线追踪的光线相对于表面法线进行微分。他们使用有限差分法来数值计算梯度:

这有效地告诉系统: “那个红色立方体的反射太偏左了;稍微向右倾斜镜子来修正它。”
为了使其稳定,他们使用深度感知光线扰动 。 在计算梯度时,他们根据反射物体的距离来调整摆动光线的幅度。

最后,他们使用渐进式学习策略。他们开始时强烈依赖“法线先验”来获得大致正确的形状。随着训练的进行,他们衰减这种引导,让基于物理的渲染损失接管以微调细节。他们还抑制反光区域的残差颜色,以强制模型依赖光线追踪管线:

实验与结果
它真的有效吗?作者将SpecTRe-GS与最先进的方法进行了比较,包括标准3DGS、受Ref-NeRF启发的方法以及其他具有反射感知能力的泼溅技术。
视觉质量
视觉结果令人信服。在图3中,我们看到了合成场景的对比。

仔细观察Mirror (镜子) 这一行 (中间) 。“Ground Truth” (真值) 显示了黄色物体的完美反射。
- 3DGS-DR 和 GShader 产生了反射,但通常是扭曲或模糊的。
- 3iGS 和 GOF 在高频细节上表现得很吃力。
- SpecTRe-GS (Ours) 几乎完美地匹配了真值。
分量分解
证明模型正在学习“物理”而不仅仅是记忆像素的最有力证据之一是图像分解 。 我们可以要求模型只向我们展示漫反射颜色或只展示镜面反射。

在图4中,看“Diffuse” (漫反射) 这一列。理想情况下,闪亮的金属头盔应该具有灰/黑色的漫反射颜色,所有的颜色都应该在“Specular” (镜面反射) 层中。
- 3DGS-DR 将反射烘焙到了漫反射层中 (你可以在漫反射列的头盔上看到房间) 。
- SpecTRe-GS 成功地分离了它们。漫反射头盔是深色哑光的,反射完全在镜面反射通道中。这允许以后进行逼真的重照亮。
定量数据
数据支持了视觉效果。作者测量了 PSNR (图像质量) 、SSIM (结构相似性) 和 LPIPS (感知相似性) 。

SpecTRe-GS 获得了最高分,特别是在 “Reflective” (反光) 列中,该列专门衡量镜面区域内的质量。
真实世界表现
合成数据很好,但真实世界的数据是杂乱的。作者使用真实相机捕捉场景以测试鲁棒性。

如图5所示,该方法恢复了准确的几何形状 (红/蓝热力图) ,并生成了令人信服的桌布上玩具的反射,即使相机姿态和光照并没有得到完美的控制。
消融实验
作者还进行了消融实验,以验证他们复杂管线的每个部分是否都是必要的。

数据显示,移除法线先验引导 (w/o N.) 会导致质量下降幅度最大。这证实了如果没有良好的几何形状初始猜测,光线追踪会因太不稳定而无法收敛。
结论与未来展望
SpecTRe-GS代表了基于点的渲染向前迈出的重要一步。通过将专用的光线追踪模块集成到3DGS框架中,它解决了渲染清晰、物理精确反射这一长期存在的问题。
其意义不仅仅在于“更漂亮的图片”。由于该方法分离了几何形状、材质属性和光照,它实现了强大的场景编辑功能。

如图6所示,你可以:
- 重照亮场景: 更改环境贴图,头盔上的反射会自然更新。
- 删除物体: 如果你移除了头盔旁边的盒子,它也会从反射中消失 (这对于“烘焙”纹理来说是不可能的) 。
- 插入物体: 添加一个新的数字物体,它会反射在真实世界的镜子中。
- 编辑材质: 将头盔从光泽黑色变为哑光灰色。
虽然仍有一些局限性——它目前将镜面反射近似为理想镜面,并且二次反弹依赖于粗糙表面——但SpecTRe-GS证明了我们不必在高斯泼溅的速度和光线追踪的真实感之间做选择。我们可以两者兼得。
](https://deep-paper.org/en/paper/file-2233/images/cover.png)