材质与外观建模是计算机图形学中连接物理世界与虚拟渲染的关键桥梁。本章将深入探讨如何用数学模型描述真实世界中光与物质的相互作用,从基础的BRDF理论到复杂的外观现象。对于AI科学家而言,理解这些模型不仅有助于传统渲染,更是神经渲染、可微渲染等新兴领域的理论基础。
本章学习目标:
双向反射分布函数(Bidirectional Reflectance Distribution Function, BRDF)描述了光线如何从物体表面反射。回顾辐射度量学基础:
辐射通量(Radiant Flux):$\Phi$,单位时间内的辐射能量,单位:瓦特(W)
辐照度(Irradiance):$E = \frac{d\Phi}{dA}$,单位面积接收的辐射通量,单位:$\text{W/m}^2$
辐射度(Radiance):$L = \frac{d^2\Phi}{dA \cos\theta d\omega}$,单位面积、单位立体角的辐射通量,单位:$\text{W/(m}^2\cdot\text{sr)}$
辐射强度(Radiant Intensity):$I = \frac{d\Phi}{d\omega}$,单位立体角的辐射通量,单位:$\text{W/sr}$
关键洞察:辐射度$L$是唯一在真空中沿直线传播保持不变的量,这使其成为光线追踪的理想物理量。
BRDF的正式定义:
\[f_r(\omega_i, \omega_o) = \frac{dL_o(\omega_o)}{dE_i(\omega_i)} = \frac{dL_o(\omega_o)}{L_i(\omega_i)\cos\theta_i d\omega_i}\]其中:
等价定义:从散射截面角度 \(f_r(\omega_i, \omega_o) = \frac{1}{\cos\theta_i} \frac{d\sigma_s(\omega_i \to \omega_o)}{d\omega_o}\)
其中$d\sigma_s$是微分散射截面。
物理直觉:BRDF描述了一个微分光束如何被表面”重新分配”到各个出射方向。它本质上是一个概率密度函数的光学类比,但带有$\cos\theta_i$项的几何因子。
| 与概率的类比:如果定义散射概率密度$p(\omega_o | \omega_i)$,则: |
| $$f_r(\omega_i, \omega_o) = \rho(\omega_i) \frac{p(\omega_o | \omega_i)}{\cos\theta_o}$$ |
其中$\rho(\omega_i)$是方向反照率。
单位分析:BRDF的单位是$\text{sr}^{-1}$(球面度的倒数),这可以从定义式推导: \([f_r] = \frac{[\text{W/(m}^2\cdot\text{sr)}]}{[\text{W/(m}^2\cdot\text{sr)}] \cdot 1 \cdot [\text{sr}]} = [\text{sr}^{-1}]\)
反射方程:给定入射光场,出射辐射度通过反射方程计算: \(L_o(\omega_o) = \int_{\Omega} f_r(\omega_i, \omega_o) L_i(\omega_i) \cos\theta_i d\omega_i\)
这是渲染方程的核心组成部分,也是所有基于物理的渲染算法的基础。
局部坐标系定义:
BRDF的可视化:
测量vs解析模型:
BRDF必须满足以下物理约束:
1. 非负性(Non-negativity): \(f_r(\omega_i, \omega_o) \geq 0\)
物理意义:能量不能为负,表面不能”吸收”后发出负光。
数学后果:BRDF定义了半球上的一个正测度,可以用测度论工具分析。
2. 互易性(Helmholtz Reciprocity): \(f_r(\omega_i, \omega_o) = f_r(\omega_o, \omega_i)\)
这一性质源于光路可逆原理,在实际渲染中可用于优化计算。互易性的深层含义来自于时间反演对称性和洛伦兹互易定理。
证明思路:
实际应用:在双向路径追踪中,互易性允许我们交换光线方向而不改变贡献,这对于连接光路至关重要。
破坏互易性的情况:
3. 能量守恒(Energy Conservation): \(\int_{\Omega} f_r(\omega_i, \omega_o) \cos\theta_o d\omega_o \leq 1\)
对于任意入射方向,反射的总能量不能超过入射能量。
严格形式(考虑透射): \(\int_{\Omega^+} f_r(\omega_i, \omega_o) \cos\theta_o d\omega_o + \int_{\Omega^-} f_t(\omega_i, \omega_o) \cos\theta_o d\omega_o + \alpha(\omega_i) = 1\)
其中$\alpha(\omega_i)$是吸收率,$\Omega^+$和$\Omega^-$分别是上下半球。
方向反照率(Directional Albedo): \(\rho(\omega_i) = \int_{\Omega} f_r(\omega_i, \omega_o) \cos\theta_o d\omega_o\)
这表示从方向$\omega_i$入射的光被反射的总比例。
半球反照率(Hemispherical Albedo): \(\rho_{hh} = \frac{1}{\pi} \int_{\Omega_i} \int_{\Omega_o} f_r(\omega_i, \omega_o) \cos\theta_i \cos\theta_o d\omega_i d\omega_o\)
白炉测试(White Furnace Test): 在均匀照明环境中,表面反射的总能量应等于入射能量乘以反照率: \(L_o = \rho_{hh} \cdot L_{\text{env}}\)
4. 线性性(Linearity): BRDF对入射光强度是线性的,这使得我们可以将复杂光照分解为简单光源的叠加。数学表述: \(L_o = \int f_r L_i \cos\theta_i d\omega_i = \int f_r (L_{i1} + L_{i2}) \cos\theta_i d\omega_i = L_{o1} + L_{o2}\)
叠加原理的应用:
5. 平滑性与连续性: 物理BRDF通常是连续的(除了镜面反射的狄拉克δ函数),这保证了渲染结果的视觉连续性。
数学刻画:
| Lipschitz连续性:$ | f_r(\omega_1) - f_r(\omega_2) | \leq L | \omega_1 - \omega_2 | $ |
6. 对称性(Symmetry): 各向同性材质的BRDF具有旋转对称性: \(f_r(R\omega_i, R\omega_o) = f_r(\omega_i, \omega_o)\)
对于任意绕法线的旋转$R$。
简化形式:各向同性BRDF可表示为三个角度的函数: \(f_r(\omega_i, \omega_o) = f_r(\theta_i, \theta_o, \phi_o - \phi_i)\)
进一步简化:许多模型只依赖于:
7. 正定性(Positive Definiteness): BRDF定义的积分算子是正定的: \(\int_{\Omega_i} \int_{\Omega_o} g(\omega_i) f_r(\omega_i, \omega_o) g(\omega_o) \cos\theta_i \cos\theta_o d\omega_i d\omega_o \geq 0\)
对于任意函数$g$。
8. 渐近行为(Asymptotic Behavior): 掠射角处的行为对外观至关重要:
双向散射分布函数(Bidirectional Scattering Distribution Function, BSDF)是BRDF的推广,包含了反射和透射:
\[f_s(\omega_i, \omega_o) = f_r(\omega_i, \omega_o) + f_t(\omega_i, \omega_o)\]其中$f_t$是双向透射分布函数(BTDF)。
坐标系约定:
广义散射方程: \(L_o(\mathbf{x}, \omega_o) = \int_{\Omega^+} f_r(\omega_i, \omega_o) L_i(\omega_i) |\cos\theta_i| d\omega_i + \int_{\Omega^-} f_t(\omega_i, \omega_o) L_i(\omega_i) |\cos\theta_i| d\omega_i\)
其中$\Omega^+$和$\Omega^-$分别表示上半球和下半球。
对于透射,需要考虑折射定律(Snell’s Law): \(\eta_i \sin\theta_i = \eta_t \sin\theta_t\)
其中$\eta_i$和$\eta_t$分别是入射和透射介质的折射率。
矢量形式的折射定律: \(\eta_i (\omega_i - (\omega_i \cdot \mathbf{n})\mathbf{n}) = \eta_t (\omega_t - (\omega_t \cdot \mathbf{n})\mathbf{n})\)
这表明切向分量按折射率比例缩放。
折射方向计算: 给定入射方向$\omega_i$和表面法线$\mathbf{n}$,折射方向$\omega_t$为: \(\omega_t = \frac{\eta_i}{\eta_t}\omega_i + \left(\frac{\eta_i}{\eta_t}\cos\theta_i - \sqrt{1 - \left(\frac{\eta_i}{\eta_t}\right)^2(1 - \cos^2\theta_i)}\right)\mathbf{n}\)
数值稳定性:判别式$D = 1 - (\eta_i/\eta_t)^2(1 - \cos^2\theta_i)$
临界角与全内反射: 当光从光密介质射向光疏介质时($\eta_i > \eta_t$),存在临界角: \(\theta_c = \arcsin\left(\frac{\eta_t}{\eta_i}\right)\)
当$\theta_i > \theta_c$时,发生全内反射,此时BTDF为0,所有能量都被反射。
全内反射的应用:
BTDF的特殊性质:
广义互易性:由于折射率不同,BTDF不满足简单的互易性,而是: \(\eta_i^2 f_t(\omega_i, \omega_o) = \eta_t^2 f_t(\omega_o, \omega_i)\)
推导:从辐射度传输的可逆性和立体角变换得出。
雅可比行列式:从立体角到立体角的变换需要考虑折射导致的立体角压缩/扩展: \(\frac{d\omega_t}{d\omega_i} = \frac{\eta_t^2}{\eta_i^2} \frac{\cos\theta_t}{\cos\theta_i}\)
几何解释:光束截面积的变化和传播方向的改变。
辐射度不变性破坏:不同于反射,折射时辐射度会改变: \(L_t = \frac{\eta_t^2}{\eta_i^2} L_i\)
这是因为光速在不同介质中不同。
理想折射BTDF: 对于理想光滑表面: \(f_t(\omega_i, \omega_o) = \frac{(1 - F(\omega_i))}{\eta_t^2} \frac{|\mathbf{n} \cdot \omega_t|}{|\mathbf{n} \cdot \omega_i|} \delta(\omega_o - \omega_t)\)
其中$F(\omega_i)$是菲涅尔反射率,$(1-F)$是透射率。
粗糙折射表面: 对于粗糙透明表面(如磨砂玻璃),可以使用微表面理论: \(f_t(\omega_i, \omega_o) = \frac{|\mathbf{n} \cdot \omega_i| |\mathbf{n} \cdot \omega_o|}{|\omega_i \cdot \mathbf{h}| |\omega_o \cdot \mathbf{h}|} \frac{\eta_o^2}{\eta_i^2} \frac{(1-F(\omega_i, \mathbf{h})) D(\mathbf{h}) G(\omega_i, \omega_o)}{|\mathbf{n} \cdot \omega_i| |\mathbf{n} \cdot \omega_o|}\)
其中半程向量$\mathbf{h}$需要考虑折射: \(\mathbf{h} = -\frac{\eta_i \omega_i + \eta_o \omega_o}{|\eta_i \omega_i + \eta_o \omega_o|}\)
体积散射与BSSDF: 当散射发生在材质内部时,需要引入双向散射表面分布函数(BSSDF): \(S(\mathbf{x}_i, \omega_i, \mathbf{x}_o, \omega_o)\)
描述从位置$\mathbf{x}_i$入射的光如何在位置$\mathbf{x}_o$出射。
薄层近似: 对于薄层半透明材质,可以将BSSDF简化为修正的BSDF: \(f_s^{\text{thin}}(\omega_i, \omega_o) = f_s^{\text{surface}}(\omega_i, \omega_o) + T(\omega_i) \cdot f_s^{\text{volume}} \cdot T(\omega_o)\)
其中$T$是透射函数,$f_s^{\text{volume}}$描述体积内的散射。
球谐函数(Spherical Harmonics, SH)提供了在球面上表示函数的正交基:
\[Y_l^m(\theta, \phi) = \sqrt{\frac{2l+1}{4\pi}\frac{(l-|m|)!}{(l+|m|)!}} P_l^{|m|}(\cos\theta) e^{im\phi}\]其中$P_l^m$是关联勒让德多项式。
实数球谐函数: 在图形学中通常使用实数形式: \(Y_{lm} = \begin{cases} \sqrt{2} \cdot \text{Re}(Y_l^{|m|}) & m > 0 \\ Y_l^0 & m = 0 \\ \sqrt{2} \cdot \text{Im}(Y_l^{|m|}) & m < 0 \end{cases}\)
前几阶球谐函数(实数形式):
正交性: \(\int_{\mathcal{S}^2} Y_{lm}(\omega) Y_{l'm'}(\omega) d\omega = \delta_{ll'}\delta_{mm'}\)
BRDF的球谐展开: 由于BRDF是四维函数,需要更复杂的表示。
方法一:切片投影 固定入射方向$\omega_i$,将BRDF投影到球谐基: \(f_r(\omega_i, \omega_o) = \sum_{l=0}^{\infty} \sum_{m=-l}^{l} a_{lm}(\omega_i) Y_{lm}(\omega_o)\)
其中系数: \(a_{lm}(\omega_i) = \int_{\mathcal{S}^2} f_r(\omega_i, \omega_o) Y_{lm}(\omega_o) d\omega_o\)
方法二:双球谐展开 使用球面上的张量积: \(f_r(\omega_i, \omega_o) = \sum_{l_1,m_1} \sum_{l_2,m_2} c_{l_1m_1,l_2m_2} Y_{l_1m_1}(\omega_i) Y_{l_2m_2}(\omega_o)\)
存储需求:$(l_{max}+1)^4$个系数。
方法三:旋转不变分解 对于各向同性BRDF,利用Clebsch-Gordan系数: \(f_r(\omega_i, \omega_o) = \sum_{l=0}^{\infty} a_l \sum_{m=-l}^{l} Y_{lm}(\omega_i) Y_{lm}^*(\omega_o)\)
这利用了加法定理: \(P_l(\omega_i \cdot \omega_o) = \frac{4\pi}{2l+1} \sum_{m=-l}^{l} Y_{lm}(\omega_i) Y_{lm}^*(\omega_o)\)
Zonal Harmonics表示: 当BRDF只依赖于相对角度时: \(f_r(\cos\theta) = \sum_{l=0}^{\infty} \hat{f}_l P_l(\cos\theta)\)
其中$\theta$是$\omega_i$和$\omega_o$之间的夹角,系数: \(\hat{f}_l = \frac{2l+1}{2} \int_{-1}^{1} f_r(x) P_l(x) dx\)
频率分析:
截断误差分析: 截断到$l_{max}$阶的均方误差: \(\epsilon^2 = \sum_{l=l_{max}+1}^{\infty} \sum_{m=-l}^{l} |a_{lm}|^2\)
对于带限函数,误差随$l_{max}$指数衰减。
旋转操作: 球谐函数在旋转下的变换: \(Y_{lm}(R\omega) = \sum_{m'=-l}^{l} D_{mm'}^l(R) Y_{lm'}(\omega)\)
其中$D^l$是Wigner D-矩阵。
卷积定理: 球面卷积在球谐域变为乘法: \((f * g)_{lm} = \sqrt{\frac{4\pi}{2l+1}} f_{l0} g_{lm}\)
这使得环境光照的计算大大简化。
实际应用中的技巧:
与其他基函数的比较:
PRT中的应用: 传输算子$T$将入射光照$L_{in}$映射到出射辐射度: \(L_{out} = T \cdot L_{in}\)
在球谐基下,$T$是一个矩阵,可预计算并实时应用。
测量设备:测角光度计(Gonioreflectometer)通过机械臂控制光源和检测器位置,系统地测量不同角度组合下的反射率。
测量原理:
典型测量装置:
测量挑战:
采样策略:
数据处理流程:
原始测量 → 噪声过滤 → 坐标变换 → 插值/外推 → 验证
坐标参数化:
数据表示:
数据库与标准:
拟合方法:
1. 非线性最小二乘: \(\min_{\theta} \sum_{i} w_i \left(\log f_r^{\text{measured}}(\omega_{i}) - \log f_r^{\text{model}}(\omega_{i}; \theta)\right)^2\)
使用对数空间减少动态范围影响。
优化算法:
2. 最大似然估计: 假设测量噪声模型(如高斯噪声): \(p(y_i | \mu_i) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(y_i - \mu_i)^2}{2\sigma^2}\right)\)
对数似然: \(\log \mathcal{L} = -\frac{1}{2\sigma^2} \sum_i (y_i - f_r(\omega_i; \theta))^2 + \text{const}\)
3. 贝叶斯推断: 引入参数先验$p(\theta)$:
后验采样方法:
4. 机器学习方法:
拟合质量评估:
数值误差度量:
| 相对误差:$\frac{ | f_r^{\text{measured}} - f_r^{\text{model}} | }{f_r^{\text{measured}} + \epsilon}$ |
| 对数误差:$ | \log f_r^{\text{measured}} - \log f_r^{\text{model}} | $ |
感知误差度量:
验证方法:
实时重建技术:
未来方向:
微表面理论将粗糙表面建模为大量微小镜面的统计分布。核心思想:宏观BRDF是微观几何的统计平均。
基本假设:
微表面BRDF推导: 从微观到宏观的统计过程:
Cook-Torrance模型: \(f_r(\omega_i, \omega_o) = \frac{D(\omega_h) G(\omega_i, \omega_o) F(\omega_i, \omega_h)}{4 \cos\theta_i \cos\theta_o}\)
其中:
| $\omega_h$:半程向量(Half Vector),$\omega_h = \frac{\omega_i + \omega_o}{ | \omega_i + \omega_o | }$ |
分母的物理意义: $4 \cos\theta_i \cos\theta_o$项来自于:
微表面模型的优势:
法线分布函数$D(\omega_h)$描述了微表面法线的统计分布,必须满足归一化条件: \(\int_{\Omega} D(\omega_h) \cos\theta_h d\omega_h = 1\)
这确保了微表面的投影面积等于宏观表面面积。
物理意义:
Beckmann分布: \(D_{\text{Beckmann}}(\omega_h) = \frac{1}{\pi \alpha^2 \cos^4\theta_h} \exp\left(-\frac{\tan^2\theta_h}{\alpha^2}\right)\)
其中$\alpha$是粗糙度参数。
特性:
GGX/Trowbridge-Reitz分布: \(D_{\text{GGX}}(\omega_h) = \frac{\alpha^2}{\pi ((\alpha^2 - 1)\cos^2\theta_h + 1)^2}\)
GGX分布具有更长的尾部,能更好地模拟真实材质的高光。
GGX vs Beckmann:
各向异性扩展: 对于各向异性材质,使用两个粗糙度参数$\alpha_x$和$\alpha_y$: \(D_{\text{aniso}}(\omega_h) = \frac{1}{\pi \alpha_x \alpha_y} \frac{1}{(\frac{h_x^2}{\alpha_x^2} + \frac{h_y^2}{\alpha_y^2} + h_z^2)^2}\)
其中$(h_x, h_y, h_z)$是半程向量在切空间的坐标。
其他分布:
粗糙度参数映射: 实践中常用感知线性的粗糙度: \(\alpha = \text{roughness}^2\)
这使得参数调节更直观。
几何函数描述了微表面间的相互遮蔽和阴影效应。
物理意义:
Smith模型: \(G(\omega_i, \omega_o) = G_1(\omega_i) G_1(\omega_o)\)
其中$G_1$是单向遮蔽函数。
假设:
GGX的Smith-G1: \(G_1(\omega) = \frac{2\cos\theta}{1 + \sqrt{1 + \alpha^2 \tan^2\theta}}\)
推导思路:
高度相关遮蔽(Height-Correlated Masking-Shadowing): 考虑入射和出射方向的相关性: \(G(\omega_i, \omega_o) = \frac{1}{1 + \Lambda(\omega_i) + \Lambda(\omega_o)}\)
其中$\Lambda$是辅助函数: \(\Lambda(\omega) = \frac{-1 + \sqrt{1 + \alpha^2 \tan^2\theta}}{2}\)
相关性的重要性:
其他G函数:
实用近似: Schlick-GGX近似(用于实时渲染): \(G_{\text{Schlick}}(\omega) = \frac{\cos\theta}{\cos\theta(1-k) + k}\)
其中$k = \frac{(\text{roughness}+1)^2}{8}$(直接光照)或$k = \frac{\text{roughness}^2}{2}$(IBL)。
菲涅尔方程描述了反射率随入射角的变化。
Schlick近似: \(F_{\text{Schlick}}(\omega_i, \omega_h) = F_0 + (1 - F_0)(1 - \cos\theta_i)^5\)
其中$F_0$是垂直入射时的反射率: \(F_0 = \left(\frac{\eta_1 - \eta_2}{\eta_1 + \eta_2}\right)^2\)
复数折射率: 对于导体,折射率是复数$\tilde{\eta} = \eta + i\kappa$,其中$\kappa$是消光系数。
完整的菲涅尔方程(非极化光): \(F = \frac{1}{2}(F_s + F_p)\)
其中$F_s$和$F_p$分别是s偏振和p偏振的反射率。
色散效应: 折射率随波长变化,可用Cauchy方程或Sellmeier方程建模: \(\eta(\lambda) = A + \frac{B}{\lambda^2} + \frac{C}{\lambda^4}\)
现实材质常由多层组成,如汽车漆(底漆+金属漆+清漆)。
层间多次反射: 设上层BSDF为$f_1$,透射率为$T_1$,下层BSDF为$f_2$,则组合BSDF: \(f_{\text{combined}} = f_1 + \frac{T_1^{\downarrow} f_2 T_1^{\uparrow}}{1 - f_2 * R_1}\)
其中$*$表示卷积,$R_1$是上层的反射算子。
能量补偿: 微表面模型可能丢失多次散射能量,需要补偿项: \(f_r^{\text{ms}} = \frac{(1-E(\omega_i))(1-E(\omega_o))}{\pi(1-E_{\text{avg}})} F_{\text{avg}}\)
其中$E(\omega)$是方向反照率,$E_{\text{avg}}$是平均反照率。
各向异性材质的反射特性依赖于表面的切向量方向。
拉丝金属: 微表面沿特定方向排列,使用各向异性法线分布: \(D_{\text{aniso}}(\omega_h) = \frac{1}{\pi \alpha_t \alpha_b} \frac{1}{\left(\frac{(\omega_h \cdot \mathbf{t})^2}{\alpha_t^2} + \frac{(\omega_h \cdot \mathbf{b})^2}{\alpha_b^2} + (\omega_h \cdot \mathbf{n})^2\right)^2}\)
其中$\mathbf{t}$和$\mathbf{b}$是切向量和副切向量。
织物材质: 纤维结构导致复杂的散射行为,常用专门的BRDF模型如Ashikhmin-Shirley或微圆柱模型。
头发渲染: Marschner模型将头发散射分解为三个分量:
每个分量有不同的纵向和方位散射函数。
次表面散射(Subsurface Scattering, SSS)描述光线进入半透明材质内部,经多次散射后从不同位置射出的现象。
BSSRDF(双向次表面散射反射分布函数): \(L_o(\mathbf{x}_o, \omega_o) = \int_A \int_{\Omega} S(\mathbf{x}_i, \omega_i, \mathbf{x}_o, \omega_o) L_i(\mathbf{x}_i, \omega_i) \cos\theta_i d\omega_i dA\)
其中$S$是BSSRDF,描述从位置$\mathbf{x}_i$入射的光如何影响位置$\mathbf{x}_o$的出射。
偶极子近似(Dipole Approximation): \(R_d(r) = \frac{\alpha'}{4\pi} \left[\frac{z_r(1+\sigma_{tr}d_r)e^{-\sigma_{tr}d_r}}{d_r^3} + \frac{z_v(1+\sigma_{tr}d_v)e^{-\sigma_{tr}d_v}}{d_v^3}\right]\)
其中:
多极子方法: 对于薄层材质,需要考虑多次内反射,使用多个镜像源。
量化散射(Quantized Diffusion): 将连续扩散过程离散化,适合GPU实现: \(u(r,t+\Delta t) = \sum_{i} G(r-r_i, \Delta t) u(r_i, t)\)
参与介质(烟雾、云、大气)中的光传输由辐射传输方程(RTE)描述:
\[(\omega \cdot \nabla) L(\mathbf{x}, \omega) = -\sigma_t(\mathbf{x}) L(\mathbf{x}, \omega) + \sigma_s(\mathbf{x}) \int_{\Omega} p(\omega', \omega) L(\mathbf{x}, \omega') d\omega' + \sigma_a(\mathbf{x}) L_e(\mathbf{x}, \omega)\]其中:
相函数: Henyey-Greenstein相函数广泛用于各向异性散射: \(p_{HG}(\cos\theta) = \frac{1}{4\pi} \frac{1 - g^2}{(1 + g^2 - 2g\cos\theta)^{3/2}}\)
其中$g \in [-1, 1]$是各向异性参数。
体积渲染积分: \(L(\mathbf{x}, \omega) = \int_0^d T(0,t) \sigma_s(\mathbf{x}+t\omega) L_i(\mathbf{x}+t\omega, \omega) dt + T(0,d) L_{\text{background}}\)
其中透射率$T(a,b) = \exp\left(-\int_a^b \sigma_t(\mathbf{x}+s\omega) ds\right)$
当几何特征接近光波长时,需考虑波动光学效应。
薄膜干涉: 对于厚度$d$的薄膜,反射率: \(R(\lambda) = \frac{r_1^2 + r_2^2 + 2r_1r_2\cos(2\beta)}{1 + r_1^2r_2^2 + 2r_1r_2\cos(2\beta)}\)
其中$\beta = 2\pi nd\cos\theta_t / \lambda$,$r_1, r_2$是界面反射系数。
衍射光栅: 光栅方程: \(d(\sin\theta_i + \sin\theta_o) = m\lambda\)
其中$d$是光栅周期,$m$是衍射级次。
结构色: 蝴蝶翅膀、CD等的虹彩效应源于微结构的衍射和干涉。可用FDTD(时域有限差分)或严格耦合波分析(RCWA)模拟。
BTF(双向纹理函数): \(\text{BTF}(u,v,\omega_i,\omega_o) \in \mathbb{R}^{m \times n \times k^2 \times 3}\)
捕获空间变化的材质属性,需要大量存储和采样。
神经材质表示: 使用神经网络表示BRDF: \(f_r = \text{MLP}(\omega_i, \omega_o; \theta)\)
优势:
可微渲染与材质反演: 通过梯度下降优化材质参数: \(\mathcal{L} = \|I_{\text{rendered}}(\theta) - I_{\text{target}}\|^2\)
使用自动微分框架计算$\frac{\partial \mathcal{L}}{\partial \theta}$。
本章深入探讨了计算机图形学中材质与外观的数学建模:
核心概念:
关键公式:
高级技术:
实践要点:
习题9.1 证明BRDF的互易性原理。从麦克斯韦方程组出发,说明为什么$f_r(\omega_i, \omega_o) = f_r(\omega_o, \omega_i)$。
提示:考虑时间反演对称性和洛伦兹互易定理。
习题9.2 给定粗糙度$\alpha = 0.3$的GGX分布,计算法线与半程向量夹角为30°时的$D$值。
提示:直接代入GGX公式计算。
习题9.3 计算空气($\eta_1 = 1$)到玻璃($\eta_2 = 1.5$)界面的菲涅尔反射率$F_0$。使用此值,计算入射角为60°时的Schlick近似值。
提示:先计算$F_0$,再使用Schlick公式。
习题9.4 对于Henyey-Greenstein相函数,当$g = 0.8$时,计算前向散射($\theta = 0°$)和后向散射($\theta = 180°$)的相函数值之比。
提示:代入HG相函数公式,注意$\cos(0°) = 1$,$\cos(180°) = -1$。
习题9.5 推导各向异性GGX分布的归一化条件。证明: \(\int_{\Omega} D_{aniso}(\omega_h) \cos\theta_h d\omega_h = 1\)
提示:使用球坐标系,将$\omega_h$分解为切空间坐标。
习题9.6 设计一个BRDF模型,同时具有漫反射、镜面反射和逆反射(retroreflection)特性。给出数学表达式并证明满足能量守恒。
提示:考虑将多个BRDF分量线性组合,逆反射可用窄高斯分布在$\omega_o = -\omega_i$附近建模。
习题9.7 推导薄膜干涉的反射光谱,考虑多次内反射。解释为什么肥皂泡呈现彩虹色。
提示:使用光程差和复振幅叠加,考虑相位关系。
习题9.8 分析神经网络表示BRDF的优缺点。设计一个保证物理约束(互易性、能量守恒)的网络架构。
提示:考虑如何在网络结构或损失函数中编码物理约束。
错误:忘记半程向量归一化
half = wi + wo // 错误!
正确:
half = normalize(wi + wo)
错误:混淆角度定义
陷阱:微表面BRDF可能超过1
陷阱:多层材质能量累加错误
GGX在$\alpha = 0$时的奇异性:
// 错误:直接使用alpha
D = alpha^2 / (pi * denominator^2)
// 正确:钳制最小值
alpha = max(0.001, roughness^2)
菲涅尔计算的边界情况:
错误:使用均匀采样计算BRDF积分
错误:忽略多重重要性采样(MIS)
混淆辐射度量单位:
忽略色散:
预计算错误:
着色器精度问题: