콘텐츠로 건너뛰기

PBR GUIDE PART 1.

Written by JP.Lee
心动的 Technical Art team leader.
leegoonz@163.com
Written by Wes McDormott and contributed by JP.Lee from Allegorithmic at 2016 in years.

光和材质

关于基于物理渲染&着色处理(Shading)的理论

光本身就是很复杂的现象,因为它是由波长和粒子的现象一起呈现出来的。

从结果来看,很多模型都是为了解释光的行动而做出来的。作为 Texture artist,

我们对于解释光和材质间的相互作用的Light Ray Model 很感兴趣。对我们来说,

理解光线和表面材质是怎样反应的尤为重要。因为我们的工作就是做描写表面的

纹理。我们要理解我们创造的假想世界里面,纹理和材质是怎样反应的,光是怎

么行动的,纹理看起来是怎么样的。在本教程中,我们将会解释基于物理渲染的

模型,物理学背后理论。我们将从定义光线和 PBR 里面一些重要的要素开始。

光线(Light Rays)

光线模型主张的是光线在和空气同种透明的媒质里面拥有直线轨道。光线模

型也主张光线和不透明的物体发生冲突,或者像从空气到水这样,转移到不同的

媒质时,能预测动向。跟着光线的出发点开始,到转换为热相同的其它形态的能

量为止,使这个过程能用肉眼能够看到。和表面相碰的光线叫作incident Ray,

incident Ray的角度,被称作Incidence of Angle(入射角),在figure 01里

面有。

光线碰到表面的时候,会发生两种现象。

1. 光从表面被反射,改变传播方向又返回原物质。此时,入射角等于反射

角,遵循反射法则。(光被反射)

2. 光从一个媒质,以直线通过另一个媒质。(光被折射)

从这个观点我们可以说光线分为反射和折射两种。在表面光线是被反射或者

被折射。根据不同的媒质也有被吸收的可能。但是吸收不会发生在表面。

The comprehensive PBR Guide by Allegorithmic – vol. 1 written by Wes McDermott | 翻译 vich

吸收和扩散(透明和半透明)

经过不同的介质或者经过半透明介质时,光被吸收或者扩散。

1. 吸收的情况,随着光转换成其它形态的能量(几乎是热),光的强

度也会减少。还有随着颜色,或者波长的不同,吸收的量不同。但是光线的方

向是不发生变化的。

2. 扩散的情况,光线的方向随着材质的偏差的量的不同,任意改变。扩散

的话,虽然任意改变光线的方向,但是不改变强度。耳朵就是很好的例子。耳

朵因为很薄(吸收很少),耳朵背部的光被扩散出来。如果没有扩散,吸收很

少的话,光线就和玻璃类材质一样,能笔直通过。举个例子,你在非常干净的

游泳池里面,那么睁开眼睛就能看得很清楚。但是如果水很脏的话,脏的粒子

会让光发生扩散,这样水就变得不透明了。光在这样的材质,或者介质里面,

运动得越厉害,扩散或者吸收就越厉害。所以物体的厚度对于光的扩散或者吸

收起着很重要的作用。Thickness 贴图,如 figure 02 里面看到的,在 Shader

里面用来表现物体的厚度。

漫反射和正反射(Diffuse and Specular Reflection)

Specular Reflection 是我们上面所说的光线主题中提到的在表面发生的反

射。光线在表面被发射,往其它方向出去。这个完全遵循在平面上,入射角和反

射角相同的反射法则。但是,几乎所有的材质都是不规则的,反射的方向取决于

表现的粗糙程度。光的方向虽然发生了改变,但是强度不变。表面越粗糙,生成

的 highlight 就越大越暗。表现越光滑,在一定角度看的时候,看起来更亮,或

者更强。即,specular 是比较集中的。

两者光的总量如 figure03 所示被反射。Diffuse reflection,光被折射。

光线从一个介质去另一个介质时,在物体里面发生多次扩散。如 figure04 中所

示,从光第一次通过介质,然后又往原介质方向发生折射。

Diffuse 材质具有较强的吸收力。这给被折射的光线在 Diffuse 材质里面,

长时间逗留能被完全吸收提供了很好的条件。意思就是光从这些材质往外出来的

话,可能从入口开始,不需要太多的移动。这就是为什么入口和出口点可以无视

