计算机图形学-10:材质模型
材质问题
同一几何模型可以呈现陶瓷、金属、玻璃或布料的外观。差异不仅来自表面颜色,还来自光进入结构后如何反射、透射、吸收和散射。材质模型要把这些变化转成可以计算的响应。
海水是一个直观例子。同一片海面在深处偏蓝偏暗,浅处却接近透明,颜色和透明程度与光在介质中的传播距离、吸收和散射有关。洞穴中的光柱也说明了这一点:光通常沿直线传播,如果眼睛能在半空看见一束光,说明尘埃或雾把部分光重新导向了眼睛,这个过程称为散射 Scattering。
头发周围常有一圈透光的亮边。光线进入一根头发后,还可能在相邻的数百根、数千根头发之间反复传播,最后才到达眼睛。布料看起来不像金属,是因为纤维的排列、空隙和微表面方向不同;蝴蝶翅膀的鳞片本身可能几乎没有颜色,鳞片叠加后的结构却能选择性地反射不同波长。双彩虹和高阶彩虹则来自光在水滴中的多次折射与反射,出射能量随路径次数增加而减弱。
鱼肉、皮肤、蜡和玉石的光线还会进入材料内部,从一个位置进入后在内部散射,再从另一个位置离开。这是次表面散射 Subsurface Scattering,它超出了只描述同一点方向变化的表面 BRDF 范围,下一篇再展开。
同一个几何模型指定不同材质,就能得到陶瓷、玻璃、金属或木头的外观。自然界中可辨认的材质远多于任何渲染器能够列举的类型;课程所举的成熟电影渲染器约有 40 种材质模型;这个数量反映的是当时具体系统的实现,并非所有渲染器的固定上限。电影画面的细节还要依靠纹理、参数贴图和美术处理补足。解析模型负责提供物理上自洽的骨架,纹理负责描述模型没有显式表示的尺度。
BRDF
在表面光传输中,材质最核心的描述是双向反射分布函数 Bidirectional Reflectance Distribution Function,BRDF:
其中 和 都从表面点指向外部, 是入射方向与法线的夹角。分母是一个微分入射辐照度,分子是这部分入射光引起的出射辐亮度增量,因此 BRDF 是“辐亮度相对于辐照度的方向分配密度”,不能直接当作无量纲反射率。背面入射时 ,单面表面在该方向没有反射贡献。
把 BRDF 放回渲染方程:自发光项 描述表面自己发出的光,入射辐亮度和余弦项描述光如何到达表面,积分描述对所有入射方向累加。到达表面的能量究竟怎样分发到出射方向,唯一由 决定。因此,在表面模型中描述材质,等价于给出它的 BRDF。
“微分”不可省略。 只表示一个很小方向范围带来的辐照度,不能用总出射光除以总入射光强来替代 BRDF。辐亮度和辐照度的区别可复习辐射度量。BRDF 的单位是 ;它在很窄的镜面峰上可以大于 1,真正受约束的是乘以余弦后在整个半球上的积分。波长相关的 BRDF 也不能简单等同为材质的 RGB 颜色,因为入射光谱、界面反射和内部吸收都会共同决定最终颜色。
BRDF 可以按波长定义。实际 RGB 渲染通常对三个通道分别存储和计算;更高光谱分辨率则直接把波长作为变量。方向分布决定粗糙、抛光和拉丝等外观:分布越集中,反射越像镜面;分布越宽,高光越散。
Lambertian
理想漫反射的出射辐亮度与观察方向无关,因此 BRDF 是常数。设入射光在半球上均匀,常数 BRDF 为 ,则
假设表面不发光、不吸收,并且入射与出射的辐照度相等,则 。因此
用立体角微元
得到
若表面反照率为 ,总反射能量只占入射能量的 ,所以 Lambertian BRDF 为
来自半球的余弦积分,不是经验着色中可以省略的常数。 时表面完全不吸收,但 BRDF 仍是 ,而不是 1。把 写成一个数得到灰度漫反射,写成 RGB 三个数就能表示颜色;如果要描述光谱,则按波长记录反照率。
推导中假设入射辐亮度均匀,只是为了把 从积分中提出。 的结论不依赖均匀入射;它表示 BRDF 对入射方向和出射方向都是常数,而表面接收的辐照度仍然会随入射方向的余弦改变。换句话说,“漫反射出射辐亮度与观察方向无关”不等于“表面接收的能量与入射方向无关”。
Lambertian 只表示方向上没有可见高光的近似。粗糙墙面、粉笔和未抛光纸张可以使用它,真实材料仍可能包含高光、次表面散射和微小遮挡。仅凭“微表面方向很乱”不能自动推出 ,漫反射的常数 BRDF 还需要能量分配约束。
反射与折射
理想镜面反射只在一个方向上离开。沿用方向都从表面指向外部的约定,入射光实际沿 传播,反射方向是
把入射方向分成法向与切向分量,反射保持法向分量、翻转切向分量,就得到上式。反射方向和法线与入射方向共面,满足入射角等于反射角。用球面坐标表示时,,而方位角满足
理想镜面的 BRDF 是反射方向上的 Dirac delta,不能当作普通有限峰值。表面粗糙后,能量在理想反射方向附近形成一段反射瓣,这就是 glossy 外观。古代铜镜经过打磨可以照出模糊影像,正是因为反射瓣比理想镜面更宽。双向透射分布函数 Bidirectional Transmittance Distribution Function,BTDF 描述光传到界面另一侧的方向分布。反射和透射合起来称为双向散射分布函数 Bidirectional Scattering Distribution Function,BSDF;它们必须共享同一份入射能量预算。
镜面表面把环境反射到相机,透明球还会改变穿过它的视线方向。玻璃球中棋盘格的变形是折射改变视线的结果;带颜色的玻璃还可能在内部选择性吸收,透射光因此变色。
理想镜面的反射瓣和光滑折射方向都是 delta 分布。它们在半球上的普通点值没有有限峰宽,正确实现应直接沿唯一方向采样;普通半球随机采样命中该方向的概率为零。焦散正是由多个镜面事件把能量集中到漫反射表面的狭小区域,难点来自路径结构而不只是“光很亮”。

