【Substance2018版】The PBR Guide Vol.2实践篇完整翻译

天鸿

2022-06-242354次浏览

0评论

17收藏

7点赞

分享

目录

1.什么是PBR?什么是好处?这对美术意味着什么?

2.Metallic/Roughness 的工作流程,绝缘体F0 /BaseColor/Metallic/Roughness/分辨率和像素密度优点和缺点

3.Specular/Glossiness 的工作流程; 漫反射/Specular反射/Glossiness/分辨率和图素密度优点和缺点

3.适用于两种工作流程的贴图 Ambient Occlusion / Height / Norma

4.SubstancePBR实用工具 /Substance Designer/Substance Painter/Substance输出和渲染

5.附录 - 图表 表面Metallic/反射值; 正确/不正确的比较

一、创建PBR纹理的实用指南

在第1部分中, 我们从技术和理论的角度定义了PBR. 在第2部分中, 我们将讨论编写PBR纹理的实际应用, 并提供基于第1部分中建立的基础的一组准则.

我们将从美术的角度重新定义PBR. 就此, 我们将得出 Metallic/Roughness工作流程的原则. 然后, 我们将跟进Specular/Glossiness工作流程, 并讨论创作方法的差异. 最好对比阅读这两个工作流程以全面了解创作PBR纹理的总体指导原则.

在本指南中, 我们将使用Substance工具集讨论工作流程, 但所讨论的创建贴图的原则,适用于任何用于创建"基于物理的纹理和材质"的软件.

基于物理渲染(PBR)是一种方法而不是硬标准. 有特定的原则和方针, 但没有一个真正的固定做法, 这意味着可以有不同的实现. 所用的贴图类型和工作流程可能有所不同. 通常使用GGX BRDF, 但子项可能有所不同(这里指Cook-Torrance方程的DGV子项的各种选择). 此外, 有些实现会更改贴图名称, 即使它们的基础用法保持不变.

在这一部分中, 我们将讨论两种最常见的工作流程, 即Metallic/Roughness和Specular/Glossiness(图16). 用于创作PBR贴图的Substance工具集(包含Substance Designer, Substance Painter和Substance B2M)支持两种工作流程. 用于Metallic/Roughness和Specular/Glossiness的Substance PBR着色器使用GGX BRDF, 并不使用任何值重新映射Roughness/Glossiness. 但是, 如果需要任何自定义重映射, 则可以在Substance中轻松实现.

图16:Metallic/Roughness和Specular/Glossiness工作流程

此外, Substance工具集支持自定义着色器, 这意味着您可以将Substance调整到任何自定义管道.

虽然这两种工作流程在实施中都有优点和缺点, 但其中一个并不优于另一个. 这是潜在的概念和指导方针, 你应该关注PBR贴图的准确性, 而不是哪个工作流程. 工作流程表示相同的数据, 但它们以不同的方式表现.

二、什么是PBR?

基于物理的渲染(PBR)是一种着色和渲染方法, 可以更加准确地表示光与表面的相互作用. 它被称为基于物理的渲染(PBR)或基于物理的着色(PBS). 似乎你正在讨论的流水线的哪些方面, PBS通常专用于着色概念, 并且PBR特定于渲染和照明. 但是, 这两个术语都从物理上准确的角度描述了表示资源的过程.

1.有什么好处?

作为美术, 我们可以从艺术和生产效率的角度看待PBR的好处:

① PBR消除了创作表面属性的各种不准确的估算, 例如Specular反射, 因为其方法和算法基于物理上精确的公式. 因此创建逼真的资源更容易.

②资源在所有照明条件下看起来都很准确.

③PBR提供了创建一致美术资源的工作流程, 即使是在不同的美术之间合作.

2.这对美术意味着什么?

作为美术, 我们需要对描述表面属性的贴图进行不同的思考, 因为计算机硬件和渲染技术的进步使我们现在可以更加紧密地模拟光的物理特性.

我们需要抛弃传统渲染工作流程中的漫反射和Specular反射贴图的概念, 因为这些贴图只能作为近似光线与材质交互的解决方法.

在PBR中, 着色器通过节能和BRDF处理物理规则的繁重工作, 而作为美术, 我们创建以物理原则为指导的贴图. PBR的科学方面将估算的工作从材质的价值中剥离出来, 并让我们花更多时间在纹理的创意方面. 尽管正确遵守指南和作者贴图很重要, 但这并不意味着我们现在必须忽视我们的艺术直觉. 通过精心制作的细节和表达, 展现故事的艺术视角才会确实为材质带来个性. 美术的主要关注点决不应该是艺术的物理过程. 仅仅因为我们在更加物理上精确的环境中工作, 并不意味着我们不能创造出风格化的艺术. 例如, 迪士尼的基于物理的反射模型被设计成一个原则性的方法. 也就是说, 它更多地面向艺术方向, 而不是严格的物理模型. 了解这些原则并使用这些指导原则是非常重要的, 而不应成为他们的奴隶.

作为美术, 我们需要对描述表面属性的贴图进行不同的思考. 有一些新的贴图类型需要遵循规则和指南. 

三、Metallic/Roughness工作流程

