
文章目录
- 一、摘要
- [二、延迟着色 deferred color](#二、延迟着色 deferred color)
- [三、Occupancy-Opacity 分解](#三、Occupancy-Opacity 分解)
- [四、反射-透视 建模](#四、反射-透视 建模)
-
- [1.次表面传输组件(Subsurface-Transport Component)](#1.次表面传输组件(Subsurface-Transport Component))
- 2.最终像素颜色合成
- 五、反射敏感的梯度门控
- 六、优化 (Optimization)
- 实验
标题:《RT-Splatting: Joint Reflection-Transmission Modeling with Gaussian Splatting》
链接:https://sjj118.github.io/RT-Splatting
来源:北京大学智能科学与技术学院;通用人工智能国家重点实验室
一、摘要
3DGS 能够实现实时生成具有高视觉质量的新颖视图。然而现有方法在处理兼具复杂反射与清晰透射特性的半透明镜面时存在局限,常导致反射图像模糊或透射区域过度遮挡。
为解决问题,提出RT-Splatting,将每个高斯曲面的几何占据度与其光学不透明度分离。这种分解方法通过单一组高斯基元实现了统一的表面-体积场景表征。我们的混合渲染器既能将该表征作为捕捉高频反射的曲面模型,也能将其作为保持清晰透射的体积模型进行处理。为缓解反射与透射联合优化过程中的歧义性,我们引入了镜面感知梯度门控机制,有效抑制高镜面区域向透射分支传递的误导性梯度,显著减少干扰性漂浮元素。在复杂半透明场景实验中,RT-Splatting展现出业界领先的性能,能够在实时渲染中实现高保真反射效果与清晰透射效果。此外,我们的分解方法天然支持灵活的场景编辑操作。
二、延迟着色 deferred color
延迟着色是一种两阶段渲染技术,它将几何处理与光照及材质计算分离 。在第一阶段(称为几何处理阶段 ),最近邻表面的各种属性(如深度、法线、反照率和粗糙度)会被渲染到一组中间二维缓冲区中,统称为G buffer 。在第二阶段,针对每个像素执行着色程序,并利用G缓冲区中的信息计算最终颜色。近期研究4,6,7,22,34,40--45,50,51已成功将该流程应用于高斯贴片技术,从而高效渲染高频且视点依赖性强的视觉效果。通过采用逐像素而非逐高斯函数的方式进行复杂的着色计算,延迟着色显著提升了渲染效率。
我们的方法旨在重建具有薄半透明表面的场景,这类表面同时具备清晰的反射效果和透明透射特性。我们将每个GS对应的不透明度分解为几何占据率与光学不透明度,从而构建出统一的表面-体积表征模型,支持用于渲染反射与透射效果的混合处理流程。为抑制由残余反射误差引起的浮点值异常现象,我们引入了基于镜面特性的梯度门控机制,并加入最终优化细节,整体架构如图2。

三、Occupancy-Opacity 分解
传统的高斯散射渲染流程在进行 α α α 混合时仅使用单一不透明度参数,主要用于模拟光学遮挡效果。这无法同时满足半透明表面(如窗户或塑料薄膜)既具有几何上的立体结构(这是呈现清晰反射所需),又具备光学透明特性(允许光线穿透)的两种相互矛盾的要求,最终导致反射图像要么模糊不清,要么呈现不透明外观。
本文将标准的高斯不透明度,分解为两个具有物理意义且可学习的属性 :
- 几何占据率 σ σ σ ∈0,1用于编码射线与高斯体物质发生相互作用的概率;
- **光学不透明度 α α α ∈0,1** 则规定了此类相互作用发生后射线被吸收或散射的条件概率。
两者的乘积 α e f f = σ α α_{eff} = σα αeff=σα 定义了体渲染的有效不透明度,即光学衰减仅发生在高斯体几何存在区域。给定沿射线方向按深度排序的一系列3DGS函数时, 任意表面属性 a a a(如法线或粗糙度)的期望值可计算为:

p i p_i pi 是光线穿过前面的高斯点后,恰好在第 i i i 个高斯点处"第一次撞击到物体表面"的概率。 几何占用率 σ i \sigma_i σi:透明玻璃的 σ i \sigma_i σi 接近 1 1 1; σ i G i \sigma_i \mathcal{G}_i σiGi: 光线在第 i i i 个高斯点处发生碰撞的概率。
四、反射-透视 建模
渲染分为两个通道:
-
延迟渲染通道(Deferred Pass):处理高频镜面反射 。利用公式(2),将光线碰撞到的"第一表面"属性(法线 n \mathbf{n} n、粗糙度 ρ \rho ρ、材质特征 z \mathbf{z} z)渲染并存储到 G-buffers(几何缓冲区)中;然后将表面属性、视角方向输入镜面着色网络 f spec f_{\text{spec}} fspec ,计算高频镜面反射颜色 C spec \mathbf{C}_{\text{spec}} Cspec。
-
并发前向通道(Concurrent Forward Pass):处理透射与背景 。使用体渲染累加背景的辐射度 C trans \mathbf{C}{\text{trans}} Ctrans,累加使用有效不透明度 α eff = σ α \alpha{\text{eff}} = \sigma \alpha αeff=σα,确保背景光能正确穿过透明物体而不被错误阻挡。
1.次表面传输组件(Subsurface-Transport Component)
为了对彩色玻璃等材质的内部散射和吸收进行建模,每个GS增加两个属性: 固有散射颜色 C scatter \mathbf{C}{\text{scatter}} Cscatter 和 透射率 τ ∈ 0 , 1 \tau \in 0, 1 τ∈0,1。结合 C trans \mathbf{C}{\text{trans}} Ctrans(物体后方的背景光)计算穿过或离开透明物体内部的总光量 C sub \mathbf{C}{\text{sub}} Csub: C sub = τ C trans + ( 1 − τ ) C scatter ( 3 ) \mathbf{C}{\text{sub}} = \tau \mathbf{C}{\text{trans}} + (1 - \tau)\mathbf{C}{\text{scatter}}(3) Csub=τCtrans+(1−τ)Cscatter(3)
2.最终像素颜色合成
得到镜面反射 C spec \mathbf{C}{\text{spec}} Cspec 和内部/背景传输光 C sub \mathbf{C}{\text{sub}} Csub 后,混合得到最终的像素颜色 C \mathbf{C} C。 C = C spec + β C sub ( 4 ) \mathbf{C} = \mathbf{C}{\text{spec}} + \beta \mathbf{C}{\text{sub}}(4) C=Cspec+βCsub(4) 当表面发生极强的镜面反射(高亮)时,人眼其实很难看清透明物体后面的背景细节(背景被强光"掩盖"或抑制了)。
C spec \mathbf{C}{\text{spec}} Cspec:**延迟通道计算出的高频镜面反射色。 β ∈ 0 , 1 \beta \in 0, 1 β∈0,1(衰减因子):这是由镜面着色网络同时预测出来的一个权重,动态调节/抑制背景光。动态机制:在有强烈的镜面高光(Specular Highlights)的地方,网络会输出一个很低的 β \beta β 值。这样通过 β C sub \beta \mathbf{C}{\text{sub}} βCsub,背景透射过来的细节就会被压制甚至完全遮蔽,从而符合真实的物理视觉感知**。
五、反射敏感的梯度门控
上一节,渲染管线在前向传播(Forward Pass)时清晰地将高频反射( C spec \mathbf{C}{\text{spec}} Cspec)和背景透射( C trans \mathbf{C}{\text{trans}} Ctrans)分开了,但在 反向传播(Backward Pass)时,复杂的高频镜面反射与GT图像不可避免地存在残差,导致 错误的梯度路由 (反射没拟合好时,图像损失产生的梯度在回传时,会错误地流向负责渲染背景的透射分支,最终透射分支为了强行去"弥补"反射误差,就会在半透明表面的后方形成漂浮物伪影)。
作者的关键洞察是:这种错误的梯度补偿,主要发生在高频镜面反射细节丰富(即反射非常复杂)的图像区域 。因此,可以通过计算反射图像的局部方差,来评估其复杂程度。 每个像素 x x x,在其邻域窗口 N ( x ) \mathcal{N}(x) N(x) 内计算门控权重 g ( x ) g(x) g(x):
g ( x ) = exp ( − k ⋅ Var p ∈ N ( x ) C spec ( p ) ) ( 5 ) g(x) = \exp \left( -k \cdot \operatorname{Var}{p \in \mathcal{N}(x)}\\mathbf{C}_{\\text{spec}}(p) \right)(5) g(x)=exp(−k⋅Varp∈N(x)Cspec(p))(5) C spec ( p ) \mathbf{C}{\text{spec}}(p) Cspec(p):延迟通道渲染出的镜面反射颜色; Var p ∈ N ( x ) ⋅ \operatorname{Var}_{p \in \mathcal{N}(x)}\\cdot Varp∈N(x)⋅:局部方差算子,衡量像素 x x x 周围区域内反射颜色的剧烈变化程度(即高频纹理的丰富度); k k k:控制Gate对高频成分的敏感程度的超参数。
梯度截断与缩放 :反向传播时,利用计算出来的 g ( x ) g(x) g(x) 直接去乘以流向背景透射辐射度 C trans \mathbf{C}_{\text{trans}} Ctrans 的梯度:
∂ L img ∂ C trans ( x ) ← g ( x ) ⋅ ∂ L img ∂ C trans ( x ) \frac{\partial \mathcal{L}{\text{img}}}{\partial \mathbf{C}{\text{trans}}(x)} \leftarrow g(x) \cdot \frac{\partial \mathcal{L}{\text{img}}}{\partial \mathbf{C}{\text{trans}}(x)} ∂Ctrans(x)∂Limg←g(x)⋅∂Ctrans(x)∂Limg在高亮/复杂反射区域( g ( x ) → 0 g(x) \to 0 g(x)→0): 背景分支接收到的梯度几乎被归零
六、优化 (Optimization)
透明度解耦带来的"幽灵几何 " (Ghost Geometries): 如果一个高斯点的 σ \sigma σ 很高(几何上存在),但 α \alpha α 接近 0(完全透明),那么它无论摆在场景的任何地方,都不会影响最终渲染出来的颜色。导致缺乏强镜面反射线索的漫反射区域,优化器会由于失去约束,在空中胡乱堆积这种"有几何、无颜色"的非约束幽灵高斯点(Ghost Geometries)。这会彻底破坏几何表征,导致优化过程崩溃。
透明掩码正则化 (Transparent Mask Regularization):论文引入SAM2 ,提取场景透明物体的二值化语义掩码(Transparent Mask, 透明区域为 1);同时在延迟通道中,将第一表面的预期光学不透明度 α \alpha α 聚合到 G-buffer 中,形成一张不透明度图: L mask = BCE ( 1 − M , α ) ( 7 ) \mathcal{L}_{\text{mask}} = \text{BCE}(1 - \mathbf{M}, \alpha)(7) Lmask=BCE(1−M,α)(7) 二分类交叉熵损失:强迫在 SAM2 标记为透明的区域( 1 − M = 0 1-\mathbf{M} = 0 1−M=0),高斯点的光学不透明度 α \alpha α 必须向 0 靠拢。
不同于以往的方法(直接用掩码把场景切开、分开单独处理),该方法将 L mask \mathcal{L}_{\text{mask}} Lmask 仅仅作为一种正则化惩罚项。所有组件(高斯基元位置、解耦的不透明度、着色网络)都是同时、联合(Jointly)优化。这使得它能完美处理背景只能透过透明表面看到的复杂场景。
实验
基于 PyTorch 实现,构建在 2DGS (2D Gaussian Splatting) 框架之上;
数据集:公开基准 :从 Ref-Real 数据集选取 Sedan、Toycar;从 NeRF-Casting 选取 Compact、Hatchback;以及 Audi (EnVGS) 和 Truck (T&T)。自制数据集:用智能手机采集了两个真实场景 Van(面包车)和 Swab,每个场景包含 220 ~ 240 张视角图像。指标:对比标准的 PSNR、SSIM、LPIPS。评测时不仅看整张图像,还会单独对透明区域进行针对性量化评估。

图3. 对真实场景测试集视图的定性比较。我们的方法显著提升了渲染质量,相较于先前方法,在半透明区域同时实现了更清晰的反射效果和更明确的透射效果

图4. 场景编辑。左:汽车车窗的编辑效果;右:塑料薄膜的编辑效果

图5. 不同消融参数下的传输分量分解示意图。
#pic_center =80%x80%