查看原文
其他

关于建立资产统一审查预览环境的一些说明

李文磊 虚幻引擎 2022-08-31


碰到过多次有开发人员问到我在怎么样的环境下去检查制作资产,比如灯光数值要多大,是否要符合真实物理灯光参数等等。即使没问到,但观察下来事实也没做好(或者没意识到),所以觉得有必要提出来做个说明,并附带一个工程项目供参考。

工程项目下载链接:https://share.weiyun.com/VmnYENfQ


首先我认为有个误解是把灯光数值物理真实性和材质表现准确性绑在一起,它们没啥直接关系。比方太阳光亮度100000lux和3.14lux对材质贴图定义准确性没直接影响;只要曝光合适都可以,就如同真实相机可以自动适应各种亮度环境那样,一个合适的曝光组合(光圈,快门,ISO)总能让照片最终亮度讨好人眼。所以这个环境关键一是
曝光合适;另外一点是光比光比对表现结构,纹理细节,质感等有影响。这块倒是可以借鉴自然界的光比来做,我个人建议高、中、低三种光比即可;不同光比对检查资产各有意义,后面具体论述。


下面具体来说。解决一个问题一般分三阶段:举问题,列需求,找方案;这样比较系统全面,不容易遗漏或过程中偏离方向。


举问题:比如材质照不亮,过曝,材质多,不同人或设备看到差异化,反复迭代,品质不统一等等。


列需求:

  • 需要一个固定统一环境制作检查资产,能精确地表现美术师初衷效果(亮度,色彩,对比,质感)。资产,主要是贴图材质在任何灯光环境下都表现良好;

  • 在不同的机器上表现一致;比如美术总监或Lead查看时和美术师(内部或外包)看到一致;

  • DCC环境同步;比如Sebstance Painter和UE之间的预览同步。


找方案:营造这个环境不仅仅只涉及灯光,还包括曝光,Tonemapping等。后期部分较简单,全部默认;另外为准确测光暂时关闭一些屏幕特效(具体看后面),打完光后可以再开启增加效果。


  • 准确曝光的环境

需要曝光准确道理借鉴拍照,如果过曝或者欠曝或者曝光不稳定就无法准确评估对象亮度,色彩,对比,质感等。虽然道理显而易见,但在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一致的预览环境

DCC很多,先说结论:建议是搭建高效迭代流程,快速在UE里更新结果,取代对DCC预览效果的依赖。但还是分享下我观察下来一些区别(以Substance Painter为例)和近似方式。之前做过一次匹配,版本较早,需要自定义的Shader和基于ACES的LUT,还需要对Gamma做一些微调;Substance最新版本这块改进了不少,自带Shader和ACES Tonemapping基本就可以非常接近UE里的效果。不过这仅仅是IBL这块,直射光这块两者亮度单位不同,而且方向随机,变数较大。目前两者大概有以下差别:
  • 光照差别

  • 曝光差别

  • Shader差别

  • 后期差别,包括Tonemapping

  • 贴图差别,如压缩,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有一些自动化功能,比如自动监测原始素材更新,自动导入更新等,有兴趣的可以了解下,这里不深入了。
 
以上描述了具体的方案及执行细节;以此环境确认的资产(主要是材质),理论上在其他环境下也不会带来太多困扰。如果表现不佳,如对比,色彩,亮度,质感等问题可能就需要考虑从场景灯光,后期及曝光找问题,不要再去调材质了,也不建议不同环境多个材质实例“讨好”环境(指灯光气氛环境,非天气地理环境),这样做除了多出不少Shader外,还会掩盖主要问题。

还有些常见的环境问题:比如光比大(缺少Ambient或丢失反射源),对比太强(LUT或Tonemapping调过于极端,通过渐变灰色板帮助检查);曝光不对(比如自动曝光在固有色明度比较极端情况下无法正确测光导致曝光失误);无法很好表现材质本身颜色,暗淡或偏色(灯光,白平衡色彩倾向过重导致贴图显色性低);质感表现不佳(反射源动态或对比过低)。

