GeoSplatting: Towards Geometry Guided Gaussian Splatting for Physically-based Inverse Rendering
核心思想
逆渲染的目标是从多视角图像中分解出物体的几何、材质和光照。基于 3DGS 的方法速度快,但法线估计不准确 → 材质和光照的分解会出错。
GeoSplatting 的核心洞察:用显式网格提供精确的几何引导,让 3DGS 同时拥有快速渲染和精确法线。
具体方案:
- MGadapter:将网格三角面映射为高斯点 → 高斯点自动继承网格的精确法线
- BVH 加速射线追踪:在网格上做二值遮挡判断 → 精确的光传输建模
- GGX BRDF + 分辨率哈希网格:精确的基于物理的材质表示
结果:重光照 PSNR 34.10(比最佳基线高 3.1dB),训练仅 14 分钟(比 NeRF 方法快 18-57×)。
背景知识
什么是逆渲染
正渲染:几何 + 材质 + 光照 → 图像(已知条件生成结果)
逆渲染:图像 → 几何 + 材质 + 光照(从结果推断条件)
| 分解目标 | 说明 |
|---|---|
| 几何(法线) | 物体表面的朝向 |
| 材质(BRDF) | 反照率、粗糙度、金属度 |
| 光照 | 环境光、直接光、间接光 |
分解成功后可以做重光照(换光源)、材质编辑(换颜色/质感)等。
为什么 3DGS 的法线不准确
3DGS 用椭球高斯近似表面,法线通常取椭球最短轴方向。但:
- 椭球不贴合真实表面 → 法线偏差大
- 多个重叠高斯的法线混合 → 模糊不一致
- 缺乏全局几何约束 → 局部法线可能矛盾
什么是 GGX BRDF
Cook-Torrance 微面元 BRDF 模型的一种,广泛用于真实感渲染:
\[f_r = (1 - m) \cdot \frac{a}{\pi} + \frac{D \cdot F \cdot G}{4 |n \cdot \omega_i| |n \cdot \omega_o|}\]| 符号 | 含义 |
|---|---|
| $a$ | 反照率(漫反射颜色) |
| $m$ | 金属度(0=非金属,1=金属) |
| $D$ | 微面元法线分布(GGX) |
| $F$ | 菲涅尔项 |
| $G$ | 几何遮蔽项 |
| $\omega_i, \omega_o$ | 入射/出射光方向 |
现有方法的问题
| 方法类别 | 代表 | 优势 | 劣势 |
|---|---|---|---|
| NeRF 隐式场 | TensoIR, NeRO | 法线准确 | 训练 270-800 分钟 |
| 网格方法 | NVdiffrec | 几何精确 | 三角边缘梯度稀疏 |
| 3DGS 方法 | R3DG, GS-IR | 训练快 | 法线不准确 → 分解差 |
| GeoSplatting | — | 法线准确 + 训练快 | 需要物体掩码 |
方法详解
1. 几何引导的高斯点生成(MGadapter)
核心思想:不让高斯点自由分布,而是绑定在网格表面。
对每个三角面 $P$,MGadapter 生成 $K=6$ 个高斯点:
\[\{(\mu_i, S_i, R_i, n_i) \mid i = 1, \ldots, K\} = T(P)\]- $\mu_i$:位置(重心坐标插值)
- $S_i$:尺度(由三角形形状决定)
- $R_i$:旋转(由三角形朝向决定)
- $n_i$:法线(重心坐标插值三角形顶点法线)
- 不透明度固定为 1(不透明表面)
关键优势:高斯点的法线直接来自网格,不需要额外的法线正则化。
2. 基于物理的高斯渲染
2.1 渲染方程
\[L_o(x, \omega_o) = \int_{\mathcal{H}^2} f_r(x, \omega_i, \omega_o) L_i(x, \omega_i) |n \cdot \omega_i| d\omega_i\]2.2 材质属性查询
使用多分辨率哈希网格存储空间变化的材质属性:
\[a_i = E_d(\mu_i) \quad \text{(漫反射编码器 → 反照率)}\] \[(\rho_i, m_i) = E_s(\mu_i) \quad \text{(镜面编码器 → 粗糙度、金属度)}\]3. 光传输建模
3.1 光照分解
\[L_i(x, \omega_i) = (1 - O(x, \omega_i)) \cdot L_{\text{dir}}(\omega_i) + O(x, \omega_i) \cdot L_{\text{ind}}(x, \omega_i)\]- $L_{\text{dir}}$:直接光照(环境贴图)
- $L_{\text{ind}}$:间接光照(被遮挡区域的环境光近似)
- $O$:遮挡项
3.2 二值遮挡 vs 连续遮挡
现有 3DGS 方法:用 alpha 合成估计连续遮挡 $O_{\text{3dgs}} \in [0, 1]$ → 不精确
GeoSplatting:用网格上的 BVH 射线追踪计算二值遮挡 $O_{\text{mesh}} \in {0, 1}$ → 精确
优势:
- 确定性的二值判断(遮挡/不遮挡)
- BVH 加速确保效率
- 网格表面一致性避免了半透明高斯的模糊性
3.3 Split-Sum 预热
训练早期网格质量不佳,先用无遮挡的 Split-Sum 近似:
\[L_o \approx \text{SplitSum}(f_r, L_{\text{env}})\]收敛后再加入完整的遮挡建模。
4. 外观精修
初始收敛后切换到延迟着色模式:
- 先渲染出法线、材质等 G-buffer
- 再逐像素做完整的 PBR 评估
- 捕获高频细节(镜面高光等)
5. 损失函数
\[\mathcal{L} = \mathcal{L}_{\text{img}} + \lambda_{\text{entropy}} \mathcal{L}_{\text{entropy}} + \lambda_{\text{smooth}} \mathcal{L}_{\text{smooth}} + \lambda_{\text{light}} \mathcal{L}_{\text{light}}\]其中:
\[\mathcal{L}_{\text{img}} = L_1 + \lambda_{\text{ssim}} \mathcal{L}_{\text{SSIM}} + \lambda_{\text{mask}} \mathcal{L}_{\text{mask}}\]| 损失项 | 作用 |
|---|---|
| $L_1 + \text{SSIM}$ | 光度重建 |
| $\mathcal{L}_{\text{mask}}$ | 物体掩码监督 |
| $\mathcal{L}_{\text{entropy}}$ | 形状约束(避免浮动高斯) |
| $\mathcal{L}_{\text{smooth}}$ | 反照率/镜面属性平滑 |
| $\mathcal{L}_{\text{light}}$ | 光照正则化 |
实验结果
逆渲染性能
Synthetic4Relight 数据集
| 方法 | 重光照 PSNR↑ | 反照率 PSNR↑ | NVS PSNR↑ | 训练时间 |
|---|---|---|---|---|
| NVdiffrec | 27.70 | 25.54 | 27.36 | ~40 min |
| TensoIR | 28.58 | 27.45 | 30.47 | ~270 min |
| NeRO | 21.32 | — | 24.96 | ~800 min |
| R3DG | 31.00 | 28.31 | 28.83 | ~110 min |
| GS-IR | 28.80 | 26.21 | 28.77 | — |
| GeoSplatting | 34.10 | 29.90 | 31.14 | 14 min |
GeoSplatting 重光照 PSNR 超最佳基线 3.1 dB,训练快 87%。
TensoIR Synthetic 数据集
| 方法 | 重光照 PSNR↑ | 反照率 PSNR↑ |
|---|---|---|
| TensoIR | 28.55 | 29.18 |
| R3DG | 28.55 | 29.18 |
| GeoSplatting | 29.95 | 29.41 |
Shiny Blender 数据集
| 方法 | 重光照 PSNR↑ |
|---|---|
| R3DG | 28.74 |
| GeoSplatting | 29.41 |
法线质量
| 方法 | TensoIR MAE↓ | Shiny MAE↓ | 训练时间 |
|---|---|---|---|
| TensoIR | 4.10° | 4.42° | ~270 min |
| NeRO | 5.14° | 2.48° | ~800 min |
| R3DG | 5.45° | 7.04° | ~110 min |
| GeoSplatting | 4.08° | 2.15° | 14 min |
法线精度最优,训练时间最短。
消融实验
| 去掉的组件 | NVS PSNR 下降 | 重光照 PSNR 下降 | 法线 MAE 增加 |
|---|---|---|---|
| 形状对齐(MGadapter) | -0.50 dB | -3.56 dB | +4.21° |
| 外观精修 | -1.38 dB | -1.99 dB | -0.34° |
| 遮挡建模 | -0.58 dB | -2.59 dB | +2.09° |
| 间接光照 | -0.44 dB | -1.02 dB | +0.89° |
形状对齐是最关键的组件(去掉后重光照下降 3.56 dB)→ 精确法线是逆渲染的基础。
个人思考
- “网格提供法线,高斯提供渲染” 的混合策略兼顾了两者的优势:网格擅长精确几何表示,3DGS 擅长高效可微渲染——MGadapter 是优雅的桥梁。
- 二值遮挡 vs 连续遮挡的选择很有洞察力:真实世界中一个点要么被遮挡、要么不被遮挡,$O \in {0, 1}$ 比 $O \in [0, 1]$ 更符合物理。
- 14 分钟训练时间使逆渲染从”研究工具”变为”实用工具”——比 NeRO(800 分钟)快 57 倍,可以实际部署在内容创作管道中。
- 消融实验清晰地说明了贡献层次:形状对齐 > 遮挡建模 > 外观精修 > 间接光照,每个组件的贡献都被量化。
- 局限性坦诚:需要物体掩码、对薄结构支持不好、受限于网格分辨率——这些限制了场景级应用,未来需要自适应细化。