模型贴图师宝典:PBR 综合指南 - Vol1《光与物质:创建PBR纹理的实践指南》
本篇文章是给模型贴图师准备的关于PBR 综合指南 – Vol1《光与物质:创建PBR纹理的实践指南》,希望大家可以从中学到东西,毕竟现在的next gen很多都开始走PBR路线了。
今天我偷懒一把,我把Allegorithmic官方的中文指南转给大家,我真的不知道是谁翻译的,我也想发到手机上方便大家和我这种上班狗查看学习,所以谢谢翻译的人士。今天先发第一部分,回头我再发第二部分。我建议大家看完,看完后边还有福利。
目录
1.光线
2.吸收与散射(透明与半透明)
3.漫反射与镜面反射
4.微面元理论
5.颜色
6.双向反射分布函数
7.能量守恒
8.菲涅耳效应
9.角度为0° 处的菲涅耳反射率
10.导体与绝缘体(金属与非金属)
11.金属
12.非金属
13.线性空间渲染
14.关键点
15.参考文献
1.光与物质:基于物理的渲染与着色理论
光与物质:基于物理的渲染与着色理论
光是一种复杂的现象,它同时展现出波与粒子两种特性。于是,为了描述光的表现特性,人们建立了各种模型。
作为材质艺术家,我们感兴趣的是光线模型(Light Ray Model)因为它描述了光与物质的交互作用。
对我们来说,理解光线如何与物质表面交互非常重要,因为我们的工作是创作描述物体表面的材质。
我们创作出的纹理与材质在虚拟世界中与光交互,对光线表现特效理解的越多,创作出的材质就会更好。
在这篇指南中,我们会讨论物理理论,而基于物理的渲染(physically-based rendering)(PBR)模型正是建立在其上的。
我们从光线开始,逐步讲解到PBR中的关键点。
2.光线
光线模型阐明,光线在均匀透明介质(如空气)中的轨迹为直线。光线模型同时也阐明,当光传播遇到表面时,例如遇到不透明物体或穿过不同介质如从空气折射入水中,光的表现是可预测的。这样,当光从一个起点传播到某点最终转换为其他形式例如热时,我们可以将它的轨迹视觉化。
击中一个表面的光线称为入射光,而它击中的角度称为入射角,如图所示。一条光线射入两个不同介质间的平面交界面。
当光线击中一个表面时,以下的两件事情至少会发生一件,或同时发生:
1.光线在该表面上反射,并沿另一个方向传播。它遵从反射定律,即反射角等于入射角(反射光)。
2.光线沿直线轨迹从一个介质传播到另一个介质中(折射光)。
此时,我们可以说,光线分成了两个方向:反射与折射。在该表面上,光线被反射或折射并最终由两种介质之一所吸收。然而,吸收并不发生在该表面处。
3.吸收与散射(透明与半透明)
在不均匀的介质或半透明材质中传播时,光会被吸收或散射:
1.吸收,随着光转化为其他形式的能量(通常转化为热能)光的强度衰减,并且依据不同波长的光被吸收的总量,光的颜色也发生改变,但光线的方向不变。
2.散射,光线的方向随机变化,偏移量依材质而定。散射会随机改变光的方向但光的强度不变。耳朵是一个很好的例子。耳朵很薄(光线吸收较少),于是你可以观察到散射后的光线从耳朵背面贯穿而出。如果不发生散射并且吸收较少,光线可以直接穿过该表面如玻璃。举个例子,当你在泳池游泳时,池水足够干净,你可以睁开双眼并且在清澈的水中看到很远的距离。然而,该泳池有一段时间没有清理,池水变脏时,水中的灰尘粒子将会散射光线并因此使得水的清晰度降到很低。
光在这样的介质/材质中传播的越远,被吸收以及/或者散射的就越多。因此,物体厚度在决定光被吸收或散射的多少上起很大作用。可以在shader(着色器)中使用一张厚度贴图来描述物体厚度,如图。
物体厚度在决定光被吸收或散射的多少上起很大作用
4.漫反射与镜面反射
镜面反射是直接从表面反射的光,正如我们在前面光线部分中讨论过的。光线从该表面反射并沿另一方向传播。它遵从反射定律,即在理想平面上反射角等于入射角。然而,重要的是,大部分表面并不规则,并且因此反射方向会依据表面的粗糙度随机变化。这一现象会改变光的方向,但光的强度保持不变。
粗糙表面会呈现更大更暗的高光。光滑表面会保持镜面反射聚焦程度,因而当从合适角度观察时,表面会显得更明亮或光强度更高。然而,在这两种情况中反射光的总量相同,见图
粗糙表面会呈现更大更暗的高光漫反射是经过折射后的光。光线穿过一个介质到另一个介质并在物体内部散射许多次。随后它再次被折射出该物体,返回到原先的介质中,而二次折射的位置与首次折射近似在同一个点,如图。
漫反射材质吸收性非常强,这意味着当折射光在该材质内部传播的足够远时,它很有可能被完全吸收。这表明当光线能够从该材质中再次折射出来时,它可能并没有离开入口点传播很远。这正是入口点与出口点间的距离可以被忽略不计的原因。
Lambertian(朗伯特)模型,即在传统的着色观念中经常使用的漫反射模型,并不将表面粗糙度考虑在内,但存在一些漫反射模型将它考虑在内,例如Oren-Nayar模型。同时具有高散射以及低吸收的材质有时被称作“参与介质”或“半透明材质”。例如烟、牛奶、皮肤、翡翠以及大理石。
渲染后三种材质也许可以通过附加次表面散射模型来实现,在次表面散射模型中,光线入口点和出口点之间的差异不再被忽略。精确渲染一些变化剧烈,并且散射和吸收都很低的介质,如烟或雾,需要一些资源开销更大的算法例如蒙特卡罗(Monte Carlo)模拟。
5.微面元理论 Microfacet Theory
理论上,漫反射和镜面反射都依赖于光线相交处表面不规则的程度。虽然在实际中,粗糙度对于漫反射的影响更不可见,因为散射发生在材质内部。结果是,二次散射出的光线方向相当的独立于与表面粗糙度以及入射角度。最常用的漫反射模型(Lambertian)完全将其忽略不计。
在这篇文档中,我们将表面不规则度(surface irregularities)称作表面粗糙度(surface roughness)。实际上,根据所使用PBR工作流程的不同,它常常被以各种名字代称,例如粗糙度(roughness),光滑度(smoothness),光泽度(glossiness)或者微表面(microsurface),但是他们描述的是表面的同一个性质,即子纹理块几何细节。
这种表面不规则度,根据你所使用的工作流程,由粗糙度或光泽度贴图来创建。一个基于物理的BRDF(双向反射分布函数)建立在微面元理论至上,即假设一个表面,由更具细节的、方向变化的、小尺寸的平面表面组成,这些小平面称作微表面。每一个小平面沿着一个方向反射光线,这个方向基于该小平面的法线方向,如图。
表面法线恰好与光线方向和视角方向的半角向量相同的微表面会反射可见光。然而,并不是所有的微表面法线方向与半角向量相等处的微表面都会参与贡献亮度,因为一些光线会被阴影遮挡(光线方向)或被几何体遮蔽(视角方向),如图所示。微观层次的表面不规则度导致了光的漫反射。例如,模糊的反射是由光线散射造成的。光线并非平行反射,因此我们观察到的镜面反射如图06中所示是模糊的。
微观层次的表面不规则度导致了光的漫反射
6.颜色
表面的颜色(即是说我们看到的颜色)由光源发射出的光波长、物体吸收的
光波长以及其他被反射(镜面反射和漫反射)的光波长共同决定。最终得到的反射波长转换为我们看到的颜色。例如,苹果的外皮主要反射红光。只有红色波长的光被散射回到苹果外皮外侧,其他的光被其吸收了,如图所示
苹果也具有明亮的高光,高光颜色与光源相同,因为类似于苹果外皮这样的材质是非导体(绝缘体),镜面反射几乎与波长无关。因此,对于这种材质,镜面反射不会被上色。在随后的章节中,我们将会讨论更多不同类型材质(金属和绝缘体)。
7.双向反射分布函数BRDF
双向反射分布函数(Bidirectional ReflectanceDistribution Function)(BRDF)简单来说是一个函数,描述一个表面的反射率属性。在计算机图形学中,有各种不同的BRDF模型,其中一些在物理上并不真实可信。对于在物理上真实可信的BRDF模型,它必须能量守恒并且表现出互易率。
关于互易律,这里指的是Helmholtz互易原理,其中阐述了入射和出射光线可以被考虑为互相的逆转,而不影响BRDF的结果。Substance PBR shader 中使用的BRDF模型基于迪士尼原则的反射率模型,而该模型基于GGX微面分布。GGX在镜面反射分布方面提供了一种更好的解决方案,它在高光处的峰值更短,并且在衰减时具有更长的拖尾,即是说它看起来更加真实,如图。
GGX在镜面反射分布方面提供了一种更好的解决方案
8.能量守恒
在基于物理的渲染中,能量守恒在其中起关键作用。它阐述了一个表面重新发射出的光(反射以及散射)的总量小于它接收到的光的总量。换言之,从表面反射出的光,永远不会比先前击中该表面的光强度更高。作为艺术家,我们不需要考虑如何去控制能量守恒。这是PBR一个非常好的方面,即能量守恒总是由shader所实现。它是基于物理的模型的一部分,并且它能够让我们更多的将注意力集中于艺术而不是物理上
9.菲涅耳效应
作为BRDF的一个系数,菲涅耳反射因素也在基于物理的渲染中起到关键作用。菲涅耳现象由法国物理学家奥古斯丁· 简· 菲涅耳发现,其中阐述了从一个表面上观察到的反射光的总量,与观察该表面的视角相关。
例如,设想一个水池。如果垂直向下看,视线与水面垂直,你可以看到水底。以这种方式观察水面即是从零度视角观察,或者说是垂直入射,视角向量即是表面法线向量。随后,如果你沿着切线入射方向观察水池,视线更加平行于水面,你在水面上观察到的镜面反射强度会变得更高,并且你也许会无法观察到水面以下的情况。
与传统的着色流程不同,菲涅耳效应并不是我们在PBR中需要控制的因素。同样,它是由PBR shader为我们控制的另一种物理层面。当从切线角度观察表面时,所有平滑表面会变为近似于90度入射角时的100%反射面。对于粗糙表面,反射率会持续向镜面反射增加,但不会达到100%的镜面反射。
此时值得关注的就是每个微面的法线与光线方向的夹角,而不是宏观面的法线与光线方向的夹角。因为光线被分散到各个方向,反射因而变得更加柔软更昏暗。而最终在宏观层面得到的结果则较为类似于所有微面的菲涅耳效应的平均值。
10.F0 (角度为0时的菲涅耳反射率)
当光直接垂直击中一个表面(在角度为0处),有一部分比例的光被镜面反射。使用一个表面的折射率(Index ofRefraction)(IOR),你可以推导出反射回去的光的总量,即为图09中的F0(菲涅耳0)。而折射入表面光的总量则由1-F0表示.
对于大多数绝缘体,F0的范围在0.02-0.05之间,而导体的F0则在0.5-1.0之间。因此,一个表面的反射率由其折射率决定,如图中公式所示,该公式出自Sebastien Lagarde名为“Feedinga Physically-based Shading Model”的博客。
F0反射率是我们在创作纹理时所关心的内容。非金属(电介质/缘体)有一个灰度值而金属(导体)则会有一个彩色值。至于有关PBR,并且从艺术的角度解释反射率,我们可以说对于普通光滑的绝缘体表面,F0会反射2%到5%之间的光量,并在切线角度反射100%,如图所示。
绝缘体(非金属)的反射率实际上并不发生激烈的变化。事实上,当由粗糙度来决定其变化时,数值的实际变化是很难看出的。然而,该数值在不同材质之间有一些区别。如图,你可以看到一张图表,展示了金属与非金属的F0值。
11.导体与绝缘体(金属与非金属)
当为PBR创建材质时,我发现从金属与非金属的角度去思考问题非常有帮助。我简单的问自己,该表面是否为金属材质。如果它是,我就遵从一套指导方针,而如果它不是,我会遵从另一套。这是一套相当简单的实现方式,而一些材质可能无法放入这两个分类当中,例如准金属,但是在一切创建材质的工作过程中,在金属与非金属之间讨论问题,是一个很好的方式,把准金属作为一个例外。为了设定创建材质的指导方针,我们首先必须理解我们想要创建的是什么。在PBR中,可以通过金属(导体)和非金属(绝缘体)这一属性特征来得出我们的指导方针。
折射光被吸收,金属的色相由其反射光决定,因此在贴图中,我们不会给金属赋予漫反射颜色.
金属
金属(导体)具有很好的导热和导电性。简单来说,导体金属中的电场为零,当由电场和磁场组成的入射光波击中表面时,它发生部分的反射,而所有折射光都被吸收。对于抛光金属,其反射率值处在一个很高的范围,70-100%之间,如图所示
一些金属吸收不同波长的光。例如,金吸收位于可见光光谱高频一端的蓝光,因而它最终展现出黄色。然而,由于折射光被吸收,金属的色相由其反射光决定,因此在贴图中,我们不会给金属赋予漫反射颜色,例如,在镜面反射/光泽度工作流程中,原始金属在漫反射贴图中为黑色,而反射率值在反射贴图中被赋予有色彩的颜色值。对于金属,反射率值会是RGB值并且可以具有色彩。因为我们在基于物理的模型中工作,我们需要使用真实世界中的测量值来绘制金属反射率贴图。
金属在贴图方面的另一个重要层面在于,金属会腐蚀。这意味着在金属的反射状态中,天气元素会占很重要的地位。例如金属生锈,它会改变金属的反射状态,而被腐蚀的区域会作为绝缘体材质来处理,如图。
在金属的反射状态中,天气元素占很重要的地位
我在前面提到过,我总是问自己一个材质是否为金属。然而,想要更精确一些,该问题应该也包括关于金属的状态,例如它是否有涂料,生锈或被泥土/油脂等覆盖。如果不是原始金属,材质会作为绝缘体来处理,并且会依据天气在金属和非金属两种材质间进行混合。
12.非金属
非金属(绝缘体/电介质)导电性很弱。折射光被散射以及/或吸收(常常再次从表面中显现出来),因此它们比起金属反射光的总量较少,并且我们会有反照率(albedo)颜色。我们在前面讲到过,对于通常的绝缘体反射率会在2-5%之间,基于从折射率中计算出的F0值得到。这些值在线性空间内的范围是0.017-0.067(sRGB中为40-75)如图14所示。除了宝石是例外,大多数绝缘体的数值不会超过4%
与金属相同,我们需要使用真实世界中的测量值,但是想要获得不透明材质的折射率存在困难。然而,在大多数常见的绝缘体材质中,该数值并不会剧烈变化,因此我们在反射率值方面可以遵从一些指导方针,这些我们会在第二卷讲到。
对于通常的绝缘体反射率会在2-5%之间,基于从折射率中计算出的F0值得到
13.线性空间渲染
线性空间渲染本身就可以占用一整篇文章来描述。因此,我们不会很深入的讲这个问题。关键最需要知道的,就是计算发生在线性空间内。
简单来说,线性空间渲染为光线提供了正确的数学计算。它会建立一个环境,在其中光能够与其在真实世界中有同样的表现。在线性空间中,gamma值为1.0。然而,为了能够使它在人眼中看起来正确,线性gamma需要经过转换。经
过gamma校正的空间(sRGB)能够为显示器显示图像提供补偿。为了正确的显示,图像的数值经过了校正。
在计算颜色值以及对颜色值进行操作时,所有的计算都应该在线性空间中进行。一个简单的理解方式是,如果图像在渲染中会作为固有色或漫反射显示,那么贴图需要被设置为sRGB。在Substance中发生的是,如果一个图像被标记为sRGB,为了进行计算,它会被转换为线性空间,随后在显示时再次转换为sRGB。然而,当在贴图中存储表示表面属性的纯数学值时,例如粗糙度(Roughness)贴图或金属性(metallic)贴图,这些贴图必须被设置为线性空间。
Substance为输入自动处理线性/sRGB之间的转换,为渲染视口的显示计算gamma校正结果。作为艺术家,在Substance工作流程中你不需要考虑其内部的线性空间计算及其转换。而当通过Substance集成插件使用Substance材质时,对于线性空间的转换也是自动处理的。
然而,理解其中的处理过程非常重要,因为当Substance贴图被导出作为位图(bitmap)使用,而非作为Substance材质使用时,根据所使用的渲染器,你也许会需要手动处理这些转换。需要了解的是,固有色/漫反射贴图是sRGB而其余则是线性的。
当通过Substance集成插件使用Substance材质时,对于线性空间的转换也是自动处理的
14.关键点
现在我们已经了解了基于物理的基本原理,这里总结一些PBR的关键点
1. 能量守恒。反射光线永远不会比先前击中该表面的光强度更高。能量守恒由shader负责处理。
2. 菲涅耳效应。BRDF由shader负责处理。F0反射率值变化较小,对于大多说常见的绝缘体来说在2%-5%之间。而金属的F0值较高,处于70%-100%之间。
3. 镜面反射强度由BRDF、粗糙度或光泽度贴图、以及F0反射率值共同控制。
4. 光照计算发生在线性空间中。所有内置gamma校正值例如固有色或漫反射颜色的贴图通常由shader转换为线性,但是在使用游戏引擎或渲染器时,导入贴图的时候你需要勾选合适的选项,检查转换是否被正确的完成。描述表面属性的贴图,如粗糙度,光泽度,金属度以及高度需要设置为转换为线性
15.参考文献
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ël Jimenez Kwast
http://hmi.ewi.utwente.nl/verslagen/capita-selecta/CS-Jimenez-Kwast-Daniel.pdf
For more information on Substance, please visit our website at
www.allegorithmic.com
好了福利来了:
英文原版pdf:
链接:http://pan.baidu.com/s/1kUWXzoV 密码:pim5
中文版pdf:
链接:http://pan.baidu.com/s/1jH5Vetg 密码:e8uf