中EN
概念页

测量 BRDF 与数据驱动反射模型

Measured BRDFs & Data-Driven Reflectance

测量 BRDF 用实验室测得的真实材质数据代替解析模型,适合虹彩漆、织物、珠光膜等解析模型拟合不好的材质。难点是四维 BRDF 的维数灾难;PBRT 4e 的 MeasuredBxDF(Dupuy 与 Jakob 2018)把可见法线采样当作参数化,只需较稀疏的测量就能插值。本页对应 PBRT 4e 9.8 节及其延伸阅读。

为什么解析模型不够

  • 波动光学效应造成随方向变化的颜色(虹彩漆、昆虫翅膀、全息纸);微表面理论与 Trowbridge–Reitz 只是模型,不完全符合真实粗糙表面;非标准微结构(两种纱线织成的布料)无法用标准 BRDF 描述。

朴素测量为什么不可行

  • 光滑材料的 BRDF 峰值极尖,方向偏 1° 反射率就可能差几个数量级,需要密集采样。
  • 定位需要电动测角光度计 (goniophotometer / gonioreflectometer);光台 (light stage) 用上百个 LED 加速,但方向分辨率低。
  • 球坐标 1° 间隔的四维网格约 10910^9 个点。自行计算:(91×360)2/(3.156×107 s/年)≈34(91\times360)^2/(3.156\times10^7\,\text{s/年})\approx34 年(每个配置 1 秒),与书中"超过 34 年"相符(若 θ\theta 只取 90 个值则约 33.3 年)。

用采样映射做参数化

设可见法线采样为 R:S2×[0,1]2→S2R:\mathcal S^2\times[0,1]^2\to\mathcal S^2,在 [0,1]2[0,1]^2 的规则网格点 u(k)u^{(k)} 处测量 ωi(k)=R(ωo,u(k))\omega_i^{(k)}=R(\omega_o,u^{(k)})。逆变换采样的逆 CDF 本身就是从单位正方形到目标域的参数化,它把贡献大的区域放大,所以网格点自动集中到镜面峰附近(材质不必真的符合微表面理论,只是不符合时效率下降)。为减小数值跨度,存储的是重要性采样权重: M(k)=fr(ωo,ωi(k))cos⁡θi(k)p(ωi(k))(PBRT 式 9.42)\mathcal M^{(k)}=\frac{f_r(\omega_o,\omega_i^{(k)})\cos\theta_i^{(k)}}{p(\omega_i^{(k)})}\quad(\text{PBRT 式 9.42}) 材质越接近微表面模型,M\mathcal M 越接近常数,可以看作真实材质与微表面近似的"乘性差异"。求值时用逆映射 R−1R^{-1} 找到 uu,插值后乘回 p/cos⁡θip/\cos\theta_i。采样映射与雅可比的关系见 随机变量变换与逆变换采样。

数据驱动的微表面分布

  • 用任意表格化的 DD 代替 Trowbridge–Reitz,于是 Dωo=Dmax⁡(0,ωo⋅ωm)/σ(ωo)D_{\omega_o}=D\max(0,\omega_o\cdot\omega_m)/\sigma(\omega_o),σ(ωo)=∫Dmax⁡(0,ωo⋅ω) dω\sigma(\omega_o)=\int D\max(0,\omega_o\cdot\omega)\,d\omega,pdf 化简为 D(ωm)/(4σ(ωo))D(\omega_m)/(4\sigma(\omega_o)),BRDF 为 M(R−1)D(ωm)/(4σ(ωo)cos⁡θi)\mathcal M(R^{-1})D(\omega_m)/(4\sigma(\omega_o)\cos\theta_i)。
  • 先有鸡还是先有蛋:测量需要 DD,而 DD 通常从测量拟合。解法是 DD 只有二维,受维数灾难影响小:测逆反射 fr(ω,ω)∝D(ω)G1(ω)/cos⁡2θf_r(\omega,\omega)\propto D(\omega)G_1(\omega)/\cos^2\theta(假设 ωi=ωo\omega_i=\omega_o 时遮蔽与阴影完全相关),得到积分方程 D(ω)∝fr(ω,ω)cos⁡θ∫D(ωm)max⁡(0,ω⋅ωm)dωmD(\omega)\propto f_r(\omega,\omega)\cos\theta\int D(\omega_m)\max(0,\omega\cdot\omega_m)d\omega_m,用不动点迭代几次即可收敛(Dupuy 等 2015 的幂迭代思想)。

