UELookdevDoc

前言:本文中对很多概念做了简化处理,并隐去了一些专业知识,一些概念和解释更偏艺术家的习惯而非正确。一方面为了方便大家理解且防止文章变的又臭又长,一方面是因为作者知识面实在有限。如有错误,欢迎纠正。想要了解更为准确详细的知识的话,可以阅读相关的论文或者文中的参考资料。感谢。

0:色彩管理

0-0.色彩管理

色彩管理是CG渲染相关的最重要的内容之一,如果不解决色彩管理的内容,就没办法讨论渲染。在这里推荐chrisbrejon关于色彩管理相关的精彩文章:第 1 章:色彩管理 - 克里斯·布雷洪 (chrisbrejon.com)。一个良好的色彩管理(不仅仅包含软件管理,也有硬件管理)能够让流程上所有的环节(资产、特效、纹理、灯光、合成等等)在不同的软件中能够看到相同的东西(当然,还有观众 )。“一致性”是关键。

0-1.线性工作流

线性工作流是一个很容易被搞乱的概念,而且本质上并不存在“线性空间”这种东西。简单来说线性工作流是将所有输入的数据校正为线性,再在工作空间中进行正确的数学计算、渲染。输出的图像经过光电传递函数进行编码,再经过显示设备(手机、显示器、电视等等)通过电光传递函数解码之后显示(显示器会具有gamma校正功能是因为显示器的光强度并不随电压线性变化)。通常来说,显示器最后显示出来的色彩是线性的(与自然界相同)。这部分可以看substance官方的PBR指南最后的部分:The PBR Guide - Part 1 (adobe.com)

Untitled

当然,现代对于渲染流程的优化已经很强了,基本上有关的软件都已经将流程优化成了傻瓜操作,不需要怎么了解相关知识,也可以进行制作。这里推荐韩世麟的视频:Gamma校正与线性工作流入门讲解_哔哩哔哩_bilibili和一篇知乎文章:Gamma矫正和色彩管理 - 知乎 (zhihu.com)。可以辩证的去看待这个问题。在UE或者maya这些软件中,一般将颜色贴图的色彩空间选为sRGB(某些项目流程可能会有不同,此时要按照该项目流程规范走)。其它的如法线、粗糙度等贴图色彩空间为raw(UE中为取消勾选sRGB)。

0-2.色彩空间

如下图所示,类似马蹄形状的图为CIE协会于1931年定义的色度图(1976年CIE有进行一次改进),是人眼可感知的所有色度的可视化。

Untitled

色彩空间如其名,是颜色的空间。因为我们的工作大都展现在显示器、屏幕上,而这些设备一般都是用RGB模型,所以现在我们只讨论RGB色彩空间。

RGB色彩空间由三个组件定义:

原色:即此色彩空间的三原色在CIE图上的坐标

白点:此色彩空间内设定为白色的点,用开尔文或者色度表示

传递函数:OETF(光电传输函数)和EOTF(电光传输函数)

对我们CG领域相关的工作人员来说,色彩空间中很重要的一点是不同的显示设备支持的色彩空间各不相同。

屏幕制造商和各专业领域已经就一些标准达成了一致。也促成了不同的色彩空间,对我们来说最重要的五个是:

1.sRGB用于互联网,相机照片等。

2.Rec.709具有与sRGB相同的色域,但是在传递函数方面有所不同,因为它的目标用途是应该在昏暗环境中观看的视频。

3.DCI-P3用于电影放映,Apple最近一直在力推与之近似的Display-P3。

4.Rec.2020,也叫UHD TV,整体能够覆盖P3。现在的几个HDR格式的技术极限都是Rec.2020.

5.Adobe RGB 面向出版物的色彩空间,基本完全覆盖sRGB,但是因为出版物使用CMYK色彩模型,因此和P3有所区别。

到现在电脑显示器使用最多的色彩空间是sRGB。关于一些数码相关的色彩空间知识可以看这篇文章:HDR、动态范围、色彩空间, 这些名词代表什么? - 知乎 (zhihu.com)

所以理论上来说,在越大的色彩空间中工作越好,因为输出的结果能够用于更多的不同标准的显示设备上。

但是此时还有一个问题需要解决,即渲染出的图像是HDR(高动态范围),直接将其显示在显示器上,一般都会出现很多问题,如对比度很低,高于色域的色彩被截断,且中灰色错误等等。为了解决这个问题,则需要用到色调映射(Tone Mapping)。

Untitled

0-3.色调映射(Tone Mapping)

色调映射是一种将高动态范围图像映射到低动态范围的数字图像处理技术。能够有效解决上文中提到的显示问题。(也存在反向色调映射,能够拓展亮度范围,将SDR视频升级到HDR)

