|
先前在2019年9月的Unite哥本哈根大会上,Unity与雷克萨斯及其代理团队Team One展开合作,使用高清渲染管线(HDRP)展示了一款实时车型配置器,展现了Unity作为一种自带实景摄像机控制的写实影像制作工具所表现出的能力。
Unity位于英国的Spotlight团队在此项目中的主要职责是确保环境和光照的品质,让汽车能更真实地展现在最佳的光照下。
在本文中,我们将详细解释根据此类汽车场景如何设置HDRP,以及在Unity制作中,如何通过矫正光照和摄像机设置来实现既高清又精美的高端可视化内容。
软件和数据
这个展示项目使用Unity 2019.3早期版本和HDRP 7.1.x制作。汽车材质来自于Unity扩展库中的Measured Materials,该库提供了具有金属质感的逼真车辆涂漆着色器,而在环境中使用的是标准的HDRP Lit着色器。请注意:在本演示项目中,并没有使用HDRP的光线追踪功能,因为制作时该功能仍处于早期预览阶段。
项目中的精细车辆模型是由制造商提供的。而环境中高质量的阿美琳堡宫则是由外包商elite3d使用诸如Maya(主要用于资源导出)、3ds Max(硬表面建模)、Zbrush(在Domeble提供的扫描数据基础上进行雕刻)、Substance工具组(制作、绘制材质)和Marmoset Toolbag(烘焙)制作而成。最后,Unity的Spotlight团队为环境制作光效,为上百个汽车部件添加材质,优化图像品质。
和大多数其他车型配置器不同,我们的环境不是静态的天穹或背景板,而是建模出的完整3D庭院。车辆可以被放置在任何地方,光照和一天中的时间段也能随意更改。使用静态HDRI的主要短板就是由于天穹和背景板中景物都是固定的,光照和景物角度也是固定的。由此产生了诸如灵活性差、光照受限等问题,且车辆物体和镜头视角都不能远离最初景物摄制的地点。从下方动画中可以看出,完全由建模而成的环境拥有更大的灵活性。
HDRP设置
若不了解什么是高清渲染管线,请查看官方说明文件了解详情。其中的Volume Framework是控制HDRP效果的主要方式。
同时强烈建议大家看看“Window→Rendering Pipeline”中的HDRP Wizard,它能自动修正HDRP上如Color Space中的错误设置,因为如果使用Gama颜色空间而不是Linear颜色空间,会从根本上降低图像品质。
此外,在处理此类高配置需求场景时,本文所做的设置在高端PC以外的一般平台会出现帧率较低的问题。因此,若想在帧率100毫秒,分辨率1440p或4k分辨率的情况下仍有较好的工作表现,建议使用GTX 1080 TI或者更高配置的显卡。
渲染设置
首先,在“Edit→Project Settings→Quality”下找到“HDRP”进行品质设置,按下图修改设定:
- “R16G16B16A16”:在较大屏幕空间中展现的光照和体积雾上的渐变效果中,此类16浮点精度格式可减少不显要的色带产生,减少其产生的额外内存和带宽耗费。此外,建议在Camera的检视窗勾选Dithering来激活8位抖动选项,进一步减少色带。
- “Forward Only”:前向渲染通常比延迟渲染的画质要高。此外,迄今为止,前向渲染是唯一一个能快速使用更优阴影过滤技术的模式。关于阴影过滤将在下文讨论。
- “MSAA 2/4/8x”乘数:该选项会在项目中激活多重采样抗锯齿功能。乘数越高,图像越清晰,性能耗费越大。
同时在能够渲染场景的每种游戏对象类型上,即摄像机和反射探针上,我们需要手动在Frame Settingns(帧设定)中激活MSAA。在“Edit→Project Settings→HDRP Default Settings”的默认帧设定中,勾选“MSAA within Forward”为摄像机和各种反射添加效果。
在处理如合金表面、车辆喷漆表面这类具有高度反光性质的材质时,在反光上应用MSAA非常必要,任何可见的锯齿都会破坏帧的逼真写实效果。摄像机和反射探针各自的检视窗中使用的是不同的帧设定:比方说,我们可以为Baked Reflection Probes(烘焙反射探针)启用MSAA,而在Realtime Reflections Probes(实时反射探针)上禁用它,以降低性能消耗,转而使用一种更快的摄像机抗锯齿。
临时性抗锯齿(TAA)
当出现无位置信息的锯齿时,比如镜面光照、纹理或透明效果中的锯齿,MSAA将无法去除这些锯齿,这时TAA就派上用场了。鉴于TAA与MSAA 4x或8x相比有更高的质量和更少的功耗,在部分情况下,TAA甚至可以单独承担摄像机的抗锯齿。然而,由于此方法的临时性,它依赖之前帧的数据和运动矢量(Motion Vector),在处理快速运动的镜头和对象时,TAA可能会产生额外的重像,还会稍微柔化图像。幸而我们能在HDRP的摄像机组件中进行TAA图像锐度控制。
若想在场景视图中也使用TAA,可在“Edit→Preferences→HD Render Pipeline→Scene View Anti-Aliasing”中勾选该功能,然后在场景视图工具栏中激活“Animated Materials”。
纹理过滤
另一个需要考虑的重要因素是纹理的过滤。最佳的可行过滤效果为“各向异性过滤”,可以通过“Edit→Project Settings→Quality→Anisotropic Textures”强制应用到全局。该功能可以确保表面与视线近乎平行,通常是地面和路面材质,在中等及更远距离上保持较高的清晰度,同时在现代高端GPU上几乎没有对性能的影响。
光照设置
在HDRP品质设置中的光照设置部分,建议启用如下选项,以最大化光照渲染的质量,或让工作流更加顺畅。
光照层(Light Layers)
光照层(Light Layers)允许我们控制场景中的光照和反射探针所影响的对象。换句话来说,我们可以选择性地在模型的各部分应用起不同的光照和反射效果,大幅简化整个设置。比如,我可以使用它在轮胎和轮拱(轮胎上方的拱形)上制作出正确的反射效果,同时防止车主体产生不必要的黑色反射。步骤如下:
1、在每个轮内侧挡泥板下放置一个反射探针,调整volume控制其会影响的空间。
2、在探针的检视窗中,将四个探针指定到“Light Layer 1”。
3、将“Light Layer 1”添加到影响车轮和内测挡泥板的列表中。
成果:车轮和内侧挡泥板现在正确接收到了更暗的反射效果,而车辆主体并没有受影响,依旧被其它外部反射探针照亮。
在汽车许多其它部分中,我也使用了此工作流:
- 防止车内光照和反射探针渗透到外部车体,或防止外部影响到内部;
- 将平面反射探针限制在镜面几何形上;
- 在不影响整个车体的前提下,为车前灯和尾灯的反光体和灯罩制作出逼真的反射效果;
- 为如前格栅一类的标志性金属部件添加反射探针。
在处理复杂形状时,我们再也不用(起码能够更少地)去调整反射探针的Blend Distance(混合距离)的边界了!此方法唯一的小缺点是需要将模型分成几个不同的游戏对象。
阴影过滤
若想制作出逼真的图像,另一个需要考虑的因素是阴影的品质和半影(penumbra)的模拟。幸而,HDRP在此方面非常出色。在HDRP的品质设置中,我们可以选择“High(高)”Filtering Quality(过滤品质),增加最大阴影分辨率,以适应不同类型的光照(如定向性光照,点光和聚光灯这类精确光照和区域光源)。
在实时图形中,通常会有一个误解,就是更清晰的阴影代表着更高的品质,因为如果没有额外应用模糊效果,更高分辨率的阴影贴图会产出更清晰的阴影。但事实上,阴影从源头投射出来的距离越远,阴影会越模糊。总体来说,阴影其实要比大多数人以为的更为模糊一点。HDRP可以在高清晰度下模拟出阴影模糊效果:离源头较远的阴影会非常模糊,而较近的阴影会依旧清晰。
在下方示例中,宫殿前部广场中心的雕像影子在投射到较远位置后,会出现真实的模糊效果。同时从车投来的影子依旧清晰,车的阴影也会随着距离的增加而逐渐模糊。
我们可以在光照检视窗的shadow(阴影)部分控制过滤品质。此外,HDRP还有Angular Diameter(定向光源)和Radius(点光源和聚光灯)的选项,可以模拟大型发光形状。我们可以通过改变物理形状来控制阴影的模糊度和镜面高光效果:发光源的体积越大,其阴影和镜面高光效果也就越模糊。
如果场景中出现了一行行的瑕疵(阴影失真),增加Slope-Scale Depth Bias(坡度尺深度偏差)的值,让多面体的背光面上有更高的偏差值。而多余的阴影看起来会“沉”到表面之下。将近平面推向光源,减少光照距离可以产生更为精确的阴影,不多此类方法并不总是适用。
接触阴影
Contact shadows(接触阴影)非常适合处理定向性阴影贴图在远处表面上分辨率过低的问题。不论是定向光照或精确光照,不论摄像机距离的远近,接触阴影可以大幅提高地面细节部分的自投影品质。宫殿前部使用此功能的受益较大:在外饰、窗台、岗亭和窗户上的阴影显得非常真实。
然而和其他屏幕图像技术一样,不位于屏幕中的地形、透明的材料、隐藏在不透明物体后的对象不会产生任何接触阴影,因为这些对象的数据并没有存储在屏幕空间深度缓存中。这可能导致接触阴影中出现许多的“洞”,同时在一帧画面的边缘并不会有阴影效果。总的来说,如果图像使用了此种效果来提高品质,尤其是加入了中距和长距阴影,则效果中会不可避免地出现这些缺陷。
光照设定
首先,建议各位使用ACES tonemapping(色调映射)从最初就加入电影级的光照。当然,在后期阶段,通常是在设置光照通道后,我们还需要使用如下几个Volume Overrides(体积覆写)来实现最终图片的颜色分级:
- Color Adjustments(颜色调整)
- Lift Gamma Gain
- White Balance(白平衡)
后者在为太阳、月亮和人工光源添加基于物理的色温时尤其重要,它可以产出人脑加工后的颜色效果,自动或手动调整摄像机的白平衡。比如,在3000 K灯具产生的白炽光如果不经修正,会有一种强烈的橘色光圈。白平衡同时也可以用在许多艺术性创作中;但是高端可视化图像的颜色重现必须要认真对待,在处理汽车喷漆时不能有半点瑕疵。
环境光照
在本演示项目中,所有元素都是动态的,时间和车的位置都可以被改变。为此,我们使用一张multiplier为10000lux的阴天的HDRI天空,通过烘焙(Indirect Only)在阿美琳堡宫的凹陷部分制作出了剔除效果。
随后,加入了一个Indirect Light Controller(间接光照调节器)来轻松调节尤其是低光照条件下烘焙间接光照的强度。得以建立起一个基于物理的光照布景,可以将方向性光照强度在1lux(月光)到100000lux(强烈的日光)之间调节。
最后,加入了Volumetric Fog(体积雾)来制作更好的景深效果:每种光线,尤其是黄昏时的光线,都可以影响到体积雾,产生非常漂亮的效果。在街灯的处理上,我使用了此前发布的Unity专家级指南中的Cookie烘焙技术,确保发光对象能有完美的自阴影效果。
得益于Unity泛用的GPU Progressive Lightmapper(PLM;GPU渐进式光照贴图器),和Nvidia及Intel最近加入的机器学习图像降噪技术,整个庭院可以使用一张GeForce RTX 2080 TI在30秒内烘焙完成。而下方的设置可以为整个庭院制作出一种天空光遮蔽烘焙(sky-occlusion bake)效果:
- 每米5纹素的分辨率
- 2条弹射光线
- 未添加环境光遮蔽
- Nvidia Optix人工智能加速降噪器
环境光遮蔽
另一个重要的效果是包括屏幕空间或光线追踪技术中的环境光遮蔽(Ambient Occlusion;AO):该功能会模拟场景凹陷部分的微量光遮蔽效果。如果先前没有用外部方案烘焙AO,屏幕空间和光线追踪两种实时烘焙技术可以极大地改善氛围光照的品质,此类效果在车内最佳,并且两种方案可以有效地减少反射光侧漏。请注意,过高的效果强度会导致局部颜色对比过大,导致出现一种光晕效果,所生成的外观也会变得卡通。
在实时屏幕空间环境光遮蔽效果中,由于其在距离较近时并不能产出高质量的图像,而车厢底部通常都不在屏幕空间内,在处理车底黑暗部分时,我们依旧需要一个专门的阴影平面,来实现最佳效果。此类遮蔽效果可使用一个DCC包来烘焙,产出的纹理可通过两种不同的方法应用到Unity中:
- 将纹理添加到一个使用HDRP无光照着色器的平面上。
- 将纹理添加到一个使用HDRP贴花着色器的Decal Projector(贴花投影)中。
使用贴花效果的一个优点是纹理可以正确地投射到一个不平整的表面上,即便在表面中使用了诸如错位贴图(将像素向下方偏移)这样的先进贴图技术;而无光照平面在查看像素时看上去像是漂浮着一样。在车底布置一个反射探针也可以防止多余的反射漏光到路面和车底。
摄像机设置
HDRP的Physical Camera(物理摄像机)控制可以模拟许多真实镜头的特性,包括如下关键特性:
- 焦距
- 光圈
- 感光度(ISO)
- 快门速度
- 叶片数
- 变形镜头
- 桶形畸变
我们可以选择将这些属性应用在景深(DoF)和曝光率上。HDRP的另一个优点是我们可以轻易将曝光率从物理摄像机设定中分离出来,在保持DoF真实度的前提下,在光照和曝光率上有更多的自由。
HDRP同时还提供手动调整DoF对焦的功能,可以调整不基于物理的近焦和远焦模糊距离。不过,建议使用物理相机(Use Physical Camera)模式,以模仿现实中的汽车影像。传统的摄影方法和镜头组合起来才有可能制作出令人信服的影像。例如,超广角镜头只能在如动作镜头这类的情境下使用,因为镜头在近距离摄制对象时会产生透视形变。并且过浅的景深会破坏层次感,让图像看起来不真实,更像视频游戏。此外,我们还能将摄像机的视场和焦距组合起来,利用两种参数成反比的特征,防止出现同时使用宽视场和远焦距时产生的不真实景深。
如果对摄影艺术不够了解,这些摄像机知识可能需要一些时间才能消化。不过,学习摄像机和摄影的技术知识可以帮助我们创作出更好、更有趣的图像和影像构图。即使没有接受过艺术审美方面的训练和学习,我们也能更容易地临摹市场上现有的许多材料。
透明效果
在实时3D中,正确地渲染透明效果依旧是一个难题,因为此类材质通常需要在单独的着色通道中处理,本身一般不带深度信息,导致透明表面的排序会较为棘手,并且透明像素通常会继承位于后方不透明对象的深度信息。这些特点使其在与景深组合使用会出现问题,本应在焦距上的透明物体会变得和失焦的背景一样模糊。
幸好,HDRP有一些隐藏杀手锏:在HDRP光照着色器材质的监视器中,我们有几种不同的表面选项,包括能防止普通图像处理产生的排序瑕疵的“Render Back then Front(从后到前渲染)”,能避免出现后期处理效果图像Bug的“Transparent Depth Postpass(透明深度后通道)。我们甚至能在Unity中手动为对象排序。
下方是一个最为棘手的场景,其中既有过浅的景深,头灯和尾灯上又有好几层玻璃。如果没有透明深度后通道,部分灯罩会延用建筑和道路的深度信息,其模糊度也会与这些背景对象相同,如此高的模糊度会导致部分玻璃材质近乎“消失”在背景中。幸而透明深度后通道和更为关键的Write Depth(写入深度)功能可以解决这个问题。
但是,另一个较大的渲染问题依旧存在:透过头光和尾光灯罩看见的建筑和道路部分会出现在焦距中,这些属于背景的部分并不会模糊。可惜的是,该问题在游戏引擎中并没有非常好的解决方法,不光是Unity,任何使用单深度缓存的渲染管线都会有这个问题。
小结
HDRP是一种非常灵活的渲染管线,可支持主流主机到高端工作站的所有设备。然而,灵活性也意味着管线有大量的设置和参数需要手动调整,才能找到满足项目要求的效果。希望在阅读本指南后,各位能对使用HDRP制作高端可视化图像有更好的理解,能知晓如何大幅提升汽车、AEC、电影甚至是下一世代游戏的图像质量。
最后,HDRP中的光线追踪功能一直在进步,实时和离线渲染之间的差距也在逐渐缩小,许多传统的屏幕空间和基于图片的技术可能不久就会成为过去式,至少在高端实时应用中应是如此。当然,这些“古旧”的技术在发挥到极限时,依旧能轻易博取主流大众的眼球。
来源:Unity官方平台
原地址:https://mp.weixin.qq.com/s/SVqiklklMZPO68xh5I-Qyw
|
|