了。用于表现传统的 Diffuse 反射的 lambert model,计算的时候是不考虑表面

的粗糙程度的。但是也有像 Oren-Nayar 一样,考虑表面粗糙程度的 Diffuse 反

射 model。

同时拥有高分散和低吸收的材质,有时说的可能是’participating media’

或者 ‘translucent material’。这些材质有烟、牛奶、皮肤、玉、大理石等。

渲染后面三个材质(皮肤、玉、大理石)时,可以通过不忽视光线入射点和出射

点的subsurface scattering(SSS)的modeling来进行。如果想正确得渲染具有各

种扩散和很低的扩散和吸收的媒介(烟、雾等)的话,就需要如Monte Carlo

simulation一样更贵的方法了。

微面元理论(Microfacet Theory)

在该理论中,diffuse和specular reflection在所有光线交叉表面是不规则

和独立的。通过练习,我们知道diffuse reflection的粗糙程度的效果因为材质

内部发生的扩散而看起来要更少。结果就是,光线的出射点,和入射方向还有表

面的粗糙程度是相对独立的。我们经常使用的Rambert model就很好的说明了这

一点。

其实这种现象叫法很多,有 roughness, smothness, glossiness,或者

micro-surface。但这些描绘的都是表面的同一个侧面(sub-texel geometric

detail)。这些表面的不规则,用大家在使用的 roughness 或者 glossiness 贴图

就能做出来。基于物理的 BRDF,表面被称作 microfacet 的小的 planner 是基于