色调映射中用到的一些算法被烘焙到查找表(LUT) 中,我们可以按照使用习惯将LUT分为三类:

1.颜色管理类LUT:校正不同显示设备之间的色差

2.技术LUT:转换色彩空间

3.艺术LUT:可以理解为一种调色的滤镜

参考资料:色调映射 - 维基百科 (wikipedia.org) 调色名词浅析——LUT - 知乎 (zhihu.com)

0-4.OCIO(OPENCOLORIO)

OCIO是一个用于配置和应用颜色转换的开源框架,它能够帮助我们轻松的设置色彩管理工作流程,是在不同程序之间共享LUT的最简单的方法。(只要大家都用同一个OCIO,就能够很轻松的保证不同软件之间的色彩统一)

在后续的LookDev节中中,我们会了解到,除了HDR,OCIO和LUT也会很大的影响到外观开发的一致性。

0.5:ACES

0.5.1.ACES

有关于ACES相关的知识,强烈推荐chrisbrejon的另一篇文章:第 1.5 章:学院色彩编码系统 (ACES) - 克里斯·布雷洪 (chrisbrejon.com)与Redshift对于ACES的文档:色彩管理 - OCIO ACES (maxon.net)

ACES的中文全称是学院颜色编码系统(不仅仅是一个色彩空间或者一个色调映射这么简单!!!)它的优势在于,给影片制作的全部流程都提供了一个统一的色彩管理,(拍摄,制作,储存,放映等等等等)让各个环节的参与者以更简单的方式统一色彩管理。它的特点有:

  • 超光色域(非物理上可实现的原色)
  • 线性
  • 高动态范围
  • 标准化
  • RGB

但它也不是完美的,特别是在输出转换这部分,所以大家还是要靠自己的技能、理解和眼睛来进行自己的判断。

0.5.2.ACES工作流

如下图

Untitled

IDT是将纹理/图像/渲染导入/转换为ACESCG色彩空间

ACESCG是工作空间(ACESCG是ACES众多色彩空间中的其中一个)

RRT+ODT是输出转换

ACES背后的想法是处理任何颜色转化,何种色域的纹理或者图像,何种色域的显示器都能有对应的颜色转换

0.5.3.ACES色彩空间

ACES有五个色彩空间:

Untitled

截取自chrisbrejon的博客


ACES2065-1是一个极大的色彩空间,囊括了所有CIE色度图的人眼可见区域,它是一个用于存档和色彩交换中转(如ACEScc转到sRGB,则会先转到ACES2065-1,然后再转到sRGB)的色彩空间,而不能用于渲染(因为它太大了,会导致有负值,并且结果并不自然)。

ACESCG是一个对艺术家友好的色彩空间,因为即使是最饱和的ASCECG颜色依然也是“真实的”。

其他的三个色彩空间我们日常工作中基本不会用到,有兴趣可以google相关资料。

0.5.4.ACESCG工作空间

ACESCG色域比线性sRGB更大,渲染结果更贴近于光谱渲染。但并不一定更“好”(网上流传的使用ACES渲染亮度越高饱和度越低,对比度更好等等这些是ACES 1.0 SDR-video这个ODT带来的)。

并且使用了ACESCG去渲染并不能显示更饱和的颜色,因为你的显示器的色域是固定的(除非更换色域更广的显示器)。

在ACESCG中和线性sRGB中渲染出来的结果并不相同,特别在纯色部分。原因是因为sRGB的纯色,在ACESCG中,就不再是纯色了。

Untitled

0.5.5.ACES的利与弊

ACES能够带来更加真实(光谱)的效果,并且他们的ACES 1.0 SDR-Video被人为调整过,显示出更强的电影感。并且启用ACES可以让流程上的所有环节统一色彩关系。

但ACES同时也会带来一些问题,如色相偏移和色域剪切:

Untitled

Untitled

Untitled

Untitled

Untitled

因此在实际工作中选用什么色彩空间去渲染,需要仔细考量(UE现在默认在线性sRGB空间中渲染,并通过一个与ACES近似的色调映射器来显示,在后期盒子中能够关闭此色调映射来获取sRGB显示)。

Untitled

1:LookDev

1.1.LookDev定义

LookDev全称为Look Development。在不同公司有不同的工作职责,大概可能有:画贴图、调材质、打灯光、刷毛发、刷草仔、图形开发等等等等。

本文只针对外观统一做讨论。具体会包含上文中的色彩管理(色彩空间、LUT等的统一)、Light Rig选择、物理相机、以及流程中的软件外观统一这几部分。