左图沿入射面观察,法线平分两条向外方向,两个极角相等;右图从上方看,两方向在切平面中的投影相反,因此方位角相差 π。两幅图分别说明反射定律在两个角参数上的约束。

光从折射率为 的介质进入 的介质时,Snell 定律为
常见折射率是真空 1、水约 1.333、玻璃约 1.5、钻石约 2.42。令 ,则
根号内为负表示不存在实数折射方向,发生全内反射。光从高折射率介质进入低折射率介质时才可能出现这种情况。水下观察到的 Snell window 是可透过水面看到的空气区域,角度约为 ;超过边界后只能看到水下的反射景象。

球形玻璃体的对称性使进入的光线通常能够从另一侧射出,但任意形状的玻璃兔子可能在内部多次全反射。实现折射时必须判断介质两侧并处理反射分支,不能假定“折射进来就一定折射出去”。
折射率随波长变化时会产生色散。棱镜把不同波长分开,雨滴把阳光分成彩虹;多次内部反射对应更高阶彩虹,能量更弱,也更难看见。水面起伏把光聚焦到池底形成焦散。对相机端来说,水面—池底—水面是一条 specular–diffuse–specular 路径,普通从相机随机采样很难命中。
若法线朝向入射介质,令 ,折射方向可写为
其中 由上面的平方根决定。切向分量按折射率比缩放,法向分量由单位长度约束确定。实现时必须先判断光线位于表面的哪一侧,再交换 并翻转法线;根号因舍入出现的微小负值可以在物理判断之后按容差钳为零,真实负值则必须走全反射分支。
Fresnel
菲涅耳反射率 Fresnel Reflectance 描述反射比例随入射角和介质变化的规律。车窗正视时主要看到外景,视线接近平行于玻璃时,玻璃会变成明显的镜子。反射比例由入射角和两侧介质决定,这就是 Fresnel 项。电介质通常用实折射率近似,导体需要复折射率,因而金属反射通常更强,并且可能带有颜色。
入射面由入射方向和法线张成。s 偏振垂直入射面,p 偏振平行入射面。非偏振光通常取两种反射率的平均。对无吸收电介质,精确反射率为
这两个式子分别对应电场在入射面外的 s 偏振和入射面内的 p 偏振;它们的平方是功率反射率。非偏振光才取二者平均,不能把某一条偏振曲线直接当作所有光的 Fresnel 反射率。
空气到折射率 1.5 的电介质,垂直入射时反射率约为 4%;接近掠射角时反射率趋近 1。图中的 p 偏振在 Brewster 角附近可以降到 0,红色曲线是非偏振光的平均反射率。

实时渲染常用 Schlick 近似:
其中
是垂直入射反射率。导体的 通常是 RGB 向量,不能用单一实折射率解释。反射能量按 分配,透射能量按 分配;全内反射时 。
导体的电磁响应通常用复折射率 描述:实部控制相位传播,虚部描述在导体中的衰减。工程着色常把测得或拟合的垂直入射反射率直接存成 RGB 的 ,这比把金属硬套成单一无色电介质更符合铜、金和铝等材料的颜色。
微表面
理想镜面只有一条反射方向,真实表面却由无数微小起伏组成。远处看到的是一个略粗糙的宏观平面,近处才看见凹凸几何。微表面模型把宏观表面视为平面,把微观起伏视为许多朝向不同的理想小镜面。
微面法线越集中,高光越窄,外观越接近镜面;法线分布越宽,高光越宽。给定入射方向和出射方向,能把前者反射成后者的微面法线必须沿半程向量
常见微表面 BRDF 为
是法线分布函数,决定朝向正确的微面有多少; 是单个微面的 Fresnel 反射比例; 是 shadowing/masking 几何项,表示这些微面是否同时能被光源和观察者看见。掠射角时自遮挡更严重,漏掉 会使球体边界异常发亮。