实现要点(pbrt)

  • 数据只存一份(各向同性材质几 MB,各向异性可超过 100 MB),每个交点的 MeasuredBxDF 只持有指针和当前波长。兼容的 .bsdf 测量文件可从 RGL 材质库(rgl.epfl.ch/materials)获取,覆盖 360–1000 nm,分辨率约 4 nm(原书脚注)。
  • PiecewiseLinear2D<Dim>:二维单位正方形上的分段线性插值,可带额外条件维(光谱数据是 5 维:uu 的 2 维 + ϕo\phi_o、θo\theta_o、波长),提供 Evaluate、Sample(逆变换采样)和精确的 Invert。
  • 各向同性时用 ϕm−ϕo\phi_m-\phi_o 使表格对绕法线旋转不变;theta2u() 在 θ≈0\theta\approx0 附近分配更多分辨率,便于存储高光材质的分布。
  • 采样时再做一次按亮度(与 CIE Y 的乘积积分)的重参数化,使采样权重的亮度接近常数,减少方差。只建模反射,原理可推广到透射。

取舍

方案优点缺点
解析模型(微表面等)参数少、可编辑、可做纹理拟合不了特殊材质
MERL 式测量(Matusik 2003)拍摄球形样本,快速获取大量各向同性数据只有各向同性、RGB
自适应参数化测量(Dupuy–Jakob 2018)光谱、支持各向异性、测量点少每个材质数 MB 到上百 MB,无法空间变化
紧凑表示(Bagher 等 2016、Nielsen 等 2015)每材质 3.2 KiB;10–20 次测量即可近似依赖数据集先验

游戏中的意义:测量数据很少直接用于实时渲染,但常用于离线参考、验证解析模型和美术校准(例如用测量数据检验 GGX 拟合的长尾)。另见 微表面理论、双向反射分布函数、光谱渲染。

  1. PBRT 4e source excerpt: chapter 09 (Reflection Models)
  2. Pharr, Jakob, Humphreys《Physically Based Rendering: From Theory to Implementation》第 4 版(MIT Press, 2023)第 9 章 9.8 节、延伸阅读,pbr-book.org/4ed/Reflection_Models

相关页面

图形学双向反射分布函数BRDFBRDF f(\mathbf{l},\mathbf{v}) 量化局部反射:只依赖入射方向 \mathbf{l} 和出射(观察)方向 \mathbf{v},涵盖表面反射与局部次表面散射。它通过反射方程把入射辐射亮度转换为出射辐射亮度,物理上需满足 Helmholtz 互易性与能量守恒,用方向反照率检验。方向光和精确光源可从小面光源的极限推导,使积分变为对光源的求和。本页对应 RTR4 9.3–9.4 节。图形学微表面理论Microfacet Theory微表面理论把小于像素的微几何建模为大量平坦微面元,用法线分布函数 (NDF) D(\mathbf{m}) 描述其朝向统计,用遮蔽函数 G1 和遮蔽-阴影函数 G2 描述可见性,并据此推导宏观 BRDF。镜面反射时每个微面元是完美菲涅耳镜,积分退化为在半向量处求值,得到 FG2D/(4|\mathbf{n}\cdot\mathbf{l}||\mathbf{n}\cdot\mathbf{v}|)。GGX 分布配合高度相关的 Smith G2 是当今影视和游戏最常用的组合;该框架忽略微面元间的多次反射,可用补偿项弥补。本页对应 RTR4 9.6–9.8 节。游戏数学随机变量变换与逆变换采样Random Variable Transforms & Inversion Sampling蒙特卡洛估计器要求能从指定的概率密度里抽样。最基本的工具是逆变换法 (Inversion Method):对 CDF 求逆,把 [0,1) 上的均匀随机数映射成目标分布;更一般地,随机变量经过一一映射后的密度由导数(多维时是雅可比行列式)决定;多维非独立分布则先采边缘密度、再采条件密度。本页按 PBRT 第 4 版 2.1.1、2.3、2.4 节整理,是 蒙特卡洛积分与重要性采样 的数学部分。图形学光谱渲染Spectral Rendering光谱渲染 (Spectral Rendering) 在光传输中直接处理波长,而不是 RGB 三元组。pbrt 第 4 版在每条相机光线上随机采样少数几个波长(默认 4 个),把光谱积分并入渲染本来就在做的蒙特卡洛积分;最后用颜色匹配函数估计像素的 XYZ/RGB。输入端的 RGB 颜色则通过"sigmoid 二次多项式"转换成平滑光谱。本页按 PBRT 4e 4.5、4.6.4–4.6.6 节整理。图形学可微渲染与神经渲染Differentiable & Neural Rendering逆向渲染 (inverse rendering) 要从图像反推场景参数 \mathbf x(形状、材质、光照……),通常写成优化问题 \mathbf x^=\arg\min{\mathbf x}g(f(\mathbf x)),其中 f 是渲染器,g 是损失函数。参数维度可达数百万,只能用梯度下降,因此需要可微渲染 (differentiable rendering):不构造巨大的雅可比矩阵,直接计算"图像空间梯度 × 雅可比"这一向量-矩阵乘积。难点是可见性造成的不连续、反向模式的内存开销和导数积分的采样。机器学习与渲染的结合可分三类:用学习得到的数据结构替换传统数据结构、用神经网络改进传统渲

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原