1.2.LookDev作用

定义一个外观开发的标准是非常重要的,首先它能够让不同环节的艺术家得到相同的色彩结果,其次在标准环境下我们也能检查外观是否“准确”,或者能否达到质量要求。能够避免流程中的来回调试,猜测,修改。也能够在不同环节中划清楚范围,更容易定位到是哪里出现了问题。(应该没有人想辛辛苦苦做的材质或者效果到后续环节中完全不能用吧?)

1.3.LookDev Rig

LookDev Rig通常会包括标准色卡,Light Rig、灰球、铬球、场景环境或HDR背景、比例参考道具等。

1.4.为什么需要LookDev Rig?

标准色卡和灰球、铬球可以帮助您理解灯光环境的状况(对比度、色倾向等)。比例参考道具可以帮助您理解尺寸与如次表面散射之类与尺寸有关的材质的关系。并且一个真实可信的环境能够增加Lookdev的真实度。

1.5.拓展:PBR

PBR是如今最主流的CG渲染理论,它是基于物理且易用的。能够统一外观,且以现实世界为标准去衡量制作内容的“准确性”。

具体的文档可以查看substance的文档:

The PBR Guide - Part 1 on Substance 3D Tutorials

PBR的核心思想是基于物理去渲染,物理的灯光,物理的材质,物理的相机等等。

不过,现在的渲染器其实并没达到那么“物理”,毕竟我们只是在虚拟世界中模拟现实而已。

2:Light Rig

2.1.HDRI或者默认灯光?

离线流程中,HDRI是非常有用的,它能够提供高动态的,高细节的写实光照,并充当背景。但是在UE中,纯HDRI照明存在诸多限制,如毛发材质渲染错误,SSS材质受限等多种问题。

而我们现在使用的工作流是以UE为核心,所以Lookdev Rig也应当以UE为核心去搭建。故此我们选择使用UE默认灯光(矩形光、平行光、点光等)去制作Light Rig。

2.2.布光思路-主环境

通用性的LookDev环境以效果为主,因此我们做了一个类似于伦勃朗光的光照环境。

针对项目的话则可以由该项目的灯光组出对应的Light Rig来检查照明。

伦勃朗光最为人熟知的特点是会在一侧脸颊投下一块三角形的光斑。

Untitled

为了能够最大限度的匹配不同的角色,以及较为均匀的照亮全身。我们使用了较大的矩形光在较远的距离进行照明(当然也可以用蓝图灯光+target的方式来对齐)。

主光是在左上方的矩形光,主要是在另一侧脸颊投下三角形的阴影,照在鼻梁上的灯光也能很好的检测鼻子的SSS是否正确。并于主光下方摆放了一盏角度相同的灯来照亮腿部,消除脸上的法令纹痕迹。在右侧摆放一盏较大的补光以照亮右侧,并降低光的对比度。在后上方摆放了一盏光来充当边缘光照亮头发和观察耳朵SSS效果。

2.3.布光思路-辅助照明环境

辅助照明环境是在UE商城购买的光照套件的基础上,进行了优化。包括Loop、环形光、三点光蝴蝶光等等常见的摄影布光。详见:

常见的摄影布光法可以参考这篇文章:十二种基本布光方式介绍及应用-数码摄影网 (sheying5.com)

辅助照明环境的主要思路是在达到灯光效果的基础上,保证光照面是中性的,且大部分照明经过补光来降低光比。

2.4.布光思路-简单照明环境

简单照明环境主要由一盏3.14lux的平行光照明,可以较为自由的调节光照角度,并通过间接照明来达成补光。

因为UE中的某些灯光并不支持一些高级材质效果,如各向异性等。平行光能够有效的避免各种问题,且一般都是日光或者室外光的起点。所以通过平行光来检查外观是很有必要的。

2.5.多软件统一照明

相比于HDRI的照明方式,使用引擎中的灯光在提升效果的同时,也带来了一些问题,比如使用HDRI非常好达成的“多软件统一照明”。在资产制作流程中,需要使用多种软件进行制作,而SP(如今的PT)、Maya、UE三方的效果如何统一就成了一个难题。

受助于ACES色彩管理与PBR流程标准。我们能够在不同的软件中达成近似的照明、色彩 与PBR材质表现效果。

而这个过程中就需要一些物理灯光、物理相机的理论知识。

2.6.物理灯光

关于UE中的物理灯光可以参考九猫的这篇文章:Shader学习 (21) 物理光照的概念 - 知乎 (zhihu.com)和日天的这个专栏:虚幻引擎物理灯光 - 知乎 (zhihu.com)

基本来说,与灯相关的参数有四个:

