工作中需要制作基于物理的标准环境,于是学习并整理出此篇文档。
1 理论
成像的三个要素 (我自己编的):光源、物体表面(材质)、人眼(相机)
想排除物体表面的影响,搭建物理正确的光照环境,只需管理光源,其次是相机
1.1 光度学
| 物理量 | 单位 |
|---|---|
| 发光强度(Luminous Intensity) | 坎德拉(Candelas,cd) |
| 发光通量(Luminous Flux) | 流明(Lumens,lm) |
| 亮度(Luminance) | 尼特(Nit)= cd/m^2^ |
| 照度(Illuminance) | 勒克斯(Lux)、英尺烛光(Foot Candles,fc) |
本次讨论重点在于
- 亮度(Luminance):一个着色点朝一个方向(朝屏幕像素点的方向)出射的光线有多强
- 照度(Illuminance):一个着色点在法线半球的所有方向收到的所有光线有多强
1.2 摄影学
光比:被摄物体向光面和背光面的亮度比值;或者,主光灯和补光灯的强度比值

曝光:

-
EV = Exposure Value:代表摄像机的快门速度和光圈(F 数)的组合值
-
EV 本质上是曝光的度量值,使得产生相同曝光水平的快门速度和 F 数的所有组合具有相同的 EV
-
EV100:使用 ISO = 100 胶片时的 EV
中灰:sRGB 119(0.46),sRGB Linear 0.18(反射率 18%)

校准曝光:使用中灰材质的板子(灰板),使灰板面向光源,相机测光点对准灰板,调整曝光,使得中灰材质在相机图像内为中灰亮度
自动曝光:使相机图像平均亮度为中灰亮度
- 场景越亮,相机内平均亮度达到中灰亮度所需要的 EV100 就越高
1.3 人眼视觉
- 浦肯野效应:从昼视觉向夜视觉转变时,人眼对光的最大敏感性向高频(蓝光)方向移动,此时场景中的蓝色部分在人眼视觉中更明亮
- 因为是视觉改变而不是环境改变,所以相对严谨的模拟方式是通过相机后期来模拟,比如将色彩平衡调整为偏蓝

- 和自动曝光范围很大的相机不同,人眼的亮度适应区间相对较窄,不会把任何亮度的场景都适应到中灰亮度
2 真实世界的数据
- 来源见文末“参考”一节
- 这些都是网络上获取的真实测量数据,只建议作为基准参考,不需要严格对标
2.1 照度、EV100 和光比
- 经验 EV100:仅代表对应场景在此 EV100 下看着舒服(符合人眼),不代表自动曝光值
- 光比:随氛围变化,可视为范围内最值
| 场景 | 测光板的照度(lux) | 经验 EV1OO | 光比 |
|---|---|---|---|
| 正午时晴朗无云的室外(自然光) | 110000 ~ 120000 | 14 | 16:1 |
| 正午时多云晴天或者晴天阴影处的室外(自然光) | 20000 | 10 ~ 12 | 2.5 : 1 |
| 阴云密布的室外(自然光) | 1000 ~ 2000 | 10 | 1.65:1 |
| 日落黄昏时的室外(自然光) | 400? | 7 ~ 12 | |
| 夜晚时的室外(自然光) | < 1 | -6 ~ -2 | |
| 夜晚时的室外(城市内人造光源) | 30 | 5 ~ 8 | |
| 办公室、家庭类型的室内 | 100 ~ 750? | 5 ~ 8 | |
| 展厅、体育场、舞台类型的室内 | ? | 8 ~ 11 |
上表为个人总结,照度一列有部分不明确的地方(以问号标注),如果网上有更可靠的数据库,参考它们也是可以的
2.2 人造光源
| 人造光源类型 | 光源发光通量(lm) |
|---|---|
| 烛光 | 12 |
| 小型装饰灯 | < 100 |
| 装饰灯 | 200 ~ 300 |
| 普通房间的吸顶灯 | 400 ~ 800 |
| 大型房间的吸顶灯 | 800 ~ 1200 |
| 路灯 | 1000 ~ 40000 |
3 引擎中的实现
基本思路:
【固定曝光】→【确定光源】→【调整相机后期】
-
根据相机 EV100 的经验取值固定 EV100
-
确定光照方案后,按以上真实测量数据确定所有光源的强度(以达成目标照度、光比)
-
恢复到自动曝光并调整自动曝光,比如调整曝光补偿曲线,以达到符合人眼感知的结果而不是相机自动曝光结果;视情况调整其他后期参数,如白平衡等
- 这一步算视觉调整,并不影响灯光环境本身的真实物理性,“摄影创作中没有正确只有合适”
3.1 引擎设置
-
Extend Default Luminance 开启
-
Pre-Exposure 开启
3.2 固定 EV100
预先固定 EV100 ,防止”受被摄物影响的自动曝光”或”不合适的 EV100”影响打光时的感官判断
可以在视口里设置,也可以直接在后期盒子里固定