微面元理论(Microfacet Theory 用多种多样的角度来表现表面的细节部分。这样

的小的平面,如 figure 05 中看到的所示,用物体的法线来反射光。

表面法线光的方向和看的方向的中间方向的微面元,使 visible light 发生

反射。Microsurface 法线和 half 法线不会对同等的所有微面元用作用。如 Figure

05 所示,几个是根据 shadowing(light direction) 来 遮 盖 , 几 个 是 被

masking(view direction)。微细水准的表面不规则性会导致 diffusion。举个例

子,模糊的反射是因为光线的漫反射。因为光线不能平线地被反射,所以看起来

如 figure 06 所示,就会有模糊的 specular reflection。

颜色(Color)

表现的颜色(我们看到的颜色)是因为各自的波长从光开始被散发出来所以

呈现出颜色的。有些光线被吸收,有些光线被反射。剩下的那些被反射的波长就

是我们看到的颜色。举个例子,苹果的表面几乎只有红色被反射。只有红色的波

长在苹果表面被漫反射,其它的如 figure 07 所示,被吸收。

它同时具有和光一样颜色的亮的 specular high light.因为苹果皮不是导体。

(意思是电不流通的物质)Specular reflection 几乎是从波长中独立出来的。

正因如此,这种物质的 specular reflection,是绝对没有颜色的。我们队材质

的其它种类以后再看。

BRDF

双向反射分布函数(BRDF)是描写表面的反射率特性的。电脑画面中有很多其

它的BRDF模型,有些从物理上是非近似的。BRDF如果要做到在物理上可以的话,

它的energy保存和展示要是相互的(exhibit reciprocity)。关于相互,我就要

说到主张光线的入射点和出射点不对BRDF的结果起影响,还可以相反的

helmholtz 互易原理(Helmholts Reciprocity principle).

在 Substance 的 PBR Shader 里面使用的 BRDF,是立足于 Disney 的 GGX 微

面元分布最基础的规则的反射模型。GGX 对于 specular 漫反射提供了一个最准确

的解决方法。如 Figure 08 所示,跟写实,更短的 highlight 和在更长的 fall off

中的 tail。(得看图才能理解)

能量守恒(Energy Conservation)

能量守恒在 PBR rendering solution 里面发挥着重要的作用。它主张表面

反射的光的总量比吸收的光的总量要少。换句话说,在表面被反射的光,绝对不

会比在和表面碰撞之前的光来得强烈。作为 artist,对于控制能量守恒不用担心。

能量守恒根据 Shader 会自动守恒的,这是 PBR 的一个很好的方面。这是基于物

理的模型的一部分,对我们来说,比起物理来说,可以更集中于美术创作。

菲涅尔现象(Fresnel Effect)

菲涅尔反射对于作为基于物理的Shader的BRDF的系数来说,有非常重要的作

用。根据法国物理学家ugustin-Jean Fresnel所观测的菲涅尔效果是表面被反射

的光的量,受你看它的角度的影响。举个例子,想象一下水坑。如果是笔直的往

下看的话,可以看到池底。

这样看的时候,你看的法线和表面的法线是一样的。现在,平行地看水的表

面,你能感觉到水表面的specular反射增强了,完全看不到水的底面。在PBR里

面处理菲涅尔,不能像之前传统shading方式一样处理了。换句话说,这是PBR

shader里面自动管理的物理要素。如果以90度的入射角来看的话,表面几乎是百

分之百反射的。

虽然在粗糙的表面反射率会变得更specular,但是我们并不是100%能控制反

射率的。问题不是因为macrosurface和光的角度,而是因为各自的微面元的法线

角度和光的角度。因为光线向其它方向漫反射,反射变得细腻或者模糊了。你在

macroscopic level上能得到,和在所有微面元上得到的菲涅尔效果的平均值一

样。

F0 (Fresnel Reflectance at 0 Degrees)

光和表面以0的角度碰撞的时候,光存在以specular反射的概率。如果用

Index of Refraction(IOR)的话,可以传导被反射回来的光的量,这个如figure

09所示,叫作F0。表面被折射的光的亮叫作1-F0。

最常见的电介质的F0范围是0.02 – 0.05,导体的范围是0.5 – 1.0。表面

的反射率,如同在figure 10里面见到的,是根据Sebastien Lagarde的“Feeding

a Physicially-based Shading Model”里面展示的方程式来的。这个F0是我们

在制作贴图的时候要考虑的反射率值。非金属(电介质/非导体)具有灰色色调

值,金属(导体)具有彩色值。PBR和反射率美术上的解释就是我们在一般的细

腻的非导体表面上,F0是反射2%到5%程度的光,如果接近水平的话,100%的光被

反射。非导体的反射率值,其实变化得没有那么急剧。非金属的反射率范围也不

是变化得很激烈。宝石的原石具有很高的值,是例外。关于联系导体和非导体的

F0,我们一会儿再看。

导体和非导体(Metals and Non-Metals)

我为PBR做材质的时候,会事先想是金属还是非金属。我会先问自己是金属

还是非金属。如果正确的话,会按照一条guideline 来,如果不是的话,按照

其它来。这和准金属类似,哪些东西不属于这个范畴,以此为前提的话,就更接

近了。制作材质的时候,从整体上看,区分哪些是金属哪些是非金属,已经很接

近了,准金属是例外。设置关于材质的guideline的时候,我们首先要理解的是,

我们要理解我们要做的是什么东西。如PBR,我们对于金属和非金属的特性,可

以通过guideline理解。

折射的光被吸收。金属的色泽是被反射的光。所以对于我们的贴图来说,对

于METAL,我们不添加diffuse颜色。

金属(Metals)

金属是导热和导电的导体。简单的说,导体金属的electric field电场是0,

电和磁场表面接触的时候,生成的入射光的波长,部分被反射,所有折射的光都

被吸收。被磨得很光的金属的反射率,如figure 12所示,高达70-100%左右。

有些金属从其它波长里面吸收光。举个例子,金因为在visible spectrum(可

见光谱)的高频率端吸收的蓝光,所以结果看起来很黄。但是,因为折射光是被

吸收的,金属的颜色是从反射光中来的,我们不给金属添加diffuse color值。

举个例子,在specular/gloss流程上,完全得金属的话,diffuse给它黑色

的,折射率值,是specular map的颜色值。金属里面,折射率值可以成为RGB,

也可以成为颜色。因为我们的模型是基于物理的,所以我们对于我们的贴图有必

要使用金属的现实中计算的折射率值。

在给金属做texturing的时候,还有一点很重要,就是金属是要被腐蚀的。

所以这个腐蚀(风化)要素在金属的反射状态下占据了重要的作用。如果举例金

属被腐蚀了,就要变化金属的折射率,如figure 13所示,被腐蚀的部分要使用

非导体材质。

而且,被着上色的金属和非导体一样,不当做金属处理。Paint的作用就是

在金属表面添加了图层的作用。仅仅是没有染色的纯金属当做金属来处理。沾在

金属材质上面的灰尘或者遮住金属的一些东西也是同样(不当金属看待)

我个人主张要时常问自己,材质是金属还是非金属。但是,如果再详细点的

话,就是是否染色,是否被腐蚀,是否沾有灰尘等,包含金属的状态如何。材质

不是纯金属,或者根据腐蚀来看,在金属和非金属之间还夹杂着什么东西的时候,

当做非导体来看待。

非金属(Non-Metals)

非金属(非导体)几乎不导电。被折射的光线被扩散或者吸收。正是因此,

他们比金属更能反射小的光线,具有反射率的颜色(albedocolor)。我们之前把

非导体的平均值当做从F0开始2-5%程度。这些值如figure 14所示,包含了0.017

– 0.067的linear range。除了宝石,几乎所有非导体的值不超过4%。

如果金属一样,我们得使用在现实中测定的值。但是,要找出不透明的物体

的IOR值是很困难的。但是,很常见的非导体材质的值,不是经常变化的。因此,

关于折射率,我们运用volume2里面使用的少数的guide-line。

Linear Space Rendering

Linear space rendering的话,比起本文中介绍的来说,还可以控制很多的

量。所以我们就讲得不这么深入了。但重要的是,是以linear space来计算的。

简单的说,linear space rendering对于光计算,给提供准确的数学。这给

为光在现实中拥有相同的运动提供了环境。在Linear space里面,伽马是1.0。

但是,为了能让我们眼里能正确的看到,得修正linear gamma。

Gamma-encodedspace(sRGB)修改标记在电脑上的照片。照片的值为了标记,需要

修改。

运行计算机运算色值和颜色相关功能的时候,所有计算都用linear space执

行。看这个简单的方法是,万一照片看起来是基本颜色或者diffues的话,那么

要把这些贴图设置成为sRGB。照片设置成为sRGB的时候,Substance为了计算照

片,会转换成linear,为了再次标记,会变化成sRGB。但是,如果你为了在texture

上面表现表面粗糙或者金属属性的话,如果想保存数学值的话,这些贴图一定要

设置成linear。(意思是非颜色的,拥有0~1值的grey-scale的贴图)

Substance的话,不仅能处理linear/sRGB space之间的变化,还能自动处理

rendering-viewport计算结果的伽马修正。作为美术,就没有必要担心在

linear-space计算和substace pipelinel里面发生的变化。通过Substance合并

插件,如果使用Substance材质的话,为了linear space,会自动处理变换。

但是,把Substance贴图导出后当bitmap来用,所以不再是Substance

material的时候,理解这个过程很重要。各位可能得会根据你用的渲染器来进行

手动变换。base color/difuse maps这些是sRGB,剩下的linear这些得知道。

重要要素(Key Factors)、

我们刚刚看了物理学的基本理论,现在可以导出PBR的核心要素了。

1. 能量守恒,被反射的光线绝对不能比第一次撞击表面的时候要亮。

能量守恒是在Shader里面处理的。

2. Fresnel。BRDF是根据shader处理的。F0反射率值几乎在所有非导体

上面,只能看到小的变化,范围在2%-5%。金属的F0值是70-100%

3. Specular值通过BRDF来调整。会受到Roughness or glossiness贴图,

还有反射率值的影响。

4. 光的计算是在linear space里面计算的。所有贴图具有伽马值,base

color或者diffuse这些,一般都在shader里面变换。但是,大家把照片导入到

引擎或者渲染器里面的时候,选项要勾选正确,要确认结果是否正确。描写表

面的roughness, glossiness, metallic还有height这些必须是linear。

References

1. Physically-Based Shading at Disney Brent Burley, Walt Disney Animation Studios. https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf 2. Microfacet Models for Refraction through Rough Surfaces http://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf 3. Feeding a Physically-Based Shading Model by Sebastien Lagarde http://seblagarde.wordpress.com/2011/08/17/feeding-a-physical-based-lighting-mode/

4. An Introduction to BRDF Models by Dani雔 Jimenez Kwast

http://hmi.ewi.utwente.nl/verslagen/capita-selecta/CS-Jimenez-Kwast-Daniel.pdf

태그:

댓글 남기기

%d