Metallic/Roughness工作流程是通过一组通道定义的, 这些通道作为纹理, 输入到PBR着色器中采样. 特定于Metallic/Roughness工作流程的贴图为BaseColor, Metallic和Roughness(图17). 我们将讨论这两种工作流通用的这些贴图类型. PBR着色器也将使用环境遮挡(AO)贴图, 法线和可能存在的Height贴图构造视差贴图或位移贴图效果(parallax or displacement mapping)(图18)

图17:Metallic/Roughness工作流程
图18:高度图和环境遮挡(AO)作为着色器的可选输入

在Metallic/Roughness工作流程中, Metallic的反射值与绝缘体的反射颜色一起放置在BaseColor图中. 掠射角度的反射由BRDF自动处理. 使用Metallic图, 其像蒙版一样工作, 以区分在BaseColor图中找到的Metallic和绝缘体数据. 绝缘体F0值不是在着色器处理它们时手动创建的. 当着色器在Metallic贴图中看到黑色时, 它会将BaseColor贴图中的对应区域视为绝缘体, 并使用4%(0.04)的反射率值(图19).

PS: 在PBR模型里面, 可以认为Metallic是0的时候, BaseColor的颜色是绝缘体, 则颜色的物理意义就是漫反射Diffuse的颜色; 而Metallic是1的时候, BaseColor是导体的F0系数, 这个不是高光颜色也不是任何别的东西, 所以如果要金属反射正确, 最好使用Substance的固有金属节点来制作

图19:黑色表示非Metallic, 使用0.04(4%)反射率

正如我们在第1部分中讨论的那样, 4%的值涵盖了最常见的绝缘材质. 重要的是要注意, 所有的值, 例如绝缘体F0, Metallic反射率和反射率颜色的亮度范围, 均来自实际测量数据. 在我们查看每种贴图类型时, 我们将讨论基于测量数据的指南.

在第1部分中, 我们讨论了能量守恒的概念, 其中从表面反射的光永远不会比它撞击表面之前更强烈. 在实现方面, 着色器通常处理节能控制. Substance就是这种情况. 通过Metallic/Roughness工作流程, 不可能打破节能法则. Diffuse漫反射(反射颜色)和Specular平衡通过Metallic蒙版控制, 因此不可能创建漫反射和Specular反射可以组合反射/折射比最初接收到更多光线的情况.

Metallic的反射值与绝缘体的反射颜色一起放置在基本彩色图中.

绝缘体F0

常用绝缘材质的F0通常设置为0.04(线性)4%反射率. 在Metallic/Roughness工作流程中, 此值在着色器中硬编码.

某些Metallic/Roughness实现(例如Substance工具集和虚幻引擎4中的实现)具有Specular控制, 允许美术更改绝缘体的常数F0值. 在Substance中, 该输出标记为“specularLevel”, 由纹理采样器在Metallic/RoughnessPBR着色器中提供. 它表示0.0-0.08的范围, 如图20所示. 该范围在着色器中重新映射到0.0-1.0, 其中0.5代表4%的反射率.

PS: 在Substance中实际测试, 对实际效果的影响微乎其微; 仅对主机游戏要求很细致的情况下才有意义

图20:Specular Level输出表示绝缘体F0的着色器中的0.0-0.08范围

如果需要为介质手动设置F0, 可以使用Substance Designer中的Substance 图中的specularLevel输出或Substance Painter中的specularLevel通道执行此操作, 如图21所示. 我们将在F0中深入讨论F0绝缘体Specular/Glossiness工作流程, 那个流程您可以完全控制Specular反射工作流程中的F0.

图21:使用Specular Level通道设置自定义绝缘体F0
图22:BaseColor包含绝缘体的漫反射颜色和金属的反射率值

BaseColor(RGB - sRGB)

BaseColor贴图是一个RGB图, 可以包含两种类型的数据:绝缘体的漫反射颜色和Metallic的反射率值, 如图22所示. 表示绝缘体的颜色代表反射波长, 如第1部分所述. 如果Metallic贴图中的区域被表示为Metallic(白色值), 则表示金属反射率.

创作指南

BaseColor图可以认为是色调有点平坦. 也就是说, 它的对比度应该低于传统的漫反射贴图. 具有太亮或太暗的值是不可取的. 对象往往比我们记得的要轻得多. 我们可以通过最黑暗的材质是煤炭和最亮的材质是刚下的白雪来想象这个范围. 煤炭很黑, 但不是0.0黑色. 我们选择的颜色值需要保持在亮度范围内.

至于亮度范围, 我们主要是指绝缘体反射颜色. 在图23中, 您可以看到污垢值降至正确亮度范围以下的示例. 对于黑暗值, 你不应该低于30-50 sRGB. 暗数值的范围可以放宽到30 sRGB, 严格一些则应该在50 sRGB以上. 对于明亮的颜色, 您不应该有高于240 sRGB的任何值(图23).

图23:绝缘体材料的BaseColor值范围(反射颜色)

我们前面说BaseColor包含绝缘材质的反射光(Diffuse)的数据, 因此它应该没有诸如环境遮挡(AO)等照明信息. 如果着色器无法仅用一个环境遮挡(AO)通道来表示该细节层次, 则可能会出现例外情况, 如图24所示. 但是, 如果将微遮挡添加到贴图中, 仍然需要受亮度范围的控制. BaseColor中Metallic反射率值的值应该从真实世界的测量值中获得. 这些值将会是70-100%Specular, 我们可以将其映射到180-255sRGB范围.

