原文(英文):https://cglounge.studio/journal/calibrated-lighting-for-lookdev
作者:Arvid Schneider(CG Lounge)
说明:本文为翻译与整理版,保留关键数据表、公式与可操作流程,文字做了适度压缩以便阅读。
为什么要“校准”Lookdev 光照
很多 Lookdev 的争论,表面上是材质参数(albedo、F0、roughness),实际上是光照不可核验:强度是拍脑袋的、色温是随手挑的、HDRI 动态范围被剪掉,最后导致:
- 你在 Lookdev 里“觉得对”的材质,一到镜头灯光就崩;
- 你很难判断问题来自材质还是来自灯光;
- 资产在不同项目/不同组之间迁移成本很高。
校准(calibrated)并不等于“逐光子精确”。它意味着:你的数值足够接近真实测量,从而让材质响应合理、错误可诊断、跨场景可迁移。
校准光照只关心两个维度:
- 多少光(照度 illuminance:lux 到达表面是多少)
- 什么颜色(光谱分布:色温 CCT/标准光源)
1. 给艺术家的测光学:你只需要记住这四个量
1.1 四个单位(快速记忆版)
- 光通量(lm):光源向各方向发出的“可见光总量”。
- 发光强度(cd):单位立体角方向上的光通量(“朝某方向有多集中”)。
- 照度(lx):落到表面的光通量/面积(光照校准最常用,测光表读的就是它)。
- 亮度(cd/m²,nits):单位面积、单位立体角“你最终看到的值”(更接近“画面”)。
1.2 一个关键公式:照度 → 灰球亮度
对于理想漫反射表面(Lambert),照度与亮度关系:
L = E * rho / pi
L:亮度(cd/m²)E:照度(lux)rho:反射率(18% 灰球即0.18)
例如:18% 灰球在 100,000 lux 直射日光下:
L = 100,000 * 0.18 / pi ≈ 5,730 cd/m²
这是真实世界物理值,与任何渲染器“强度单位”无关。
2. 真实世界参考值(你需要的是“比例尺”)
这些数值不是“某个渲染器的设置”,而是现实世界测量数据。它们的用途是:让你把关键比值(sun/sky/indoor…)建立在一个统一尺度上。
2.1 太阳:最该校准的光源
Solar Constants(太阳常数相关)
| 属性 | 数值 | 来源 |
|---|---|---|
| 地球处太阳总辐照度 | 1,361 W/m² | NASA TSIS-1(2019 solar minimum) |
| 太阳光视见光效(大气层外) | ~94 lm/W | CIE 推导 |
| 太阳照度常数(大气层外) | ~128,000 lux | CIE 推导 |
| 太阳表面亮度 | ~1.6×10^9 cd/m² | 天体物理常用值 |
| 视直径(地球观测) | 0.533° | 常用天文学数据 |
| 立体角 | 6.794×10^-5 sr | 推导 |
| 黑体温度 | 5,778 K | 常用天体物理数据 |
地面照度参考(常用工作区间)
| 条件 | 照度(lux) | EV100 | 备注 |
|---|---|---|---|
| 晴天正午直射 | 100,000–120,000 | ~15.3 | 常用上限 |
| 典型明亮日照 | ~80,000 | ~15 | |
| 轻雾日照 | ~40,000 | ~14 | |
| 晴天阴影(仅天光) | ~20,000 | ~13 | |
| 明亮阴天 | ~10,000–20,000 | 12–13 | |
| 普通阴天 | 1,000–2,000 | 9–10 | |
| 重度阴天 | ~200 | ~6 | |
| 日出/日落 | ~400 | ~7 | |
| 暮光 | 1–10 | -1–2 | |
| 满月夜 | 0.25 | ~-3 | |
| 无月星光 | 0.002 | ~-10 |
3. 色温:别再“凭感觉调白”
太阳表面近似 5,778K 黑体,但穿过大气后,直射光会更暖(CCT 更低),天光更冷(CCT 更高)。现实里你经常看到“阴影偏蓝”就是这个原因。
3.1 CIE 标准光源(常用)
| 标准光源 | CCT | 代表 | 常见用途 |
|---|---|---|---|
| A | 2,856K | 钨丝灯 | 室内白炽参考 |
| D50 | 5,003K | 地平线日光 | 印刷/图形白点 |
| D55 | 5,503K | 日光(摄影常用) | “日光”参考 |
| D65 | 6,504K | 平均日光(sun+sky) | sRGB 白点/色度学标准 |
| D75 | 7,504K | 阴天/北向窗 | 冷日光参考 |
ACES 白点常被叫作 “D60”,但严格来说并不存在 CIE 的 D60 标准光源;ACES 的常用白点大约在 6000K 附近。
3.2 常见光源色温(工作记忆版)
| 光源 | 大致 CCT |
|---|---|
| 蜡烛 | 1800–1900K |
| 高压钠灯(路灯) | 2000–2200K |
| 钨丝灯(100W) | 2856K(Illuminant A) |
| 卤素 | 3000–3400K |
| 冷白荧光 | ~4100K |
| 正午日光 | 5200–5800K |
| 阴天 | 6500–7500K |
| 晴天阴影(蓝天主导) | 7500–10000K |
4. EV 与 lux 换算(让相机/测光表与 CG 对齐)
lux = 2.5 × 2^EV
反推:EV = log2(lux / 2.5)
这是一种常用的测光表标准(ISO 100)。
5. 渲染器强度:你到底应该“校准”什么
真正容易混乱的地方在这里:真实世界讲 lux,但很多渲染器不讲 lux。
5.1 任意单位 vs 物理单位
| Arnold / RenderMan / Karma | V-Ray(常见模式) | |
|---|---|---|
| 灯光单位 | 任意单位:intensity × 2^exposure | 物理单位:lux/lm/cd(可选) |
| intensity 的意义 | 线性倍增器,无物理单位 | 真实测光量 |
| 相机曝光 | 后乘:2^exposure(纯增益) | 物理相机(ISO/快门/光圈联动) |
| “100,000”意味着什么 | 只是数字 | 100,000 lux |
5.2 关键结论:Arnold 是线性的
在 Arnold / RenderMan 这类渲染器中:
intensity=100000+camera_exposure=-15
与intensity=1+camera_exposure=0
在渲染结果上可以是等价的(路径追踪本身不变,只是最终线性缩放不同)。
因此“把强度填成 100,000”本身不会让它更“物理正确”。
5.3 真正重要的是:比例
对任意单位渲染器来说,你要校准的是光源之间的比值,以及“灰球在正确曝光下落在中灰”的结果。
| 比例 | 真实世界大致比值 | 约多少档(stops) |
|---|---|---|
| 太阳 : 天光 | ~5:1 | ~2–3 档 |
| 太阳 : 阴天 | ~10–100:1 | ~3–7 档 |
| 太阳 : 室内办公室 | ~200:1 | ~7–8 档 |
| 太阳 : 月光 | ~400,000:1 | ~18 档 |
选一个全公司统一的“强度/曝光约定”很重要:它让 Lookdev 场景到镜头灯光可以即插即用,也让 HDRI 与 CG 灯的混合比值不会崩。
6. Arnold / RenderMan 的一套可比对参数
6.1 Arnold
- Intensity:线性倍增器(默认 1.0)
- Exposure:2 的幂倍增(默认 0)
- 最终亮度:
color × intensity × 2^exposure
其他常用点:
- 色温:开启 color temperature,输入 Kelvin
- 太阳盘角度:Distant light angle 设为 0.53°(对应真实太阳视角大小)
- 程序天空:
physical_sky(Hosek–Wilkie)可自动处理 sun/sky 的色温与比例
6.2 RenderMan
同样遵循 intensity × 2^exposure 模型:
- PxrDistantLight:默认 intensity 通常较大(只是约定,不是 lux)
- angleExtent:同样推荐 0.53°
- PxrEnvDayLight:类似 Arnold 的 physical sky
6.3 对照表
| 概念 | Arnold | RenderMan |
|---|---|---|
| 太阳光类型 | Distant Light | PxrDistantLight |
| 太阳盘大小 | angle: 0.53 | angleExtent: 0.53 |
| 强度公式 | intensity × 2^exposure | intensity × 2^exposure |
| 色温 | Kelvin + toggle | colorTemperature |
| 天空模型 | physical_sky | PxrEnvDayLight |
| 单位 | 任意 | 任意 |
下图是原文给出的“校准环境参考示例”:


7. HDRI 标定:不是“拍了个球就叫 HDRI”
HDRI 不标定也能出图,但会有三个典型问题:
- sun/sky/ground 的亮度比例可能是错的
- 绝对尺度可能差几个数量级,导致与 CG 灯混合时比例崩
- 色彩可能带着摄影曝光/滤镜偏色,而不是场景本身
7.1 什么叫“校准 HDRI”
至少满足三点:
- 动态范围完整:太阳盘不要被剪掉(理想目标是覆盖太阳盘到深阴影的 30+ 档)。
- 绝对亮度标定:像素值要能映射到真实亮度(cd/m²)。
- 色彩标定:用色卡/灰阶验证中性与偏色(ND 滤镜常引入偏色,需要校正)。
7.2 一个常用标定思路(公式版)
对等距柱状(equirectangular)HDRI,上半球照度:
E = sum( L(x,y) * cos(theta) * omega(x,y) )
像素立体角:
omega = sin(theta) * (2 * pi / width) * (pi / height)
校准因子:E_metered / E_hdri
把 HDRI 的每个像素乘以该因子,即可把 HDRI 拉到与实测一致的尺度。
8. 验证:灰球测试(以及色卡)
原文给出一个很实用的验证流程:只要你把灰球/镜面球/色卡放进同一套 Lookdev 光照,很多问题会“自动暴露”。
Step 1:渲一个 18% 灰球
要点:确认灰球在你的 view transform 下落在你定义的“中灰”位置(不是靠眼睛猜)。
Step 2:检查结果是否合理
除了灰球本身的平均值,还要看:
- 直射与天光的比例是否符合预期
- 高光是否被剪断(尤其是 HDRI 的 sun)
Step 3:检查 Macbeth ColorChecker
关注底部中性灰阶:
- 灰阶应该平滑渐变
- 不应带明显色偏(偏青/偏洋红常见于白平衡/色域管理问题)
9. Arnold 一些“会破坏物理直觉”的默认项(Lookdev 建议覆写)
这部分的核心不是“Arnold 不物理”,而是:默认配置可能引入能量损失或模糊路径,让你难以用数据去校准。
建议做法:明确你们工作室的 Lookdev 约定,写成 preset / template,别让每个 artist 自己配一遍。
10. 快速参考卡(做成团队内部 wiki 会很值)
你可以把本文的关键内容压缩成三张卡:
- 真实世界照度表(sun/overcast/indoor/moonlight)
- 色温表(D55/D65/钨丝/阴影)
- 校准流程(HDRI 标定 → 灰球/色卡验证 → 固化模板)