光强:单位是cd,只考虑灯光自身的强度(不考虑灯光散发的光随着距离衰减之类的事情),一只蜡烛燃烧的发光强度约为1cd。

光通量:单位是lm,一个强度为1坎德拉(cd)的光源在每立体角(sr)均匀辐射出的光照总量为1流明(lm)。在自身的光强之外,考虑了光的方向。如聚光灯和点光源的光强都是8cd,那么点光源的光通量(32πlm)应该大于聚光灯,因为点光源向所有方向发射了光线,而聚光灯不是。

光照度:单位是lux,表示物体单位面积上接受到的可见光的能量。被光线均匀照射的物体在1平方米的面积上所得的光通量为1lm时 ,它的照度为1lux。与距离有关,离灯越近,表面的照度越强,因为离灯近了接受的光也多了。(日光除外,太阳离地表太远了,可以视为一个理想光)

亮度:单位是cd/m²,旧称为nit-尼特。就是物体表面的亮度,被人眼或者摄像机看到的亮度,不管它是自身发光还是反射别的光。

Untitled

UE中的光照单位和换算关系可以参考官方文档:使用虚幻引擎中的物理光照单位 |虚幻引擎5.1文档 (unrealengine.com)

和UE单位相关需要注意的点有一个是如聚光灯这样的光源,光照单位是cd时,改变它的张角,其实会随之改变光通量,视觉上的亮度是不会变的。而如果使用lm,则亮度会随着张角的变化而变化。

Untitled

Untitled

Untitled

Untitled

2.7.日光与室外光比

关于如何制作中性环境,可以参照现实中的测光方法,让0.18的中灰卡被照亮的部分为视觉中灰。对此官方给出的建议是ev100=0,平行光强度为3.14lux。

关于EV与灯光的关系,我们下面再讨论。

关于太阳光有多亮,室外光有多量,可以参考nnnd大佬在知乎的这篇文章:物理灯光亮度值参考 - 知乎 (zhihu.com)。他摘录了寒霜引擎开发者的测量值。

Untitled

使用物理参数可以把我们从感性的陷阱中拯救出来,避免自己进入到“俺寻思”的状态,也能让不同的环节统一制作思路。

3:Camera

3.1.曝光(EV)

曝光值 - 维基百科,自由的百科全书 (wikipedia.org)

EV是一个与ISO,快门时间,光圈等有关的参数。想要在CG中使用物理灯光,则EV也要按照摄影的方式去调整。

Untitled

粗暴的理解是EV值越高,画面越暗,EV值越低,画面越亮。EV值降低一档,灯光强度就要提升两倍。

如在UE中,ev100=0的情况下,平行光的强度为1lux。那么当ev100提升到16时,平行光的强度就要提升为65536lux。

Untitled

maya中,arnold的相机是没有物理参数的,大致根据redshift的相机参数估算了一下,约为13.4。关于Arnold中的灯光,我们在后面再讨论。

关于EV值的设定,可以参考wiki的这个表格

Untitled

3.2.透视(焦距·视场)

首先我们要确立一个概念:透视只和距离有关,和焦距之类的参数并无实质上的关联。(这一点很多人会搞错)

有的人会认为透视与焦距有关是因为使用同一个相机拍摄同一物体的时候,使用长焦往往会站的更远,也因此产生了更小的透视。

Untitled

但是焦距并不是唯一影响站位的因素,除此之外还有传感器(成像平面)的大小。这两个因素结合起来就成了视场(FOV)。

理论上来说,视场和位置一样的相机,拍摄出来的画面应该是一样的。

在UE中(模型来自UE商城):

Untitled

Untitled

在现实中,全画幅85mm,视场约为23.91,比较适合拍人像。

3.3.焦距

焦距在相机中指的是镜片光学中心到成像平面的距离。短焦距比长焦距更容易聚集光。在现实摄影中是一个非常重要的参数。广泛的参与到各种效果的计算汇总

Untitled

镜头的设计都是围绕着焦距进行的。在CG中,焦距一般都变成一个简化的概念。

在UE中,同一位置的全画幅相机(36*24mm)不同焦距的表现。(模型来UE商城)

Untitled

Untitled

Untitled

Untitled

3.4.景深

可以参考wiki:

景深 - 维基百科,自由的百科全书 (wikipedia.org)

影响景深的因素是物体放大率与光圈值。光圈越大,景深越强。

Untitled

Untitled

3.5.ISO(感光度)

ISO值越高,画面越亮噪点越多(CG中一般不会有噪点问题,只会影响亮度)。

Untitled

Untitled

3.6.快门

相机的快门开启时间和曝光量成正比。