PS: 注意这里是一个特殊情况, 这里把BaseColor做的很白的部分, 是把多孔石头的边沿微反射压到BaseCOlor里面才会出现这么白的情况

图24:在BaseColor中包含照明信息的例外是微遮挡(micro-occlusion)

在Substance PBR实用工具部分, 我们将讨论为普通材质提供预设F0值的工具. Sébastien Lagarde提供的Metallic/Roughness图表也是很好的资源(Lagarde 2014).

表示Metallic反射率值的值应从实际测量值中获得. 

  • BaseColor颜色代表非Metallic材料的漫反射颜色或者Metallic的反射率值.

  • 除了微遮挡AO之外, BaseColor应该没有照明信息.

  • 暗值不应低于30 sRGB(宽泛范围)或者 50 sRGB(严格范围).

  • 亮度值不应高于240 sRGB.

  • 金属原料的反射率会很高, 在70-100%Specular范围内, 我们可以将其映射到180-255 sRGB.

正如您将在下面的Metallic部分中会阅读到的那样, BaseColor也可以包含Metallic反射值. 如果灰尘或氧化被添加到BaseColor, 这会导致Metallic反射率值降低到不能被视为金属原料的范围.

Metallic贴图也必须考虑到污垢或氧化的增加, 并且在这些区域必须降低其值以表明它不再被视为纯金属. 在图25中, 您可以看到生锈的Metallic被视为绝缘体, 并在Metallic图中设置为黑色. 在具有过渡灰度值的Metallic图中也考虑了污垢层. Metallic贴图可能并不总是二元的, 即0.0(黑色)或1.0(白色), 当存在薄层介质材料(如灰尘)时.

Metallic图以类似于蒙版的方式操作, 因为它告诉着色器如何解释在BaseColor中找到的数据. 

图25:叠加污垢和/或氧化也必须在Metallic图中考虑到

Metallic(灰度 - 线性)

Metallic图用于定义材料的哪些区域表示金属原料. 作为灰度图, 它以类似于蒙版的方式操作, 因为它告诉着色器它应该如何解释在BaseColor中找到的数据.

图26:BaseColor图包含了由Metallic图表示的金属原料的反射率值

Metallic图中的数据不包含直接用作材质数值的实际数据. 它只是向着色器描述BaseColor中的哪些区域应被解释为漫反射颜色(绝缘体)以及哪些区域表示金属反射值. 在Metallic图中, 0.0(黑色 - 0 sRGB)代表非Metallic, 1.0(白色 - 255 sRGB)代表纯金属. 在定义纯金属和非Metallic方面, 这个Metallic贴图通常是二元的:黑色或白色, Metallic或非Metallic. 实际上, 当着色器查看Metallic贴图并看到白色时, 它会检查BaseColor贴图中的对应区域, 以获取Metallic的反射值, 如图26所示.

创作指南

金属表面有两个与纹理有关的重要方面:首先, 纯金属的反射率值将在70-100%Specular范围内; 其次, 有些金属会被腐蚀. 在我们讨论创建指南时, 我们将分别讨论这两个方面.

落入此范围内的金属区域需要具有70-100%反射率的反射率范围. 

PS: 这里很绕, 可以这么理解, Metallic如果是1, 那么就是70-100%反射率的材质

纯金属

Metallic贴图将被设置为0或1, 无论是否为Metallic贴图, 并用于定义原始的抛光金属状态. 作为一般指南, Metallic图中的纯金属的灰度范围将定义为235-255 sRGB. 在这个范围内的Metallic区域需要在BaseColor图中具有70-100%反射率的反射率范围, 我们可以将其映射到180-255 sRGB, 如图27所示. 再次, 这些值基于真实测量数据.

图27:基本Metallic在Metallic图中定义为≥= 235 sRGB

腐蚀或绝缘层

当您遇到某些表面需要做风化影响时, 您可能需要考虑Metallic被氧化, 或补偿其他环境因素, 如污垢和污垢. 在这些情况下, 金属需要被视为绝缘体. 涂漆金属也是如此. 如果您观察涂漆金属的部分涂漆被划伤或剥落, 暴露的金属是“未加工的/纯金属的”(Metallic图中为白色), 涂料则为绝缘的/非金属的(Metallic图中为黑色), 如图所示图28.

图28:涂漆金属被视为绝缘体

Metallic贴图可以表示金属和非金属之间的混合状态, 由贴图中的过渡灰度值表示. 如果Metallic贴图的灰度值低于235 sRGB, 则需要降低BaseColor的“原始”Metallic反射率值. 想想如图29所示的污垢层, 部分遮挡了部分纯金属. 污垢是绝缘体.

相反,如果将Metallic贴图全白, 它会将BaseColor的这些污垢区域视为Metallic的反射值. 污垢的颜色值远低于抛光Metallic70-100%反射率所需的值. 通过降低由灰尘表示的区域中的Metallic图值, 可以在绝缘和Metallic反射值之间创建适当的混合.

PS: 这样理解不要太麻烦, 直接用Substance材质来合成或者绘制出来就好了

图29:金属的灰度范围在Metallic图中定义为≥= 235 sRGB

污垢层的不透明度可以指示降低BaseColor的反射率值的程度. 这里没有硬性规定. 您基本上是从高反射率表面(导电)移动到较低反射率表面(绝缘体). 但是, 这种转变发生的程度可能会有所不同.