法线分布可以按投影面积归一化:
本身是按微面法线方向给出的面积密度,不是可以直接拿来采样的普通立体角 PDF;只有乘上投影余弦并在上半球归一化后,才得到常用的 NDF 采样分布。若使用可见法线分布,还要进一步排除从观察方向被遮挡的微面。
从半程方向到出射方向的变量替换带来 Jacobian
这也是分母中 4 的来源之一。工程材质通常在微表面高光之外再组合 Lambert/Oren–Nayar 漫反射、透射、清漆和次表面分量,并用 Fresnel、金属度或其他权重避免重复使用同一份能量。Cook–Torrance、Ward 等模型属于微表面模型家族的不同具体形式。
法线分布的具体选择也会改变高光尾部。Beckmann 适合高斯斜率,GGX(Trowbridge–Reitz)具有更长的尾部。各向同性 GGX 的一个常用形式是
越小,峰越高越窄;峰值变高并不意味着总能量增加, 仍须满足投影面积归一化,并与相容的 项配对。粗糙度贴图改变微表面分布宽度,法线贴图改变局部宏观法线,二者属于不同尺度。
窄高光不适合均匀半球采样。可以按 或可见法线分布采样半程向量,再由半程向量反射得到出射方向。半程 PDF 转为出射方向 PDF 时必须包含 Jacobian:
漏掉 Jacobian 会改变估计量;粗糙度极小时可以切换到理想镜面模型或使用系统约定的数值下限。
各向异性
各向同性 BRDF 绕宏观法线共同旋转入射、出射方向后保持不变,只依赖两个极角和方位角之差:
各向异性 BRDF 还依赖绝对方位角。拉丝金属、沿方向打磨的锅底、经纬线织物和被抚平的天鹅绒都有优先方向。高光会沿切线方向拉长,切线 、副切线 和法线 需要组成正交坐标系。对照图中,上排随机法线产生近似圆对称高光,下排沿一个方向排列的法线产生细长亮带。


锅底的亮带沿圆心向外展开。局部刷痕方向随位置改变,因此高光也随切向排列改变;这与给整个表面设置一个固定方向的各向异性不同。
各向同性只意味着绕宏观法线共同旋转后 BRDF 不变,并不意味着任意固定入射方向下的图像高光都一定是圆形。各向异性模型通常把半程向量投影到由 构成的切线空间,用两个粗糙度参数分别控制两个切向轴。UV 接缝处切线不连续会导致高光断裂;沿圆心一圈圈打磨的锅底则会产生径向展开的高光。
BRDF 性质
合理的被动 BRDF 至少应满足四条性质:
- 非负性:,反射辐亮度不能为负;
- 线性:不同入射光的贡献可以相加;
- Helmholtz 互易性:;
- 能量守恒:固定入射方向时,总反射比例不超过 1。
能量守恒写成
线性使漫反射、镜面和环境项可以分别计算后相加;互易性意味着交换光源和相机后 BRDF 数值相同;能量守恒还决定了路径追踪多次弹射是否会收敛。BRDF 的逐点数值可以大于 1,真正受约束的是乘余弦后的半球积分。
若材质还会透射,则 BRDF 与 BTDF 必须共享同一份入射能量预算。对整个球面求和时,反射与透射比例之和不能超过 1;只把两个分量都按 1 归一化会凭空制造能量。白炉测试用均匀白环境检查这一点:无吸收、全反射的模型应与环境一致,结果比环境更亮通常说明能量增益或归一化错误。
测量与分层
解析模型不一定能精确表示真实材料。Gonioreflectometer 固定样本,分别改变光源和传感器方向,直接测量入射辐照度与出射辐亮度的比值。球面台架通常由两条机械臂承载光源和相机,样本置于球心,角度精度可到约 ,设备直径约 2–3 m。
BRDF 一般有四个角度参数。各向同性假设可把共同绕法线的旋转消掉,降到三个参数;互易性还能进一步合并样本。实测数据通常需要插值、压缩或拟合成解析模型。MERL 数据库的各向同性版本常按 的三维表格存储每种材质,原始数据量很大,镜面峰太窄时还会被采样步长低估。
测量值不能直接用照片像素代替。相机像素已经混入光源强度、镜头响应、曝光、几何衰减和色调映射;仪器需要先用标准板标定入射辐照度,再测量样本的出射辐亮度。把光源和相机各自遍历球面会产生四维采样的维度灾难,因此要利用各向同性、互易性、插值、图像式测量或更聪明的压缩方法。

样本位于机械臂围绕的区域,照明和接收装置可以改变方向。固定样本,遍历入射与出射角度,就能把同一材质的方向响应记录为表格;实际测量还要标定光源和相机响应。
陶器的釉层是分层材质的例子。釉层先按 Fresnel 反射一部分光,未反射的部分进入底下的陶土,经过漫反射后再穿过釉层返回。最终外观同时有上层镜面反射和底层漫反射,不能把整件陶器压缩成一个未经说明的“颜色参数”。
测量表格可以理解为两个嵌套方向循环。Ei 是定向照明在样本处的校准辐照度,测到的是有限角度和面积范围内的平均响应:
1 | 对每个出射方向 wo: |