一般用快门速度表示:

Untitled

3.7.光圈

光圈是照相机上用来控制镜头孔径大小的部件,以控制景深、镜头成像素质、以及和快门协同控制进光量。可参考:光圈 - 维基百科,自由的百科全书 (wikipedia.org)

Untitled

景深效果可参考3.4中的图片。

4:UE场景

4.1.场景

UE场景模型来自albinmerle的惊人的免费模型:

Studio Lookdev FREE, Albin Merle

Untitled

在此基础上,我将彩卡复制了一份放在下方,并将材质改为无光照模式,以检查场景的色倾向。

灯光使用子场景流送进来。

Untitled

4.2.曝光

EV100=0,关闭了游戏设置以稳定曝光。

Untitled

4.3.后期处理

正常情况下关闭了Bloom和Lens Flares。关闭了晕映。开启全光追。并增添了三个后期处理材质,以检查basecolor情况和将画面变为黑白。

Untitled

Untitled

4.4.反射

为了增强金属的反射效果,使用了一个法线向内的球形,附加一张HDR作为反射来源。HDR来自

HDRIs • Poly Haven

Untitled

4.5.TurnTable

使用了一个空actor,将转盘和自己的资产附在此actor下,以做turntable旋转之用。就像albinmerle做的一样:

https://cdn.artstation.com/p/video_sources/000/541/332/medium.mp4

一共是120帧,前60帧光旋转360度,后60帧资产旋转360度。因为有多个灯光子关卡,为了方便所以前60帧其实是资产,场景和相机一起旋转。

使用了两个相机,全身相机位置不变。头部相机锁定x轴和旋转值,保持对称,可自由调节远近和上下(因为不同的资产头的大小和位置各不相同)。

5:离线场景

5.1.灯光

Redshift可参考:Redshift物理灯光相机

Arnold同理,有一些坑是平行光和环境光都被后台矫正过了,在maya默认相机中能够呈现正常的照明,所以只能增强其他灯的EV而不是更改相机EV。

而灯光位置只要交换y轴和z轴的数值就能和ue对上,旋转则因为涉及到了四元数换算,必须写插件才能做到:

如何把Maya坐标系转换到UE坐标系_康米主义~的博客-CSDN博客

5.2.场景

使用同样的模型贴图即可。

5.5:HDR

5.5.1.HDR烘焙

这一点是比较简单的,只要在Arnold还原UE的场景与光照,并将相机设置为球形相机,按照HDR的尺寸渲染即可。(注意色彩空间是ACESCG,使用maya2022或者手动导入OCIO)

渲染完成之后储存的格式建议为exr,渲染完了建议丢到nuke看一下灯光部分的亮度是不是大于1.

Untitled

Untitled

5.5.2.HDR矫正

烘焙出来的HDR放到SP中效果并不一定会正确,所以需要再次矫正:

原理可以参考这篇文章:

Unreal Engine 4 Look Dev制作浅析分享 - 知乎 (zhihu.com)

我是丢一个色卡进去SP,然后分析和UE的不同,用NUKE矫正了HDR的曝光。

6:SP设置

6.1.OCIO设置

配置如下:

Untitled

正常来说,颜色贴图需要的精度不高,并且不会到饱和度非常高的地步。所以色彩空间为sRGB也可。

如果遇到要使用ACESCG才有的颜色的时候,请将sRGB相关的色彩空间改为ACESCG。

且取色器也要改。

Untitled

6.2.HDRI设置

将烘焙好的HDR导入使用即可,旋转值

Untitled

6.3.一些与UE更接近的设置

着色器质量开为“高”以上,这个选项会极大的影响材质质量。

Untitled

角色皮肤启用SSS:

Untitled

Untitled

7:拓展

发现任何疏漏或者有想要讨论的问题都可以联系我,我会尽力帮助您解决问题或者疑问(在我认知的范围内)。

并且推荐一些我的学习来源:

知乎(虽然现在已经很烂了,但是还是有很多大佬在上面,并且知识库也很庞大)。

A站专栏:

Bikramjit Singh

各大软件/渲染器的官方文档:

Help

Substance becomes Adobe Substance 3D

虚幻引擎5.1文档

Courseware V-Ray for Maya - V-Ray for Maya - Chaos Help

Next Limit

chrisbrejon的网站:

CG Cinematography Archives - Chris Brejon

ACES:

ACES

Home Page - ACESCentral

维基百科:

维基百科:首页

美国电影摄影师协会:

The American Society of Cinematographers (en-US)

youtube频道:

Swats tuts

Arvid Schneider

Keos Masons

Ben Cloward

William Faucher