Substance工具集允许你轻松使用风化效应, 并通过多通道支持来控制这些效应如何传播到其它通道. Substance Designer和Substance Painter允许您更改Substance效果生成器上的参数, 该参数将自动调整由Substance效果控制的通道.

PS: 这里其实指可以在Designer里面做带参数的sbsar给Painter, Painter可以通过修改参数让绘制的材质的各个通道产生各种变化

例如, 在Substance Designer中, 您可以使用Material Color Blend节点在多个通道中应用灰尘等效果. 在Material Color Blend上, 您可以通过调整Metallic值滑块来控制污垢层对Metallic的影响, 如图30所示.

被氧化或者生锈的金属需要被视为绝缘体. 涂漆金属也是如此

图30:材料颜色混合. 较低的Metallic值表示一层薄薄的污垢(灰尘和金属之间的过渡状态)

黑色(0.0)是非金属, 白色(1.0)是金属. 可以有过渡灰度值来解释氧化或污垢.

如果Metallic贴图的值低于235 sRGB, 则需要在BaseColor贴图中降低反射率值

Roughness(灰度 - 线性)

Roughness图描述了导致光扩散的表面不规则性, 如图31所示. 如第1部分所述, 反射方向将根据表面Roughness随机变化. 这改变了光线的方向, 但光线强度保持不变. 粗糙的表面会有更大和更暗淡的亮点. 更平滑的表面会保持聚焦的Specular反射, 即使反射相同的总光量, 它看起来看起来更亮或更强烈.

图31:Roughness图描述了导致光扩散的表面不规则性

在该图中, 黑色(0.0)表示光滑表面, 白色(1.0)表示粗糙表面. Roughness贴图是最表达创意的贴图, 因为它允许美术在视觉上定义表面的特征. 它可以让您创造性地讲述关于表面状况的故事. 它的环境是什么?是否小心处理或无视?它是否暴露于某种元素?表面的状况告诉了很多关于它的环境, 因此会影响到您尝试创建的资源和世界的总体设计.

Roughness是一个非常主观的领域. 你, 美术, 是完全创造性的控制. 以Roughness开始的好地方是法线贴图. 法线贴图通常包含关键的表面细节, 这些细节也应该在Roughness图中表示.

创作指南

要有创意地讲述关于表面的视觉故事.

分辨率和图素密度

使用Metallic/Roughness工作流程的副产品是它可能产生白色边沿瑕疵, 如图32所示. 在Specular/Glossiness工作流程中也会发生此问题. 然而, 在这种情况下, 它几乎不可见, 因为效果相反:如图33所示, 存在黑色边缘而不是白色. 

图32:使用Metallic/Roughness工作流程的副产品是它可能会产生白色边缘瑕疵
图33:使用Specular/Glossiness工作流程的副产品是它可能会产生黑边瑕疵

这种边缘是由于纹理插值引起的, 并且在绝缘体材料和非常明亮的金属之间形成鲜明对比的材料之间的过渡区域中很明显. 这如图34所示. 对于Metallic/Roughness, BaseColor包含Metallic反射率的较亮值, 该金属反射率和非金属漫反射颜色进行插值, 从而产生白色边缘. 对于Specular/Glossiness, 由于纯金属没有漫反射颜色, 因此漫反射贴图包含黑色. 黑色值用非金属漫反射色进行内插, 所以反过来产生黑色边缘.

图34:在材料之间的过渡区域, 边缘很明显

贴图文件分辨率和纹理密度对边沿瑕疵的可见性有直接影响. 例如, 如果您使用硬边笔刷创建Metallic与非Metallic之间的过渡区域, 贴图分辨率较低仍会使边缘变软, 从而加剧问题. 这种低分辨率问题也是由于UV不能根据文档分辨率提供足够的纹理密度而造成的. 为UV提供良好的纹理密度是最小化任何边沿瑕疵的最佳方法, 如图35所示.

图35:为UV提供良好的纹理密度是最小化任何边沿瑕疵的最佳方法

在图35中, 两个纹理集都使用相同的2048像素分辨率. 然而, 右侧的图像显示了低纹理密度的UV布局.

文档分辨率和纹理密度对边沿瑕疵的可见性有直接影响.

创作指南

Texel密度和分辨率会影响Metallic/Roughness工作流程中出现的白色边缘. 为了最大限度地减少问题, 请确保您的UV提供足够的密度以匹配文档分辨率.

Metallic/Roughness工作流程的优缺点

优点

  • 由于提供不正确的绝缘体F0数据, 可能更容易制作, 并且不易出现错误.

  • 使用较少的纹理内存, 因为Metallic和Roughness都是灰度图.

  • 似乎是一个更广泛采用的工作流程.

缺点

  • 无法控制贴图创建中的绝缘体的F0. 但是, 大多数实现都有一个specular控制通道来覆盖基本4%的值.

  • 边沿瑕疵更明显, 特别是在较低的分辨率下

四、Specular/Glossiness工作流程

就像Metallic/Roughness一样, Specular/Glossiness工作流程是通过一组贴图来定义的, 这些贴图作为纹理输入到PBR着色器中的采样器. 特定于Specular/Glossiness工作流程的贴图是Diffuse, Specular反射和Glossiness(图36).

图36:Specular反射/Glossiness工作流程

