跳转到内容

Ward 1992 — 第一个能落地的各向异性反射模型

待复核

Ward 1992 是第一篇把”各向异性反射”从理论搬到工程渲染器的论文。

日常类比:把一块普通铝板和一块拉丝铝板放在同一盏灯下。普通铝板的反光是一个圆点;拉丝铝板的反光是一条沿刷痕方向拉长的亮线。这个”光斑被拉成线”的现象就叫各向异性——表面在不同方向上的粗糙度不一样。

Ward 干了两件事:

  1. 造了一台机器:一次拍下整个半球的反射光(成像式 gonioreflectometer),把测量从几小时压到几分钟
  2. 写了一个公式:用一个椭圆形的高斯函数描述各向异性反射,参数少(只 4 个),能塞进渲染器里跑

不理解 Ward,下面这些事都没法解释:

  • 为什么 1990 年之前游戏里金属常像塑料——用的是 Phong / Cook-Torrance,只能各向同性
  • 为什么拉丝金属、丝绸、黑胶唱片、木纹漆面在 CG 里能”看起来真”——靠的就是 Ward 这套思路
  • 为什么 Frostbite 引擎 2014 年公开的 PBR 课程仍引用 Ward 的归一化经验
  • 为什么现代各向异性 GGX 仍用 αx / αy 两个粗糙度——沿用 Ward 的双粗糙度语义

Ward 的反射函数叫 BRDF(bidirectional reflectance distribution function,双向反射分布函数:描述”光从哪边来、往哪边走、有多亮”)。可拆成三块:

  1. 漫反射底座:ρd / π。类比哑光墙面——光往各方向均匀散射,没有高光尖峰。
  2. 两个方向的粗糙度:αx、αy。类比拉丝铝的刷痕:沿刷痕”糙”、垂直刷痕”滑”。两个不一样就是各向异性;αx = αy 就退化成各向同性。
  3. 椭圆高斯衰减:高光不是圆斑,而是按椭圆往两侧掉亮度。类比手电筒光斑被压扁成长条。

完整公式(教学示意):

ρ = ρd/π + ρs/(4π αx αy √(cosθi cosθo))
· exp(-tan²δ · (cos²φ/αx² + sin²φ/αy²))
  • ρs:镜面反射强度
  • δ:halfway 向量 h(入射与出射方向的角平分线)与法线 n 的夹角;φ:h 在切线平面里的方位角
  • 整个模型只有 4 个可调参数(ρd, ρs, αx, αy),少到能从测量反推,又多到能描述拉丝感

案例 1:拉丝铝的参数大概是什么样

Section titled “案例 1:拉丝铝的参数大概是什么样”

教学示意值(非论文表内拟合结果):

ρd = 0.05 // 几乎不漫反射
ρs = 0.7 // 强镜面
αx = 0.2 // 沿刷痕方向"粗糙"(光斑拉得长)
αy = 0.02 // 垂直刷痕方向"光滑"(光斑窄)

逐部分解释:ρd 低 → 不像墙面;ρs 高 → 金属感;αx/αy = 10 → 光斑被拉成约 10:1 椭圆。

ρd = 0.2
ρs = 0.3
αx = 0.05 // 沿木纹方向较光滑
αy = 0.15 // 垂直木纹方向较粗糙

逐步看

  1. ρd=0.2、ρs=0.3 → 比金属更”哑”,仍有一层清漆高光
  2. αy > αx → 垂直木纹方向高光更散,沿木纹更尖
  3. 切线跟着木纹走——曲面上每点要有切线场(常从 UV 算);漏了会像整张皮同向贴

对照实验(同一盏灯、同一 ρd/ρs):

各向异性:αx = 0.2, αy = 0.02 → 高光是长条
各向同性:αx = αy = 0.1 → 高光变回圆点

把 αx = αy = α 代进公式,椭圆退化成圆:指数核变成 Beckmann 型(与 Cook-Torrance 1981 的各向同性微表面核同族,归一化细节不完全等同)。这就是”各向异性开关”——关掉双粗糙度差异,拉丝感立刻消失。

  1. grazing 角能量爆炸:原始公式在 cosθi → 0(光线擦着表面入射)时分母变小,反射能量发散——违反能量守恒。Walter 2005 / Geisler-Moroder 2010 给了归一化修正版,工程上必须用修正版。
  2. αx / αy 的数值方向:Ward 里 α 越大越粗糙;有些教材用 1/m(m 越大越光滑)。抄公式时一定要看作者约定,否则参数会反。
  3. 切线方向不是全局:αx / αy 相对局部切线坐标系。漏了 UV / anisotropic flow map,整张拉丝面会像同方向”贴皮”,曲面拐弯处穿帮。
  4. 测量装置容易被忽略:Ward 之前测完整 BRDF 要在暗室手动转角度几小时。他用凸面镜把上半球一次成像到 CCD,几分钟出图。没有这台机器就没法验证模型

适用

  • 拉丝金属、丝绸、缎面、黑胶、木纹漆面、抛光木材
  • 任何”反射光斑形状不是圆”的表面;经验上 αx/αy 比值 ≳ 2 时各向异性才明显
  • 离线渲染(Radiance / Maya / mental ray)标配;早期实时引擎也用过

不适用

  • 真正各向同性表面,或 αx/αy ≈ 1:直接用各向同性 GGX / Beckmann 即可,收益接近 0
  • 现代 PBR 主流(2015+):换成 GGX 各向异性扩展——尾部更长、能量守恒更好。Ward 是精神祖先,双粗糙度语义沿用,公式被换掉
  • 次表面散射(皮肤、蜡、玉):需要 BSSRDF,不是表面 BRDF
  • 1975 年:Phong 写出第一个经验 BRDF
  • 1981 年:Cook-Torrance 引入微表面理论 + 各向同性 Beckmann 分布
  • 1992 年:Ward 在劳伦斯伯克利国家实验室造出成像 gonioreflectometer,配合 Radiance 发表本论文
  • 2005 年:Walter 等人发现原始 Ward 在 grazing 角不守恒,发表归一化版本
  • 2007 年:Walter 等人提出 GGX,逐渐取代 Ward
  • 2014 年:Frostbite 在 SIGGRAPH 公开 PBR 课程,仍引用 Ward 归一化经验作各向异性扩展参考

40 年间,“各向异性”这一支从 Ward 的椭圆高斯出发,最终落到 GGX,但双粗糙度语义和工程方法论没变。

  1. 测量装置决定模型寿命:能验证的模型才能进工业——一半贡献在公式,一半在 gonioreflectometer;理论再漂亮,参数对不上现实就只能停在论文里
  2. 少参数 + 物理意义清晰 是工程模型的胜负手——4 个参数都能从样品反推,每个都有直观含义
  3. 能量守恒是 BRDF 硬约束:违反它会”灯下越打越亮”;原始 Ward 在 grazing 角失守,13 年后才被修好
  4. 从各向同性推广到椭圆 是通用模板:单参数 α → αx / αy,再用椭圆函数串起来——工业落地优先于理论完美
  • cook-torrance —— Ward 的椭圆高斯是 Cook-Torrance Beckmann 核的各向异性推广
  • phong-1975 —— Ward 之前的经验模型,无法描述拉丝感
  • renderman —— 同时代工业渲染器代表,与 Radiance 共同推广 BRDF 工程化
  • subsurface-scattering —— BRDF 假设之外的另一大类反射现象
  • debevec-1998-rendering-with-natural-light —— 真实光照测量与 BRDF 工程化同一脉络