随着UE4功能的日趋完善,开发者对灯光环境等功能越来越想了解,这里分享一些UE4真实物理属性的灯光环境的思考、尝试及结果供大家参考!
看之前先明确这两个问题:
Q1:为什么追求创建基于真实物理属性的灯光环境?
● 了解真实环境光比:光/影,室内/室外:做到心中有数,更好控制光比,以此为基础根据需要整体缩放以及艺术化。
虚拟创作时太阳要多强,天光要多亮,局部的点光亮度,色温是多少,面积多大等等,传统方式基于艺术家的眼睛自由设定。这并不是说有问题,但要表现真实每个艺术家对真实的看法不一,不可靠。如果有一个真实光比信息的参考,或者作为起点,再此基础上再做艺术化很多时候会带来意想不到的效果。
● 规范灯光数值:从太阳和天空开始;避免整个项目灯光参数设置的随意性;即通过流程的控制来确保品质,同时加速迭代。
同样有多位艺术家在一个项目上工作时,由于审美差异,决定最终效果的变量多样(灯光,材质,后期等),为达到一个视觉目标会出现五花八门的组合设置,不利于统一资源,修改迭代效率以及 Debug。规范统一的数值范围可以有效缓解这些问题。
● 作为定量协助确定变量
最终效果变量多(灯光,材质,后期);要亮点,对比强些可以调材质,调灯光,或者后期,并不知道哪个是问题;如果我们能明确固定下来几个变量就为固定另外一个变量创造了环境。创建一个物理灯光环境结合Ground Truth的对比,是创建物理正确的材质贴图前提。
● 匹配实景和虚拟景物灯光
合成虚拟和现实,无论是虚拟环境真实角色,还是虚拟角色真实环境,两者要看上去搭调灯光需要被匹配。
Q2: 真实和虚拟(UE4)灯光环境同步对象有哪些?
按灯光类型分:太阳,人造光源,反弹光,天光,反射;
按灯光属性分:灯光方向,强度,色温,质感;
这些我们分别从真实和虚拟两面来罗列:
1、真实世界的灯光环境如何?即真实世界这些变量是多少
● 太阳方向:取决于太阳位置;可以根据地点,时间,时区计算得出;人造光方向记录于IES光源描述文件
● 关于强度:真实照度参照;从摄影曝光值角度了解真实世界光照环境;人造光强度厂家也会记录到IES光源描述文件
● 色温数值参考; 人造光色温厂家记录到IES光源描述文件
● 质感取决于光源对对象的包裹程度以及光源的离散度。太阳的尺寸使用太阳在视口中张角来描述,在晴天的时候为0.5357度;加大这个数值可模拟更大的太阳,或者多云天气。人造光光质感也会根据IES光源描述文件反应出来
2、UE4中目前的灯光环境如何?
● 强度:UE4 中直接光可使用基于物理的灯光强度参数,比如DirectionalLight使用lx;Skylight支持HDRI;Spot/Point/Rec/lights使用lm或者cd;
● 方向光方向:基于地理的太阳位置;
● 天光强度:基于物理的大气;被Skylight捕捉后可作为基于物理的天光IBL;
● 综合Sun and Sky Actor:太阳方向,色温,天光颜色,强度,大气颜色强度;
● GI:反弹光包括Lightmaps和ILC/VLM都基于光线跟踪计算后保存为静态灯光信息;ILC 及Lightmap亮度支持高动态范围,VLM动态范围比较小;
● Reflection取决于反射源的亮度,颜色,动态,光质;
● 色温:所有灯光支持色温调整,线性空间计算。天光色温来自HDRI,拍摄时需要6500K;
● 质感:UE4支持面光源,光源尺寸(Source Radius),光源离散度或Diffusion(Soft Source Radius)调整,或应用相应 IES;方向光视口张角(Source Angel);
这里有个很重要但容易被忽略的概念即灯光品质(Quality of light)。在传统灯光设置中这取决于灯光对对象的包裹程度以及灯光方向的离散型;它决定了对象明暗过度的快慢,以及高光的柔和度。如下图在不同光质下对象明暗过度及高光清晰度的区别。
● IES光源描述文件应用:UE4 里可还原IES中对光源强度(方向)(Enable Use IES Intensity),衰减的描述;目前不支持色温和质感的描述还原。
● 其他光源:自发光材质作为光源在 Raytracing 或者 lightmass 下可以参与到实际的贡献中;材质亮度需要符合实际的亮度值;这个值可以通过测光得出,或者使用相应 HDRI。一般自发光光源参与灯光计算后结果品质相较于真实灯光组件低;除非自发光在背景上不建议作为光源使用。
不仅仅是灯光还有一个因素必须考虑就是摄像机。
明确我们两边对比的对象不是一边是人眼看真实世界,另一边是人眼看显示器上渲染结果;而是都是基于摄像机,而且都是在显示器上观看,即3D渲染图片和照相机拍摄图片,两者在显示器上的对比。因此就不得不涉及到摄像机的曝光、色温,以及Tonemapping。
真实虚拟摄像机都有以上三个因素。真实摄像机看到的是真实线性世界;虚拟摄像机看到的是虚拟线性世界;这里聊下UE4中摄像机这几个因素:
UE4中的摄像机在拍摄虚拟世界时会把32bit的虚拟线性世界通过Tonemapping映射到一个LDR的范围再呈现到显示器上;这个类似真实的照相机把真实线性世界通过Tonemapping后把Raw映射成JPG。
UE4中默认的曝光会把 SceneColor 高于65504的亮度截掉,为了更高的动态,需要对场景先做一次预曝光,把高于这个值的亮度Remap到16bit范围内,保留亮度的范围和层次信息
● Apply Pre-Exposure before writing to the scene color:对比开关前后的效果可以看到打开后对高光细节(太阳周围)的保留。一般 EV100 大于15开关此选项差别大。
● 如果需要使用引擎摄像机的自动曝光功能,对于超高动态的表现需要打开以下 Project Settings中选项。这可以扩展自动曝光可以适应的动态范围,如果关闭大于一定数值的亮度无法被自适应而导致曝光过度,一般情况下EV大于4之后会有这种问题出现(即使PP中自动曝光Max Brightness设置为很高比如20)。
以下两图是开关这个选项并打开HDR Visualize后亮度动态范围图标上的对比;可以看到关闭选项,信息超出EV4后出现丢失。
● 虚拟摄像机类似真实照相机支持白平衡调整,也是在线性空间计算。
下面以一个晴天作为例子来简单实践一下,具体可观看UE4中真实物理属性的灯光环境应用(二)。
,Unreal Engine技巧,Unreal Engine教程