管Specular/Glossiness工作流使用了更为熟悉的名称, 例如漫反射和Specular, 但重要的是要区分这些贴图与传统次世代对应物不同. Substance使用术语漫反射, 但是一些实现可能将漫反射称为反射率. PBR着色器也将使用环境遮挡(AO), Normal和可能存在的Height贴图来进行视差映射, 如前所述, 这将在两个工作流程的通用映射部分中讨论.

在此工作流程中, 非金属材料的F0和金属材料的反射率值将放置在Specular贴图中. 通过Specular/Glossiness工作流程, 您可以获得两个RGB贴图:一个用于漫反射颜色(Albedo), 另一个用于反射值(Specular). 使用Specular反射图, 您可以控制绝缘材质的F0.

正如我们在Metallic/Roughness工作流程中所述, Substance中的PBR着色器可以处理能量守恒. 这在Specular/Glossiness工作流程中变得更加重要, 因为Specular贴图提供了对绝缘体F0的完全控制. 这意味着贴图更容易包含不正确的值. 例如, 一个白色(1.0)漫反射和一个白色(1.0)Specular值可以组合反射/折射得到比最初接收到的更多光线, 这反过来打破了能量守恒定律. 因此, 在创作纹理时, 纹理数据与实际结果不符.

如您所见, 贴图所代表的数据与Metallic/Roughness工作流程中的数据相同. 我们将遵循相同的指导原则; 然而, 差异将在于如何创作贴图. 数据将被放置在不同的贴图中, 但我们将遵循相同的原则. 如前所述, 所有的数值, 例如绝缘体F0, 金属反射率和Albedo颜色的亮度范围, 均来自实际测量数据. 在我们查看每种贴图类型时, 我们将讨论基于测量数据的指南. 本部分不会重复Metallic/Roughness部分涵盖的细节信息; 相反, 它将重点关注Specular/Glossiness工作流程的区别和区别.

Diffuse(RGB - sRGB)

与来自Metallic/Roughness工作流程的BaseColor映射一样, 漫反射贴图也包含Abedo颜色. 但是, 它不包含任何反射率值.

创作指南

漫反射贴图仅为Albedo颜色. 由于金属不具有漫反射颜色, 因此表示纯金属的区域为黑色(0.0)(图37). 在发生氧化的情况下, 金属区域将包含颜色, 因为它不再被视为纯金属. 对于在纯金属上形成绝缘层的污垢或其他效应也是如此.

图37:由于金属不具有漫反射颜色, 因此表示纯金属的区域将变为黑色(0.0)

色调方面的Diffuse贴图指南与BaseColor贴图相同. 例外是, 如果存在纯金属, 则允许0.0(黑色)的值, 并且不受黑暗范围的指导原则的支配

  • 颜色代表非金属材料的反照率和纯金属的黑色(0.0).

  • 除了微遮挡外, BaseColor应该没有照明信息.

  • 黑色值不应低于30 sRGB(容许范围)或50 sRGB(严格范围), 除非纯金属为黑色.

  • 亮度值不应高于240 sRGB

Specular(RGB - sRGB)

Specular贴图定义了金属的反射率值和非金属的F0(图38). 该RGB贴图允许在贴图中创作不同的绝缘体材料值. 这与Metallic/Roughness工作流程不同, 在那个模型下, 其中绝缘体以4%反射率进行硬编码, 并且只能通过“specularLevel”通道进行修改. 正如我们在Metallic/Roughness工作流程中所介绍的那样, F0数据应该来源于真实世界的测量值. 绝缘体的F0将是一个较暗的值. 金属反射率可以被着色, 因为一些Metallic吸收不同波长的光. 在Specular/Glossiness 绝缘体和金属的F0都是在RGB Specular贴图图中创作的. 可以精确控制

Specular贴图允许在贴图中创作不同的绝缘体F0值

图38:Specular反射图定义了Metallic的反射率值和非Metallic的F0值

创作指南

由于Specular贴图包含金属和非金属的F0值, 因此我们将按照每种材料类型将贴图划分为单独的类别.

纯金属

F0值应该基于真实世界的数据. 正如我们在Metallic贴图中指出的那样, 如果有氧化或某层表示非金属, 则需要降低纯金属的反射率. 在Specular/Glossiness工作流程中, 污垢或氧化会提高Diffuse贴图中纯金属的漫反射颜色, 并降低Specular反射贴图中的反射值, 如图39所示. 图39中还显示了一个示例纯金属上的污垢层. Specular反射图中的污垢包含绝缘体的适当F0值. 在这种情况下, 我们使用0.04或4%.

图39:氧化/污垢会增加纯金属的漫反射颜色并降低Specular反射率值

绝缘体

绝缘材质的F0也是在Specular贴图中的. 在这里, 您可以完全控制F0值, 但使用正确的数据非常重要. 正如我们在第1部分中讨论的那样, 非金属(绝缘体)是不良导体. 折射光被散射和/或吸收(通常从表面重新出现), 并且因此这些材料反射比金属少得多的光量. 我们表示, 根据折射率(IOR)计算得出的F0, 常用绝缘体的值约为2-5%. 除了宝石之外, F0的绝缘常数介于0.02-0.05(线性)范围内(图40).

图40:通用绝缘值在2-5%的范围内

就sRGB而言, 我们正在寻找一个介于40-75 sRGB之间的数值范围, 它与0.02-0.05(2-5%)的范围重叠.

