原文(英文):https://cglounge.studio/journal/lookdev-the-technical-guide
作者:Arvid Schneider(CG Lounge)
说明:本文为翻译与整理版,保留制作中最常用的“基准场景 + 可核验数值 + 工作回路”。个别段落做了压缩,以便更贴近实际使用。
0. Lookdev 的边界:它不是贴图,也不是镜头灯光
Lookdev 的目标是:在进入镜头之前,在一套可控条件下证明材质既“物理合理”,又“可被艺术指导”。
它夹在 Texturing 与 Lighting 之间——你需要用确定的光照与参考物,去验证材质的响应是否靠谱。
如果 Lookdev 不可靠,下游会系统性崩掉:
- 灯光师匹配不了 plate;
- 合成师很难把元素融入;
- 主管的反馈会变成“就是不对劲”,因为问题不是单点瑕疵,而是基准错误(albedo 过亮 / spec 不物理 / 材质被 override / light linking 乱来等)。
1. 中性场景:所有 Lookdev 都应该从这里开始
在评估任何材质前,你需要一个可控环境:中性光照 + 一套参考物,让你有“地面真值”(ground truth)。
这三个参考物必须常驻:
1.1 18% 灰球(曝光锚点)
- 反射率:18%
- 在线性空间里:
0.18 - 在 ACEScg 的 beauty 里,灰球常见读数约
0.19(0.18 diffuse + ~0.01 spec 贡献,视具体光照/渲染器而定)
原作者提到一个很容易被忽略的点:如果你的灰球在 SDR 输出里读到 8-bit 的 122,往往意味着 view transform / 色彩链路不对(而不是“灰球材质不对”)。
Arnold Standard Surface(灰球)一套常用基准:
Base Color: 0.18 (RGB)
Base Weight: 1.0
Specular Weight: 1.0
Specular Color: 1.0 (保持白色,用 IOR 控制 Fresnel)
Specular Roughness: 0.6
Specular IOR: 1.51.2 镜面球(环境与曝光检查)
镜面球的作用很直接:看清环境长什么样、HDRI 有没有转对方向、曝光是不是在你预期的范围。
作者给的 Arnold 镜面球基准(更接近片场常用“镀银球”,不是纯铬):
Base Color: 0.97
Metalness: 1.0
Specular Roughness: 0.061.3 Macbeth ColorChecker(色彩链路验收)
色卡不是“让颜色更漂亮”,而是用来确认你的色彩管理没有崩。
如果色卡在 Lookdev 光照下都对不上参考,那你应该先修色彩链路,而不是继续调材质。
没有灰球/镜面球/色卡的 Lookdev 场景,在 production review 里基本等同于“不可评审”。先补齐基准,再谈材质好坏。
另外,关于光照侧的物理基准(lux、色温、HDRI 标定与验证流程),可以配合你站点上一篇翻译整理的文章一起用:
2. 最常见错误:不物理的 albedo(Base Color)
Lookdev 里我见得最多的硬伤不是“细节不够”,而是albedo 超出合理范围:
雪就拉到纯白、柏油就压到纯黑——但自然界里几乎不存在 0% 或 100% 反射率。
以下表格为线性空间下的常用测量值(作者引用 physicallybased.info、Lagarde 图表、Jensen 等资料)。这些值的意义是:你至少要知道“合理范围”,而不是靠肉眼猜。
2.1 常见材质 albedo(Linear)
| 材质 | Albedo(线性) | 备注 |
|---|---|---|
| 木炭(Charcoal) | 0.02 | 常见自然表面中非常暗的一档 |
| 黑色橡胶 | 0.023 | 轮胎、密封件 |
| 新沥青 | 0.04 | 新铺路面 |
| 旧沥青 | 0.12 | 风化后路面 |
| 深色土 | 0.17 | 裸露土地 |
| 绿草 | 0.10–0.25 | 单叶偏低、草坪/冠层偏高 |
| 红砖 | 0.26 / 0.10 / 0.06 | RGB 里 R 通道偏高 |
| 干沙 | 0.44 / 0.39 / 0.23 | 暖黄、低饱和 |
| 新混凝土 | 0.51 | 偏中性灰 |
| 白纸 | 0.79 / 0.83 / 0.88 | 常见带轻微偏蓝(增白剂) |
| 新雪 | 0.85 | 常见自然表面里很亮的一档 |
2.2 肤色 albedo(Linear RGB)
肤色在 Base Color 上有非常稳定的“谱型规律”:R 最高、B 最低(血红蛋白吸收导致)。这些值通常用于“开启 SSS”时的 Base Color 输入。
| 肤色类型 | Albedo(R/G/B) | 近似 Fitzpatrick |
|---|---|---|
| 很浅 | 0.847 / 0.638 / 0.552 | I |
| 浅色 | 0.799 / 0.485 / 0.347 | II |
| 中浅 | 0.623 / 0.433 / 0.343 | III(Jensen skin2) |
| 中等 | 0.436 / 0.227 / 0.131 | IV(Jensen skin1) |
| 中深 | 0.283 / 0.148 / 0.079 | V |
| 深色 | 0.090 / 0.050 / 0.020 | VI |
如果你的 Base Color 饱和度高到像“霓虹塑料”,大概率已经超出自然表面可达的光谱分布范围。不要用“更亮更饱和”去补“光照不对/曝光不对/参考不足”。
3. Fresnel:金属 F0 与非金属 F0
3.1 金属 F0(Linear RGB)
金属的“颜色”主要来自 Fresnel 反射,不来自漫反射散射。因此金属的 F0 会很高(通常每个通道都 > 0.5)。
| 金属 | F0(线性 RGB) |
|---|---|
| 银 | 0.972 / 0.960 / 0.915 |
| 金 | 1.000 / 0.766 / 0.336 |
| 铜 | 0.955 / 0.637 / 0.538 |
| 铝 | 0.913 / 0.922 / 0.924 |
| 铬 | 0.550 / 0.556 / 0.554 |
| 铁 | 0.530 / 0.513 / 0.494 |
3.2 非金属(Dielectric)F0:由 IOR 决定
非金属的 F0 很低,可以由公式推:
F0 = ((n - 1) / (n + 1))^2
| 材质 | IOR | F0 |
|---|---|---|
| 水 | 1.33 | 0.02 |
| 皮肤 | 1.40 | 0.028 |
| 玻璃 | 1.50 | 0.04 |
| 钻石 | 2.42 | 0.172 |
多数非金属会落在 F0 ≈ 0.04 附近,这也是为什么 Arnold 默认 IOR=1.5、Specular Weight=1.0 对大多数非金属都能工作。
4. Standard Surface 在“底层”到底在做什么
作者用一句话把 production shader 的核心说得很直白:多数渲染器用的都是 Disney Principled BRDF 的某种演化版本(GGX + Schlick Fresnel + 能量守恒)。
以 Arnold Standard Surface 为例,可以按“层”去理解它:
- Base:漫反射/金属反射(metalness=1 时)
- Specular:主高光 lobe(IOR 决定 Fresnel)
- Transmission:折射(玻璃/水)
- Subsurface:体内散射(皮肤/蜡/大理石)
- Coat:清漆层(车漆/上漆木头/湿表面)
- Sheen:布料掠射柔反射(绒/缎)
- Emission:自发光
- Thin Film:虹彩(油膜/肥皂泡)
其中最关键的原则是:能量守恒。如果你写自定义 shader 时破坏了能量守恒,就会出现“某些角度下发光一样的假亮”,那不是渲染噪点,是模型崩了。
5. SSS:皮肤里 94% 的光不是“表面高光”
一个非常重要的生产事实:皮肤大约只有 ~6% 的光来自表面 Fresnel 反射,其余 ~94% 进入皮肤后多次散射再出射——这就是 SSS 为什么决定“像不像人”。
5.1 三层结构(理解用)
- 油脂表层:主要贡献那 ~6% 的 spec(Arnold Specular)
- 表皮(Epidermis):散射半径较小,颜色偏黄橙(黑色素相关)
- 真皮(Dermis):散射更深更广,颜色偏红(血液相关)
5.2 Jensen 的测量数据(DMFP)
Jensen SIGGRAPH 2001 给出了一组 production 常用的 SSS 校准数据(Diffuse Mean Free Path,单位 mm):
| 材质 | DMFP(mm, RGB) |
|---|---|
| Skin 1(偏深) | 3.67 / 1.37 / 0.68 |
| Skin 2(偏浅) | 4.82 / 1.69 / 1.09 |
| 大理石 | 8.51 / 5.57 / 3.95 |
| 全脂牛奶 | 10.90 / 6.58 / 2.51 |
注意规律:红通道散射最远。如果你把 SSS 三通道距离设成一样,结果几乎必错。
5.3 Random Walk vs Dipole(什么时候该用哪个)
- Dipole:快,但在薄片几何(耳朵/鼻翼/手指薄处)会糊、会不真实
- Random Walk:更接近体积路径追踪,贵一些,但薄结构更自然
制作建议(原文观点):hero 角色优先 Random Walk;背景/时长敏感场景 Dipole 可接受。
6. Lookdev 的迭代回路:v001 到最终
Lookdev 很少“一步到位”。更接近 studio 的真实进度条是:
- v001:Clay(全灰,先看造型与比例)
- v002:Primary materials(先把主要材质区分清楚,保证数值合理)
- v003:Secondary breakup(脏污/磨损/微变化,但仍在可控范围内)
- v004:Shot checks(进入镜头环境做对照,确保可迁移)
- Final:Publish & lock(可复现、可回滚)
7. 转台规范与 Review 时我会看什么
作者强调“规范”不是形式主义,而是为了让 review 结果可比较、可复现:
- 转台速度与镜头长度固定
- 关键光照环境固定(至少一个中性 + 一到两个极端环境)
- 灰球/镜面球/色卡常驻画面或可一键切换
Review 时建议从这些维度快速排雷:
- Base Color 是否在合理范围(尤其“白得离谱/黑得离谱”)
- 金属是否在 Fresnel 逻辑上成立(F0 不低于 0.5)
- 粗糙度是否有材质语言(不是全场一把梭)
- SSS 是否有“红散得更远”的结构感
- 在不同 HDRI 下是否还能成立(可迁移性)
8. HDRI:为什么你永远不该只用一张
单一 HDRI 很容易“把问题遮住”。至少准备:
- 一张中性、可控的 Lookdev HDRI(标定/灰球校验)
- 一张对高光很苛刻的 HDRI(看 spec 与 roughness)
- 一张对暗部层次很苛刻的 HDRI(看 albedo 与微表面)
它们的作用不是“找最好看的”,而是“找最快暴露问题的”。
9. 收尾:把它做成可复用资产,而不是一次性文件
如果你希望 Lookdev 在 production 里真正可用,最后一定要把这些东西固化为:
- 标准 Lookdev 场景模板(含参考物、颜色管理、渲染设置)
- 数值表(albedo/F0/IOR/SSS)放在团队可查的位置
- 发布规范(版本、变更记录、回滚策略)
你不是在“做一个漂亮 turntable”,你是在给下游建立可复现的基准。