3.3 确定光源
3.3.1 如何在引擎内测光
高强度利用 showflag 中的 HDR (Eye Adaptation) 视图,打开方式:视口左上角 Show > Visualize > HDR(Eye Adaptation)

- 各种值列表
- 照度计和亮度计(其中照度计只在 UE5 之后有)
- 直方图、代表曝光取值的竖线、映射曲线
测照度:
-
在场景中放置一个面朝定向光的面片作为测光板,测光板的材质:Basecolor= 1(纯白色),Metal = 0,Specular = 0,Rough = 1(全漫反射)
-
打开 HDR 视图,观察测光板上的 Illuminance(上方第一个探针的值),该值代表当前整个法线半球方向对此测光点的照度,单位 Lux
- 注:测照度时要注意周围场景的开阔程度影响
测光比:
-
在场景中放置一个面片和一个圆柱体(一般用全漫反射中灰材质),放置于定向光直射下
-
在 HDR (Eye Adaption) 中观察这个装置的亮面和暗面的 Luminance,二者比值即为光比(并不严格)
3.3.2 确定光照方案
根据 UE 的天空大气计算和 skylight 捕捉范围,我们可以遵循这样的思考流程来确定自然光照方案(人造光方案见 3.3.5 节):

- 2025.12 更新:到最近一份工作才发现,在捕捉天光时,可以用另一套完全不同的光照环境作为捕捉天光专用环境,去抓一个静态的 cubemap 给 skylight 组件采样,这种情况下天光强度完全受捕捉天光专用环境下的天空球材质、天空大气、大气太阳光等影响,我们可以通过调整这个捕捉天光专用环境来调整天光强度
3.3.3 天光(Sky Light)
除间接光外,室外照度主要受定向光和天光共同影响,暗部受天光影响,亮部受定向光 + 天光影响,所以建议先确定天光
天光的 Intensity Scale 要通过测光确定,以达到符合要求的照度和光比
-
对于 HDRI 天光,建议 Intensity Scale 基于 power(2, EV100) 调整
- 因为在 UE 中,最终的 HDRI 天光强度 = Sky Light Intensity * HDR 图像采样出的线性值,而 UE 对 HDR 图像的采样基于 EV100 = 0
-
对于捕捉的天光,建议 Intensity Scale 先取 1,调整定向光后,再回来调整天光,Intensity Scale 基于 1 微调
- 2025.12 更新:这里讨论的是“天光直接捕捉当前光照环境”的情况;如果采用捕捉天光专用环境的方案,那么 Intensity Scale 完全可以保留为默认的 1,天光强度由捕捉天光专用环境调整
可在 showflag 中打开 Visualize SkyLigfht Illuminance 观察当前的天光采样结果
3.3.4 定向光(Directional Light)
定向光的调节和是否作为大气太阳光相关:
-
定向光不作为大气太阳光时,主要调节:强度、色温、Source Angle(控制光质)
-
定向光作为大气太阳光时,主要调节:强度
-
强度的调节也可由天空大气的 Mie Scattering & Mie Absorption 参数替代,自身保持日光/月光的默认强度值即可
-
照到物体表面的色温由天空大气的吸收、散射过程自动计算
-
在制作真实环境 LookDev 时,如果参考数据:
- 很充足,推荐定向光不作为大气太阳光,更可控(仅对于制作 LookDev 而言,实际引擎中有一部分功能和大气光有关,还是得用)
- 不充足,就只能让定向光作为大气太阳光,依靠天空大气组件的计算决定色温等
UE 官方文档 SkyAtmosphere 的“其他注意事项”部分给出了日光、月光和大气设定的建议,可参考
3.3.5 人造光源(Local Light)
| 真实世界 | 引擎内 |
|---|---|
| 室内照度受房间大小和灯泡个数影响,宽敞高大的室内会打很多灯来照明 | 如果项目内有很高很宽敞的房间,就没法用一两个真实灯泡亮度的光源去照亮;在引擎里,从性能考虑,不会真的暴力地去打很多个光源来还原 |
| 光源衰减距离是无限的 | 直接光衰减距离有限 |
解决办法:把单个光源视作很多个灯泡的集合,打灯后可以补光
——因此没有必要去给所有光源开反比平方衰减来追求物理性,只给实际作为一个灯具照明的光源开反比平方衰减就可以了(一般是装饰灯)
考虑到投影问题,只给主光源开投影
最终室内照度在合理范围内即可(测照度的点在人高度附近)
3.4 调整相机后期
- 恢复到自动曝光
- 相机自动曝光算法是把所有场景都自动调节成中灰亮度,在场景过暗或过亮时会出现不符合人眼视觉经验的结果(该暗的时候没有暗下去,该亮的时候没有感觉很亮),所以在自动曝光的基础上我们还需要继续调整
- 模拟人眼视觉
- 在自动曝光的基础上,调整曝光
- 要符合人眼视觉经验
- 建议用曝光补偿曲线调整
- 调整白平衡
- ……
- 在自动曝光的基础上,调整曝光
一些模拟人眼视觉的例子:
- 模拟人眼对晴天等过亮环境的感知:曝光补偿 + (即 EV100 数值 -)
- UE 默认设置的曝光补偿 +1:讨好明亮场景下的人眼视觉效果
- 模拟人眼对夜晚等过暗环境的感知:曝光补偿 - ,白平衡调低
另外,在这里强调:光源强度确定后,基本上所有视觉上过亮或过暗的问题都是曝光问题,不要再去调整光源强度
- 比如,在开启全局光照的情况下,室外正午晴天,室内无光源,视点位于室内,用未调整的自动曝光的相机观察室内场景,会感觉太亮——这并不是光照出问题,是曝光出问题
- 所以前期打光时固定曝光很重要,不要被自动曝光欺骗 (・∀・)
对于 LookDev,出于资产检查的需求,还是需要固定曝光,不能让 EV100 的值有变化而掩盖掉材质本身明度的问题
Tips
为什么大部分项目都可以不采用这套真实物理的光照数值?
光的强度数值可以随 EV100 一起缩放而保持视觉效果不变(不考虑雾效等额外的亮度)
-
缩放规律:EV100 + 1,光强 * 2
-
举例:一个 EV100=14,HDRI 天光强度 = 1 * pow(2, 14) = 16384,定向光强度=120000 lux 的环境,等同于 EV100 = 0,HDRI 天光强度= 1,定向光强度= 7.3 lux 的环境
对于一般打光流程,只要能保证先固定 EV100(随便固定成哪个值,一般取 EV100=0)然后再打光(根据视觉感受调整光照数值),再调整自动曝光,也是能达到视觉上合理的光照的
只是,使用这套真实物理的光照环境/规则,有一些好处:
-
对相机和画面的调整可以直接沿用摄影圈经验
-
退一步讲,在宽曝光范围的规则下打光,你会收获:高对比、长影调、过曝感、强烈视觉感受
- 比如,室内打光时固定 EV100=7,而室外打光时固定 EV100=12,最终效果是室内外有足够高的对比,从暗的室内看亮的室外会有很强烈的视觉感受,亮部有过曝感
- 在这样的打光过程中,我们不知不觉地就为一些视角下的画面(比如从室内看室外)打造了一个很宽的直方图,影调足够长,所以视觉感受足够强烈
- 但这也要从项目需求出发,比如多人射击 pvp 项目一般不会允许室内外对比太强烈
- (如果你加入了一个已经开始很久了的项目,发现灯光师和灯光 TA 对于各种天气、时段、区域的 EV100 值完全没有规定,那得好好思考一下为什么会这样了)
不想用网络参考数据来回调整,想用实景拍摄结果去 match?
一个更深入的话题……在这里放一篇 notion 笔记:Enabling a Look Development Workflow for UE4,内容包括:前期工具准备、拍摄布景、图像处理、UE 内虚拟环境匹配拍摄结果
问题记录
- 自发光特效材质:
- 如果项目在中途改用此设置,此时应该会发现绝大部分特效材质都没有使用 eye adaptation——这导致使用真实物理光照时,在非常亮的日光导致的高 EV100 曝光下,会看不见发光特效,或者白色的烟雾变黑,解决办法就是给特效材质用上 eye adaptation
- 后期全屏特效材质:
- 在 blendable location 和材质节点中都要谨慎使用 scene color
- 因为使用物理光照设置后,scene color 是线性的反射光强,不再是所见即所得的颜色(事实上也本来不是,只是光强度小的时候问题不明显),日光下直接数值爆炸,对 scene color 还要 blend 一层自发光颜色的话曝光结果就坏掉了
- 如果只是想对所见即所得的颜色进行处理,应该使用 tone mapping 之后的颜色,blend location 也要选 after tone mapper 或者之后的
参考
五星级资料,看完武功大成
- 关于建立资产统一审查预览环境的一些说明 - Unreal Engine
- The Challenges of Rendering an Open World in Far Cry 5
- Moving Frostbite to Physically Based Rendering 3.0
摄影圈知识
UE 相关文档
数据参考