如果您无法找到特定材料的IOR值, 则可以假设4%(0.04 - 塑料). 宝石是一个例外, 其范围为0.05-0.17(线性), 如图40所示. 在Metallic工作流程中, 当使用specularLevel通道时, 着色器被映射到0.0-0.08的范围(线性), 因为零需要代表空气, 如图39所示.

  • Specular反射图包含绝缘体的F0和纯金属的反射率值.

  • 绝缘体反射比Metallic少量的光. 普通绝缘体的价值将在2-5%左右. 就sRGB而言, 数值应介于sRGB 40-75之间, 它与0.02-0.05(线性)范围重叠.

  • 常见的宝石在0.05-0.17(线性)范围内.

  • 普通液体落在0.02-0.04(线性)范围内.

  • 纯金属的反射率值将在70-100%Specular范围内高, 我们可以将其映射到180-255 sRGB.

  • 如果找不到特定材料的IOR值, 则可以使用4%(0.04 - 塑料).

Glossiness(灰度 - 线性)

Glossiness图描述了导致光扩散的表面不规则性(图41). 在该图中, 黑色(0.0)代表粗糙表面, 白色(1.0)代表光滑表面. 它是Metallic/Roughness工作流程中Roughness图的反转. 该贴图与上述Roughness部分中的相同艺术指南相同.

创作指南

再一次, 要有创意并讲述关于表面的视觉故事.

图41:Glossiness图描述了导致光扩散的表面不规则性

分辨率和图素密度

我们先前讨论了边缘瑕疵如何在两个工作流中出现. 这在Metallic/Roughness部分进行了深入讨论, 因为边沿瑕疵在该工作流程中更为明显. 我们还提到, 由于纯金属不具有漫反射颜色, 因此具有Specular反射/Glossiness, 漫反射贴图包含黑色. 黑色值用非金属漫反射颜色进行插值, 这会产生黑色边缘, 如图42所示.

图42:使用Specular反射/Glossiness工作流程的副产品是它可能产生黑边瑕疵

文件分辨率和纹理密度再次对边缘瑕疵的可见性有直接影响. 如果您使用硬边笔刷创建金属和非金属之间的过渡区域, 较低的文档分辨率仍然会软化边缘, 从而加剧瑕疵. 这种低分辨率问题也是由于UV不能提供足够的纹理密度而与文档分辨率相比而造成的. 为UV提供良好的图素密度是控制此问题的最佳方法(图43). 文档分辨率和纹理密度对边缘瑕疵的可见性有直接影响.

图43:为UV提供良好的纹理密度是最小化任何边缘瑕疵的最佳方法

创作指南

图素密度和分辨率会影响Specular/Glossiness工作流程中可能出现的黑色边缘. 确保你的UV提供足够的密度来匹配文件分辨率, 以减少瑕疵.

Specular/Glossiness工作流程的优点和缺点

优点

  • 边缘瑕疵不太明显.

  • 控制Specular中的绝缘体F0.

缺点

  • 由于Specular贴图提供对绝缘体F0的控制, 因此更容易使用不正确的值. 如果在着色器中处理不正确, 可能会破坏能量守恒法则.

  • 使用更多的纹理内存和额外的RGB贴图.

  • 可能会更混乱, 因为它使用与传统工作流相似的术语, 但需要不同的数据. 它还需要更多关于基于物理的指导方针的知识, 例如正确的绝缘体F0, 黑色的纯金属漫射颜色和可能的在Shader中做的能量守恒.

五、通用于两个工作流程的贴图

环境遮挡(AO)

环境遮挡(AO)贴图定义了表面点可以访问多少周围环境光照. 它应该只影响漫反射贡献, 不应该遮挡Specular贡献. 某些引擎(例如虚幻引擎4)可以选择屏幕空间反射来模拟局部反射. 最佳组合是在屏幕空间反射中使用AO.

在Substance PBR着色器中, 环境照明(由环境贴图生成),与AO相乘. AO贴图由PBR着色器中的纹理采样器提供, 并且是可选通道(图44). AO不应该烘焙到纹理贴图中, 而只能作为其自己的通道提供给着色器.

AO只影响Diffuse贡献, 不应遮挡Specular贡献

图44:AO不应该烘焙到纹理贴图中, 而只能作为其自己的通道提供给着色器
创建环境光遮挡

在Substance Designer和Substance Painter中, 可以使用集成的烘焙工具集从Mesh烘焙AO或从法线贴图转换AO. 在Substance Designer和Substance Painter中, 您还可以使用HBAO节点/过滤器从高度输入生成基于水平方向的环境遮挡(AO), 从而得到和光线跟踪烘焙类似的结果, 如图45所示.

图45:在Painter中使用过滤器或Designer中的HBAO节点可产生与光线跟踪烘焙类似的结果

高度(Height)

渲染中常常使用高度贴图进行位移. 它可以用于视差贴图, 有助于增加更明显的深度, 从而为法线和凹凸贴图增加更多真实感. Substance使用浮雕映射视差算法(relief mapping parallax algorithm). 高度由PBR着色器中的纹理采样器提供, 也是PBR着色器的选项通道输入. 在Substance Designer中, 您可以使用parallax occlusion 或者 tessellation 两种Shader(图46). 使用Substance Painter, 您可以使用位移通道(displacement)来驱动视差遮挡.

