需要曝光准确道理借鉴拍照,如果过曝或者欠曝或者曝光不稳定就无法准确评估对象亮度,色彩,对比,质感等。虽然道理显而易见,但在UE环境中经常被忽略,或者没有很好地被执行。在执行中需要实现两点,第一稳定,关闭自动曝光,启用手动曝光,并基于固定亮度曝光(EV100=0),为什么是EV0后面会提到;第二是准确,衡量准确的标准可参考摄影中灰板测光的道理,如何测光,测什么内容后面会提到。
PS:这里解释下EV100概念,为了容易理解,简单的说就是个描述场景绝对亮度的概念,值越大越亮。
具体操作设置如下
创建测光对象及环境:灰板材质Default lit;BaseColor=0.18(中灰线性值,sRGB是0.46); Specular=0(高光关闭为了不影响测光);关闭Pre Exposure(Project Settings设置,这是为了正确还原Final Color值);材质赋给灰板模型并放置于场景中,面朝上。关闭一些影响Final Color亮度的后期(Bloom,Vignette,SSAO,SSR,这些都是为了去除后期效果对测光的影响);以上设置提供了一个标准测光对象,及稳定测光环境。
固定曝光基准(EV100=0):关闭自动曝光,并固定曝光基准为EV100=0即把相机或后期的曝光调整到适配EV100=0的状态,参数如下
布置及调整灯光(动态方向光,天光/IBL);使用Pixel Inspector吸取灰板区域,查看Final Color数值,反复调整光源亮度,使得最终Final Color值为0.18左右。这里有个问题是测光吸取哪里;作为一个中灰的球,一般不吸最亮(法线冲着光源处),而是明暗过度中间区域(这里使用放置一个面朝上的中灰平板是近似替代方案)
如何布置调整灯光达到不同光比后面会有具体描述
为什么是EV100=0 这里可能注意到通过先固定相机的曝光基准为EV100=0,然后调整光线亮度来匹配它;而不是先打光,然后调整相机曝光匹配环境亮度;这样做的目的是确保环境亮度为EV100=0左右。理由是UE里很多情况下EV100=0是默认起点,最方便实现;比如HDRI做IBL,默认以EV100=0为基准;非PBR的材质开发环境也推荐在EV100=0亮度下进行。非PBR主要是包括自发光材质(比如特效),自定义非物理Shading Model,以及在PBR材质基础上任何有添加人为模拟效果的材质。这样做的目的是为了在复杂EV环境下可以使用Eye Adaption材质节点适应当前EV;因为Eye Adaption是以EV100=0为基础Bias的。以便创建兼顾PBR和非PBR材质统一预览环境
通常非PBR材质在不同亮度环境(如下是EV100=3&EV100=-3)表现差异大
使用EyeAdaption材质节点自动适应环境亮度,可保持恒定“观感”
预览环境需要覆盖一些代表性环境。产品中涉及到的室内,室外,白天,晚上都需要覆盖到不现实也无必要。不同环境对材质定义阶段意义关键来自光比,因此我认为可以把环境根据光比分高,中,低三类即可 。低对比软光环境有利于检查及准确还原贴图材质灰阶对比,明度,色彩;中光比环境除此还兼顾表现质感;高对比硬光环境有利质感表现,并作为特殊环境检查比较极端情况下的材质表现。
有的说是否需要也准备不同亮度的环境。我认为不需要,因为绝对亮度本身没有意义。但存在有些情况,需要材质在非准确曝光的环境下呈现,通过让曝光向左或右偏移产生理想的氛围,比如高调或低调。这种需求是实在的,但这并不会影响材质的创建的准确性,也就不必作为资产预览环境来对待;可以作为一个曝光补偿的选项开放
有说光色也很重要啊!当然是,但颜色千变万化,作为统一预览环境无法全数兼顾;另一方面因为颜色对材质贴图色彩定义影响极大,我们就只从中性(6500K)的光源开始。
光比的衡量是向光和背光部分之间的亮度比值;经过对真实图片的分析,我选择了以下几种光比分别对应真实世界阴天,多云,晴朗无云三种情况。
以下为线性空间下明暗面亮度差异,图片来自HDRIHaven
高反差16倍(4档)
中反差2.6倍(1.5档)
低反差1.65倍(0.7档)
由于目标是亮部达到0.18,根据光比参考推算出暗部目标亮度。又因为暗部仅仅受到环境光影响,因此先调节环境光(天光),同时监控阴影亮度值,直到达到暗部目标亮度;然后再调整直射光亮度,并同时监控亮部数值,直到达到0.18
可以把它作为地图存下来,很多项目也这么做的,地图里放置各种资产做统一检查,这种地图方式还可以把它存为Template地图方便新建地图时作为模板。另外也可以存成Preview Scene Settings的Profile,这样在任何材质,特效,模型编辑器中都可以快速调用预览。两者可同时存在,各有优缺点,作为地图,其中的光源可以非常丰富,比如三点布光,面光,也可以多资产比较查看。作为Preview Scene光源仅能为直射光和天光;另外缺少对灯光的精细调节;比如灯光的品质,阴影。
Preview Scene Settings Profile的创建和共享:勾选Shared Profile共享,并且记得同步项目目录下的Editor.ini
新建地图Template
DCC很多,先说结论:建议是搭建高效迭代流程,快速在UE里更新结果,取代对DCC预览效果的依赖。但还是分享下我观察下来一些区别(以Substance Painter为例)和近似方式。之前做过一次匹配,版本较早,需要自定义的Shader和基于ACES的LUT,还需要对Gamma做一些微调;Substance最新版本这块改进了不少,自带Shader和ACES Tonemapping基本就可以非常接近UE里的效果。不过这仅仅是IBL这块,直射光这块两者亮度单位不同,而且方向随机,变数较大。目前两者大概有以下差别
1. 光照差别
2. 曝光差别
3. Shader差别
4. 后期差别,包括Tonemapping
5. 贴图差别,如压缩,filter,mip等
以下是具体设置,供参考
Substance Painter:显示设置中使用和UE同样的HDRI,旋转270度(Environment Roatation 270);EV -0.45,打开Temporal AA;Shader设置中打开ACES Tonemapping;
UE里关闭Directional Light仅使用IBL,背景Environment Color 0.04;关闭Bloom,Vignette,AO,SSR;对比效果如下,两者有稍许区别,但已非常接近
这是SM5下默认渲染方式比较结果;ES3.1或者Real Time Raytracing渲染方式下以UE内为准,即上面提到的“搭建高效迭代流程,快速在UE里更新结果,取代对DCC预览效果的依赖”。UE有一些自动化功能,比如自动监测原始素材更新,自动导入更新等,有兴趣的可以了解下,这里不深入了。
文章中第三方基于ACES的LUT下载由于各种原因已经失效。
经过尝试使用以下设置基本就可以匹配两边的效果(
1、项目设置中设置OCIO做色彩管理,其他默认即可
2、激活Post Effects中曝光增加到1.45;
以上描述了具体的方案及执行细节;以此环境确认的资产(主要是材质),理论上在其他环境下也不会带来太多困扰。如果表现不佳,如对比,色彩,亮度,质感等问题可能就需要考虑从场景灯光,后期及曝光找问题,不要再去调材质了,也不建议不同环境多个材质实例“讨好”环境(指灯光气氛环境,非天气地理环境),这样做除了多出不少Shader外,还会掩盖主要问题
还有些常见的环境问题:比如光比大(缺少Ambient或丢失反射源),对比太强(LUT或Tonemapping调过于极端,通过渐变灰色板帮助检查);曝光不对(比如自动曝光在固有色明度比较极端情况下无法正确测光导致曝光失误);无法很好表现材质本身颜色,暗淡或偏色(灯光,白平衡色彩倾向过重导致贴图显色性低);质感表现不佳(反射源动态或对比过低)
补充说明: