Ward 1992 — 第一个能落地的各向异性反射模型
是什么
Ward 1992 是第一篇把”各向异性反射”从理论搬到工程渲染器的论文。
日常类比:把一块普通铝板和一块拉丝铝板放在同一盏灯下。普通铝板的反光是一个圆点;拉丝铝板的反光是一条沿刷痕方向拉长的亮线。这个”光斑被拉成线”的现象就叫各向异性——表面在不同方向上的粗糙度不一样。
Ward 干了两件事:
- 造了一台机器:一次拍下整个半球的反射光(成像式 gonioreflectometer),把测量从几小时压到几分钟
- 写了一个公式:用一个椭圆形的高斯函数描述各向异性反射,参数少(只 4 个),能塞进渲染器里跑
为什么重要
不理解 Ward,下面这些事都没法解释:
- 为什么 1990 年之前游戏里所有金属看起来都像塑料——用的是 Phong / Cook-Torrance,只能各向同性
- 为什么拉丝金属、丝绸、黑胶唱片、木纹漆面在 CG 里能”看起来真”——靠的就是 Ward 这套思路
- 为什么 Frostbite 引擎 2014 年公开的 PBR 课程仍然引用 Ward 的归一化经验
- 为什么现代 GGX 各向异性扩展的参数还是叫 αx / αy(沿两个切线方向各一个粗糙度)——Ward 定的命名
核心要点
Ward 的反射函数(BRDF,bidirectional reflectance distribution function)长这样:
ρ = ρd/π + ρs/(4π αx αy √(cosθi cosθo)) · exp(-tan²δ · (cos²φ/αx² + sin²φ/αy²))不要被吓到,逐项解释:
- ρd / π:漫反射部分(像哑光墙面,往各方向均匀散射)
- ρs:镜面反射强度
- αx, αy:沿表面两条切线方向的粗糙度。两个不一样就是各向异性;如果 αx = αy 就退化成各向同性
- δ:观察方向和表面法线的夹角;φ:方位角
- 指数那一团:一个椭圆形的高斯衰减——从最强反射方向往两侧偏一点,亮度按椭圆衰减
整个公式只有 4 个可调参数(ρd, ρs, αx, αy),少到能从测量数据反推出来,又多到能描述拉丝感。
实践案例
案例 1:拉丝铝的参数大概是什么样
实际渲染里给拉丝铝设:
ρd = 0.05 // 几乎不漫反射ρs = 0.7 // 强镜面αx = 0.2 // 沿刷痕方向"粗糙"(光斑拉得长)αy = 0.02 // 垂直刷痕方向"光滑"(光斑窄)αx / αy 比例 = 10,这就是”光斑被拉成 10:1 椭圆”的来源。
案例 2:木纹漆面
ρd = 0.2ρs = 0.3αx = 0.05 // 沿木纹方向较光滑αy = 0.15 // 垂直木纹方向较粗糙(漆里有微小颗粒)注意切线方向跟着木纹走——曲面上每个点都需要有”切线场”(tangent field),通常从 uv 贴图算。
案例 3:退化成各向同性看看是什么
把 αx = αy = α 代进去,指数项里的 (cos²φ + sin²φ)/α² = 1/α²,公式简化为:
ρ = ρd/π + ρs/(4π α² cosθi cosθo) · exp(-tan²δ/α²)这就是 Beckmann 分布(Cook-Torrance 1981 用过的微表面模型的一个特例)。Ward 不是凭空造的,而是把 Beckmann 推广到了椭圆。
案例 4:丝绸窗帘的双向感
ρd = 0.1ρs = 0.4αx = 0.3 // 沿丝线方向反射很发散αy = 0.05 // 垂直丝线方向反射很集中为什么从一边看深、另一边看亮:丝线方向反射光被打散(αx 大),观察者看到的是分散后的弱光;垂直方向反射集中(αy 小),从那个方向看到的是几乎镜面级别的强反光。Ward 模型直接编码了这个双向不对称——之前的 Phong / Cook-Torrance 表达不出来。
踩过的坑
-
grazing 角能量爆炸:原始公式在 cosθi → 0(光线擦着表面入射)时分母变小,反射能量发散——违反能量守恒(射出 > 射入)。Walter 2005 / Geisler-Moroder 2010 给了归一化修正版,工程上必须用修正版。
-
αx / αy 的数值方向:Ward 论文里 α 越大越粗糙;但有些教材用 1/m 写法(m 越大越光滑)。抄公式时一定要看作者的约定,否则参数会反。
-
切线方向不是全局:αx / αy 是相对局部切线坐标系定义的。曲面上每点的切线方向不一样——必须有 uv 贴图或者 anisotropic flow map 提供切线场。漏了这一步,整张拉丝面会像同方向”贴皮”,曲面拐弯处穿帮。
-
测量装置的革命性容易被忽略:在 Ward 之前,测一个材料的完整 BRDF 要在暗室里手动转角度几小时甚至几天。Ward 用一面凸面镜把整个上半球的反射方向一次成像到 CCD 上,几分钟出一张图。没有这台机器,就没法验证模型对不对——理论再漂亮,参数对不上现实就是空谈。
适用 vs 不适用场景
适用:
- 拉丝金属、丝绸、缎面、黑胶、木纹漆面、抛光木材
- 任何”反射光斑形状不是圆”的表面
- 离线渲染(Radiance / Maya / mental ray)的标配;早期实时渲染(2000s 末游戏引擎)也用
不适用:
- 真正各向同性的表面(哑光墙、橡胶、未抛光石头):用 Lambert + Cook-Torrance 各向同性版即可
- 现代 PBR 主流(2015+):换成 GGX / Trowbridge-Reitz 各向异性扩展——尾部更长、能量守恒更好。Ward 是它的精神祖先,参数语义沿用,但公式被换掉了
- 次表面散射(皮肤、蜡、玉):BRDF 假设光在表面反弹,但这些材料光会进表面再出来,需要 BSSRDF
历史小故事(可跳过)
- 1975 年:Phong 写出第一个经验 BRDF,给所有 CG 反光起点
- 1981 年:Cook-Torrance 引入微表面理论 + 各向同性 Beckmann 分布
- 1992 年:Ward 在劳伦斯伯克利国家实验室造出成像 gonioreflectometer,配合自己的 Radiance 渲染器,发表本论文
- 2005 年:Walter 等人发现原始 Ward 在 grazing 角不守恒,发表归一化版本
- 2007 年:Walter 等人提出 GGX 微表面分布,逐渐取代 Ward
- 2014 年:Frostbite 引擎在 SIGGRAPH 公开 PBR 课程,仍引用 Ward 的归一化经验作各向异性扩展的参考
40 年间,“各向异性” 这一支从 Ward 的椭圆高斯出发,最终落到 GGX,但参数命名(αx / αy)和工程方法论没变。
学到什么
- 测量装置决定模型寿命:Ward 真正的贡献一半在公式、一半在那台 gonioreflectometer。能验证的模型才能进工业——理论再漂亮,参数对不上现实就只能停在论文里
- 少参数 + 物理意义清晰 是工程模型的胜负手——Ward 的 4 个参数都能从材料样品反推,每个都有直观含义(漫反射率 / 镜面强度 / 两个方向的粗糙度)
- 能量守恒是 BRDF 的硬约束:违反它的模型会”灯下越打越亮”,工程上必须做归一化检查。原始 Ward 在 grazing 角失守,13 年后才被 Walter 修好
- 从各向同性推广到椭圆 是个通用建模模板——任何”沿不同方向行为不同”的物理量都可以这样建模:把单参数 α 换成两个 αx / αy,再用一个椭圆函数串起来
- 工业落地优先于理论完美:Ward 模型有缺陷(grazing 角发散),但因为参数少、好算、能从测量推出来,硬是占了 15 年的工业默认位
延伸阅读
- 论文 PDF:Ward 1992(10 页,公式不多)
- Walter 2005 修正:Notes on the Ward BRDF
- Frostbite PBR 课程:Lagarde-de Rousiers 2014
- cook-torrance —— 各向同性微表面 BRDF 的奠基
- phong-1975 —— 经验型 BRDF 起点
关联
- cook-torrance —— Ward 的椭圆高斯是 Cook-Torrance Beckmann 分布的各向异性推广
- phong-1975 —— Ward 之前的经验模型,无法描述拉丝感
- renderman —— 同时代工业渲染器代表,与 Radiance 共同推广 BRDF 工程化
- subsurface-scattering —— BRDF 假设之外的另一大类反射现象
反向链接
- debevec-1998-rendering-with-natural-light —— Debevec 1998 — 用真实世界的光照亮 CG 物体
- goral-1984-radiosity —— Goral 1984 Radiosity — 把建筑工程的辐射热传导算法搬进图形学
- phong-1975 —— Phong 1975 — 把光照拆成环境+漫反射+高光三项