图46:高度由PBR着色器中的纹理采样器提供, 也是一个可选通道

创建高度贴图

与AO一样, 可以使用集成的烘焙工具集从Substance Designer或Substance Painter中烘焙高度. 在Substance Designer中, 您可以使用节点从法线贴图转换高度(图47). 在Substance Painter中, 您可以直接绘制高度细节, 如图48所示.

关于在实时着色器中使用高度贴图, 最好减少贴图中包含的高频细节数量. 高度图应该设计成代表用于替换几何图形的整体轮廓. 一个很好的做法是使用模糊的高度版本来显示轮廓并减少任何高频细节. 这将让法线贴图提供高频细节, 并且高度将替换整体的轮廓(图49). 如果您在光线跟踪渲染器中使用高度作为位移, 则需要此高频细节.

图47:使用普通高度节点从正常数据创建高度图

图48:直接在网格上绘制高度细节

图49:法线为表格的轮廓提供了高频细节和高度

Normal

法线贴图用于模拟表面细节. 它是一个RGB图, 每个分量对应于曲面法线的X, Y和Z坐标. 它可用于将高分辨率模型的投影细节存储到低分辨率模型. 在Substance工具集中, 您可以烘焙法线或将高度图转换为法线贴图.

创建Normal

法线贴图可以使用集成的烘焙工具集从Substance Designer和Substance Painter中进行烘焙. 在Substance Designer中, 可以使用普通节点将高度转换为法线贴图, 如图50所示. 在Substance Painter中, 可以直接在3D视图中绘制Normal数据(图51).

图50:正常节点可以从高度输入创建Normal数据

 

图51:Normal通道可用于绘制Normal数据

六、Substance PBR实用程序

在本节中, 我们将讨论几种Substance实用工具, 它们可以帮助创建PBR纹理并设置正确的反射率值. 这些工具是基于本指南中涵盖的原则和概念构建的.

Substance Designer

PBR Base Material

此节点是用于创建完整基础材质的实用程序, 可在“ **Material Filters”>“PBR Utilities”**下找到, 如图52所示. 它支持Metallic/Roughness和Specular/Glossiness工作流程, 并为纯金属材料提供常见的预设. 它还允许您在创建非金属时设置Albedo. 根据工作流程可以控制Roughness和Glossiness, 也可以选择脏污量. 您可以启用贴图输入来输入通道, 如BaseColor, 法线或高度.

图52:使用预设值或自定义贴图输入创建基础材质的PBR实用程序

Dielectric F0

此节点输出常用绝缘体材料的F0值(图53), 可在“ **Material Filters”>“PBR Utilities”**下找到. 您可以从预设值中进行选择, 并且该节点具有一个IOR输入字段, 该字段需要一个IOR并计算F0值. 它专为绝缘材质设计, 可与Specular/Glossiness工作流程一起使用.

图53:使用预设或自定义IOR计算绝缘体F0值的PBR实用程序

Metallic Reflectance

该节点输出普通纯金属的反射率值. 可以在 Substance Designer Library 的 Material Filters> PBR Utilities下找到它. 您可以从多个预设金属值中进行选择, 如图54所示.

图54:含有金属反射率值预设的PBR实用程序
PBR Metal/Roughness Validate

此节点设计用于处理Metallic/Roughness工作流程, 并且是检查BaseColor和Metallic贴图的不正确值的实用工具(图55). 可以在Material Filters> PBR Utilities下找到它. 节点输出一个从红色>黄色>绿色移动的热度图, 其中红色不正确, 绿色/黄色正确. 使用Metallic时, 它检查Metallic贴图中指示为Metallic的区域(大于235 sRGB)中BaseColor的相应F0值. 热度图显示F0范围可能太低的范围. 另外, 对于Albedo的部分, 它检查绝缘体亮度范围是否正确.

PBR Safe Color

此节点更正BaseColor或Diffuse贴图的值, 如图56所示. 它确保值落在绝缘体的校正亮度范围内. 它可以在Material Filters> PBR Utilities下找到.

图55:PBR实用程序, 用于检查Albedo/金属反射率值的范围,
并输出热度图以显示正确/不正确的值
图56:检查BaseColor和漫反射的范围的PBR实用程序
转换

BaseColor_metallic_roughness_converter

此节点可将贴图从Metallic/Roughness工作流程转换为各种渲染, 并可在“ Material Filters> PBR Utilities下找到. 支持以下渲染器的形式

  • Vray(GGX)

  • Corona

  • Corona 1.6

  • Redshift 1.x °

  • Arnold 4 (aiSurface) °

  • Arnold 4 (aiStandard) °

  • Renderman (pxrSurface)

° *Arnold 5支持BaseColor/Metallic/Roughness工作流程. * ° Redshift 2.x支持BaseColor/Metallic/Roughness工作流程

Substance Painter

PBR Metal/Roughness Validate (filter)

该过滤器设计用于处理Metallic/Roughness工作流程, 并且是用于检查BaseColor和Metallic贴图的不正确值的实用程序(图57). 这是一个免费的过滤器, 可以从Substance Share下载.

过滤器输出红色不正确和绿色/黄色正确的, 红色>黄色>绿色的热度图. 使用金属时, 它检查Metallic贴图中指示为金属的区域(大于235 sRGB)中BaseColor的相应F0值.