补充说明:
  • 关于4.25以后自动曝光默认Exposure Compensation +1的问题:这个+1的曝光补偿个人认为在大多情况讨好在明亮观察环境下的视觉体验(比如办公室显示器),但不符合18%反射率基准测光亮度(Studio监视或影院观影环境),过曝还会降低对比及色彩饱和度。当然这个+1的默认参数可以在Project Settings里修改。


  • 关于中灰0.18:RGB空间通常无法精确表达亮度,因此sRGB的0.5(或128.128.128)并非中灰。亮度在电脑上一般以Lab空间的L值更准确反映人眼对灰度的感受。Lab的0.5/sRGB的0.46(或119.119.199)/Linear的0.18才是通常sRGB显示器下看到的中灰。UE中的自动曝光也是以线性0.18为基准的。


  • HDRI的直接光源处理:直接光源部分是否需要处理掉?这取决于项目具体情况。游戏主要是手游就需要处理掉,之后用灯光对象来替代。这样做的目的是能产生阴影,并且能在不同平台的预览环境下尽量一致。虽然IBL也能在SM5下产生距离场等投影,但品质较差,并且不具有跨平台性。如果是做影视动画目的,HDRI上的直接光源可以不处理掉,完全使用HDRI照明即可。因为平台单一,追求高品质,使用实时Ray Tracing来投影,那样的投影具有半影效果,光线反射也更精准。


  • HDRI的默认曝光处理:就是制作时包围曝光中间那帧的亮度。这个亮度影响导入UE后作为背景贴图时的亮度以及它本身作为IBL带来的照度。目标是把这个亮度处理成作为背景亮度合适,更重要的是作为光源让测光对象区域能够保持在EV0左右。避免通过在材质或者天光intensity中调整数值来达到同样结果。目前网上下载的HDRI资源很大部分这块不是非常精准,需要后期微调一下,比如PS中通过曝光调整Bias一些即可,这是一个反复在UE和PS中调整校验的过程。


  • 预览环境是否需要让对象look nice?比如三点光,轮廓光,各种补光创造最佳表现,甚至艺术化。个人觉得基于这个环境的初衷而言没有必要,可能还有引起困扰。 


项目地图说明:项目为参考预览环境,提供了三种光比类型;为减少视觉上干扰,背景定义了灰(灰度=灰板暗部亮度);IBL光源统一来自于一张默认EPIC总部HDRI(黑白处理,并抹掉了太阳);直接光为一盏动态Directional Light(光质根据光比环境被调整适配过)。
  • 选择地图中AssetsPreview_BP Actor调整其中Lighting Scenarios参数切换不同的环境;目前有高,中,低对比三种环境。三种环境对比强度可以用Pixel Inspector工具吸取灰板光照下和阴影中的Final Color(Linear)值比较差距。

  • 无论哪个环境EV100始终为0;AssetsPreview_BP中三种环境下直射光和天光的数值不用太在意,确定这些值的依据是确保环境EV100=0以及光比符合预期。

  • Exposure Compensation参数是用来检查在高调或低调环境材质表现。准确曝光保持默认0即可;+1和引擎自动曝光亮度接近。

  • 火堆自发光材质(非PBR)使用Eye Adaption材质节点为适应在不同光照EV条件下保持人眼感受的一致性。

  • 渐变灰贴图值为sRGB空间下38-238(为经验值),自然界绝大部分材质固有色都在这个范围内。制作资产时需要注意,超出范围易引起死黑和过曝。

  • 灰板材质为中灰值0.46或119.119.119(sRGB)或0.18(Linear);为精确测光去除了Specular。

  • 三种环境也被存为三个Preview Scene Settings中Profiles,方便资产编辑器中预览。

  • Realtime RayTracing 参数是基于项目已经打开Real Time Ray Tracing前提下的开关。


引擎版本4.26.1


近期焦点
虚幻引擎4.26正式发布!
精选免费商城内容 - 2021年3月
虚幻在线学习中文配音课程上线
Moment Factory联手Epic推出DMX示例项目
MetaHuman Creator前瞻:轻松创作高保真数字人类

扫描下方二维码,关注后点击菜单栏按钮“更多内容”并选择“联系我们”获得更多虚幻引擎的授权合作方式和技术支持;选择“招聘”,即可了解最新招聘信息。

长按屏幕选择“识别二维码”关注虚幻引擎
“虚幻引擎”微信公众账号是Epic Games旗下Unreal Engine的中文官方微信频道,在这里我们与大家一起分享关于虚幻引擎的开发经验与最新活动。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存