热度图显示F0范围可能太低的范围. 而对于Albedo的部分, 它检查绝缘体亮度范围是否正确.

要在Painter中使用它, 请将过滤器导入到Substance Painter项目中, 并将其标记为Filter或将过滤器复制到您的Shelf中的Filter文件夹.

图57:PBR实用程序检查Albedo/金属反射率值的范围, 并输出热度图以显示正确/不正确的值

七、Substance输出和渲染

来自Substance Source的Substance材料支持Metallic/Roughness和Specular/Glossiness工作流程. 这些输出可用于基于物理的实时着色器, 如虚幻引擎4和Unity中的实时着色器. BaseColor/Metallic/Roughness输出还可以与支持Metallic工作流程(如Arnold)的光线追踪渲染器一起使用. Specular/Glossiness贴图仅用于实时着色器. 根据渲染器的不同, 您可能会直接使用BaseColor/Metallic/Roughness输出, 或者您可能需要转换它们.

Substance Share下载的定制材质或资源对于给定的渲染器可能没有适当的输出, 因为它们主要只包含BaseColor/Metallic/Roughness输出, 所以了解渲染器将接受的材质输入类型非常重要, 以便您可以如果需要转换Substance材质的输出以正确使用.

例如, 使用Arnold 5, 您可以直接使用Metallic/Roughness输出. 但是, 使用Vray材质时, 您需要转换Metallic/Roughness输出以生成反射和1 / IOR图. Substance Painter支持多种第三方渲染器配置, 如图58所示.

图58:Painter提供按流行渲染器的配置导出的功能, 如Arnold, Vray, Keyshot, Corona和Redshif

Substance Integration插件的目标是自动转换Substance输出以使用特定的渲染器. 例如, 3ds Max Substance插件具有与Arnold, Vray和Corona一起工作的预设. 选择预设会自动转换Substance输出以用于这些渲染器(图59).

图59:使用Corona预设会创建Corona材质并自动转换Substance输出
图60:表面是否金属?Metallic/Roughness工作流程
图61:表面是否金属?Specular/Glossiness工作流程

八、附录 - 图表

表面是否金属?

将表面分解成Metallic或非Metallic类别可能会有帮助. 通过首先检查材料并询问:它是否是Metallic, 对开始纹理化过程通常很有用. 有了这个问题, 就可以得到纹理化过程的一些指导, 正如我们在本卷中所介绍的那样, 如图60和61所示. 图60使用Metallic/Roughness工作流程, 图61使用Specular/Glossiness.

反射值

图62显示了绝缘体的F0范围, 因为它们与Metallic/Roughness工作流程中的Substance PBR着色器相关. 绝缘体反射比金属少得多的光. 普通绝缘体的价值将在2-5%左右. 对于sRGB, 值应该在sRGB 40-75之间, 它与0.02-0.05(线性)范围重叠.

图62:常用绝缘体F0和金属反射率的值

在图63中, 您可以看到绝缘F0和金属反射率值. 使用金属时, Specular反射率范围在70-100%之内, 并且映射到180-255的sRGB值.

图63:绝缘体F0和金属反射值的数值

从sRGB到线性的转换使用gamma 2.2近似完成. 有关更多详细信息, 请参阅第1部分中的线性空间渲染部分.

正确/不正确的比较

在图64中, 您可以看到使用Metallic/Roughness工作流程正确和不正确地创建的贴图示例. Metallic贴图中的污垢被标记为纯金属. 另外, BaseColor的Metallic反射率值设置得太低, 因为它不能反映70-100%Specular范围.

图64:比较正确和不正确的贴图 - Metallic/Roughness

参考

**Burley, B. **(2012). *迪士尼基于身体的阴影. *[PDF]可从:https:/disney-animation.s3.amazonaws.com/library/s2012_ pbs_disney_brdf_notes_v2.pdf [2016年7月5日访问].

Kwast, D . BRDF模型介绍. [PDF]可从:http://hmi.ewi.utwente.nl/verslagen/capita-selecta/CS-Jimenez-Kwast-Daniel.pdf [2016年7月5日访问].

Lagarde, S.(2014). '虚幻引擎的Dontnod物理渲染图', Sebastien Lagarde, 博客文章, 2014年4月14日. 可从以下网址获取:https://seblagarde.wordpress.com/2014/04/14/dontnod-physically-based-rendering-chart -for-unreal-engine-4 / [2016年7月5日访问].

拉加德, S.(2011). '提供基于物理的着色模型', Sebastien Lagarde, 博客文章, 2011年8月17日. 可从:https://seblagarde.wordpress.com/2011/08/17/feeding-a-physical-based-lighting-模式/. [2016年7月5日访问].

**Walter, B., Marschner, S., Li. , H.和Torrance, K. **(2007). 通过粗糙表面折射的微观模型. [PDF]关于渲染的Eurographics研讨会, 2007. 可查阅:https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf [2016年7月5日访问].

**史诗游戏. **(2004年至2017年). '使用折射', Epic Games, UE4文档, 2017. 可从以下网址获得:https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/HowTo/Refraction/. [访问2016年7月5日]

👇推荐阅读👇

【Substance2018版】The PBR Guide Vol.1理论篇完整翻译

【Substance2018版】The PBR Guide Vol.2实践篇完整翻译

评论 0

0/1000
网易游学APP
为热爱赋能
扫描二维码下载APP