NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割
在这个教程中,我将演示如何将为传统着色器创建的内容转换到 PBR 着色器,如何将内容从一种 PBR 工作流程转换为另一种,并解释现代工作流程中的各种差异。 本教程面向中级到高级用户,因此请务必阅读 Jeff Russell 和我编写的前两篇 PBR 教程(1, 2), 因为基本概念已进行了非常详细的解释,这里可能仅简要提及。
1、PBR:误解和神话
在开始之前,我想澄清一些事情。 关于什么是基于物理的渲染,以及 PBR 系统需要什么样的纹理输入,存在很多困惑。
首先,使用金属度贴图(metalness map)并不是 PBR 系统的要求,并且使用镜面反射贴图(specular map)并不意味着资产“不是 PBR”。 我经常在论坛上看到有关此问题的评论,当有人看到艺术家创建镜面反射和光泽贴图时,他们经常会问“为什么不使用 PBR?”,所以让我们来分解一下 PBR 到底是什么。
最基本意义上的 PBR 是代表光和物质物理的复杂着色器以及使用合理值校准以代表现实世界材质的艺术内容的组合。 PBR 本质上是一个内容创建和渲染的整体系统,在实际实现中可能而且经常确实存在差异(通常是着色器模型或纹理输入类型),具体取决于你使用的工具或引擎。
此外,将任何旧内容加载到 PBR 着色器中并不能保证物理上准确的结果。 我发现这种误解与“为什么不采用 PBR?”一样频繁地出现。 上面提到的一位。 精美的着色器只是等式的一半,你还需要经过逻辑校准的艺术内容。
最后一件事,它是漫反射(diffuse)还是反照率(albedo)? 这两个术语本质上意味着同一件事,即对象的基色,并且经常互换使用。
2、PBR:发生了什么变化?
要充分了解如何创建或转换适用于 PBR 系统的内容,了解着色器的变化非常重要。 最大的区别之一是现代着色器中照明计算的先进程度。 如今,我们拥有可投射真实阴影的动态光源,以及可提供准确的环境漫反射和镜面反射的基于图像的照明。 这意味着我们不再需要将光照、反射或阴影内容直接绘制到纹理中。 现在,我们比以往任何时候都可以专注于复制材质属性,而不是在特定的照明条件下进行烘焙。
![](http://www.bimant.com/blog/content/images/2023/11/image-620.png)
此外,线性空间渲染意味着我们不再需要为漫反射的相反颜色的镜面贴图着色以获得中性白色高光,同时微表面功能中的能量守恒(随着光消散,粗糙的表面将在较大区域上具有更广泛的高光,外观更暗) 无需在镜面贴图中手动使粗糙区域变暗,使光泽区域变亮。 这意味着镜面反射贴图通常只包含每种材料类型的平面值(绝缘体为灰度,某些金属为彩色),而微表面贴图应定义大部分表面变化。
3、传统内容回顾
为了展示传统着色器和现代着色器之间的差异,我使用了我为《至暗之日》创建的一把枪。
![](http://www.bimant.com/blog/content/images/2023/11/image-621.png)
该资产是一个很好的例子,因为它展示了许多我通常不会在 PBR 管道中使用的技术,例如:
- 漫反射太暗,这可能是为了在特定的照明环境下看起来不错而进行了调整,这是一个很大的禁忌。
- 环境光遮挡和空腔细节直接烘焙到漫反射和镜面反射贴图中。 AO/腔内容应通过单独的输入添加,以便着色器可以以更智能的方式使用它们。 此外,不应将大规模 AO 直接添加到镜面反射通道中,因为遮挡光与反射率较低的表面不同——这就是镜面反射贴图所定义的。
- 渐变贴图也被烘焙到漫反射和镜面反射贴图中。 渐变贴图可以作为方便的工具来创建局部效果的蒙版(例如,角色下部区域的污垢);但是它们不应该直接在纹理上相乘。
- 该资源最初使用的着色器不支持光泽贴图(gloss map)。 这意味着镜面贴图必须承担双重任务,试图同时表示反射率和微表面,同时对整个材质使用统一的光泽度值。
- 镜面反射值是通过眼睛设置的,而不是考虑现实世界的材料属性。 因此,黑色涂漆金属的反光性太强,并且无缘无故地带有轻微的黄色色调,而塑料和橡胶材料的反光性则不够。
4、纹理转换:传统 -> PBR 高光
现在我们了解了传统着色器和 PBR 着色器之间的常见差异,我们可以更新内容以在基于物理的镜面工作流程中工作。
![](http://www.bimant.com/blog/content/images/2023/11/image-622.png)
首先,我从反照率和镜面反射贴图中删除了所有烘焙光照和渐变内容。 AO 和空腔内容被移动到两个独立的纹理,并连接到着色器中适当的插槽中。 之后,我将漫反射贴图调亮到更合理的值。
从那里,我将镜面反射内容分为光泽贴图和镜面贴图。 我将所有表面变化从旧的镜面反射贴图移到新创建的光泽贴图中,并更新了基础值以表示每种材质的微表面结构。 如果你已经有了光泽图,应该仔细检查你的值并确保它们有意义。 例如,步枪上的底层原始金属通常比涂层的哑光表面更光滑/更有光泽,而光泽油漆表面的划痕可能会暴露出下面的底漆,底漆会更粗糙。
随着大部分纹理变化从镜面贴图转移到光泽度,我们可以专注于反射率值。 此时,识别什么是金属、什么不是金属非常重要(是的,即使你没有使用金属工作流程)。 原因很简单,绝缘体往往具有约 4% 线性(或 #383838 sRGB)的无色反射率值,最小值和最大值通常在 2-16% 范围内(尽管除宝石之外很少有绝缘体 > 4%) ,而纯金属的反射率值要高得多,通常在 70-100% 范围内。 因此,在寻找正确的反射率值时,准确地弄清楚所代表的材质类型非常重要。
专业提示:在选取值时,涂有不同物质的金属物体被视为绝缘体,只有表面被磨损的地方才是金属的。
5、金属度工作流程与镜面工作流程
在我们进一步讨论之前,了解金属度和镜面工作流程之间的主要区别非常重要。 大多数游戏引擎都支持其中之一;不过,Toolbag 2 两者都支持,这使我们可以直接比较它们的优点。
两个工作流程之间的最大区别在于如何在纹理贴图中定义漫反射和反射率内容。 在镜面工作流程中,这些值是使用两个唯一的纹理贴图显式设置的。
另一方面,金属度工作流程使用反照率图来定义漫反射和反射率内容,并使用金属度图来定义材料是绝缘体还是金属。 其原因是金属导电,这意味着大多数光子(电磁波)会从表面反射,并且任何穿过表面的光子都会被吸收而不是扩散,因此金属通常不具有扩散成分。 另一方面,绝缘体反射非常少量的光 (~4%),并且大部分照射到材料上的光会在表面周围漫射或反射,从而产生均匀的颜色分布。
![](http://www.bimant.com/blog/content/images/2023/11/image-623.png)
实际上,这意味着漫反射或镜面反射贴图的大部分甚至全部(如果您的纹理仅具有金属或绝缘体,但不是两者)都将被浪费信息,因此金属度工作流程通常更有效。 然而,在同一纹理中存储漫反射和镜面反射内容的缺点之一是沿材质过渡的伪影。
光泽度和粗糙度图定义相同的信息,但通常采用相反的比例。 对于光泽度贴图,明亮值通常定义平滑/有光泽的表面,而粗糙度贴图通常使用明亮值来定义粗糙/无光泽的表面。 在某些地区,光泽度一词与反射率同义,因此有些人认为粗糙度是一个不太容易混淆的词。 这里重要的不是地图的名称,而是值代表的内容,如果有疑问,请咨询你的技术美工或工程师。
镜面工作流程的优点:
- 漫射(diffusion)和反射率(reflection)直接通过两个显式输入进行设置,这对于有使用传统着色器经验的艺术家来说可能更可取。
- 通过全色输入可以更好地控制绝缘体的反射率。
镜面工作流程的缺点:
- 易于使用不合逻辑的反射率值,从而产生不准确的结果。
- 比金属度工作流程使用更多的纹理内存。
金属度工作流程的优点:
- 反照率(albedo)图定义了对象的颜色,无论材质的类型如何,这可能更容易让艺术家从概念上理解。
- 将材质简化为两类:绝缘体和金属,这可能会使创作具有不切实际纹理值的内容变得更加困难
- 与全色镜面工作流程相比,使用更少的纹理内存
金属度工作流程的缺点:
- 材料转变点导致白线伪影
- 对绝缘体反射率的控制较少*
- 如果艺术家不了解工作流程,很容易在金属度图中使用不合逻辑的值并破坏系统
一些金属度工作流程提供金属度贴图和辅助镜面反射贴图来控制绝缘体反射率。 目前无法在 Toolbag 2 中进行设置。
有些人声称金属度工作流程更容易理解; 但就我个人而言,我认为这是均匀的。 当艺术家使用不合逻辑的内容时,每个工作流程都可能被破坏,并且根据你的经验,一个工作流程可能比另一个更容易掌握。 从本质上讲,这两种方法客观上并不比另一种更好,它们只是不同。
6、纹理转换:镜面 -> 金属度
现在我们已经正确校准了内容,并且知道了两个工作流程之间的差异,转换贴图实际上非常简单。
![](http://www.bimant.com/blog/content/images/2023/11/image-624.png)
首先,根据表面情况为所有材质指定黑色(非金属)或白色(金属)值,创建金属遮罩。 如果你有纹理的 PSD,则可以通过使用各个层的蒙版内容来构建金属度信息来快速完成此操作。 你的金属度贴图应大部分为白色和黑色,灰色值仅适用于具有柔和过渡的效果,如污垢、灰尘、铁锈等。灰色值也可用于部分金属的材质; 然而,这些通常非常罕见。 通常,当金属物体具有任何类型的涂层时,它就充当绝缘体。
![](http://www.bimant.com/blog/content/images/2023/11/image-625.png)
获得金属度贴图后,在 Photoshop 中创建一个新文件,并将漫反射贴图添加为背景图层。 然后,在顶部添加镜面反射层,并添加图层蒙版。 将金属度贴图粘贴到镜面反射层的图层蒙版中。 你应该看到的是金属表面所在的镜面内容和绝缘体所在的漫反射内容,这意味着你拥有适合金属度工作流程的正确反照率图。
7、纹理转换:金属度 -> 镜面反射
从金属度工作流程转换为镜面工作流程也很容易。 我们只需要将反照率图中的漫反射和镜面反射信息拆分为显式的漫反射和镜面反射纹理。
![](http://www.bimant.com/blog/content/images/2023/11/image-626.png)
漫反射贴图:
- 将反照率图加载到 Photoshop 中
- 创建一个新的黑色填充图层(#000000)
- 将金属度贴图粘贴到填充图层的图层蒙版中
高光贴图:
- 复制原始反照率图并将其移动到填充图层上方
- 创建另一个填充图层,值为#383838
- 将金属度贴图粘贴到填充图层的图层蒙版中
- 反转图层蒙版
8、比较和免责声明
现在我们可以比较上面解释的两种不同转换工作流程的有效性。
![](http://www.bimant.com/blog/content/images/2023/11/image-627.png)
需要注意的一件事是,由于基本内容首先被校准为合理的值,因此转换过程非常顺利。 如果你的基础内容未经过校准,会发现转化方面存在更大的差异。 同样,如果你要表示某些材质,例如具有彩色反射的绝缘体(这通常非常罕见,并且通常最好使用针对头发或虹彩材质等典型材质的自定义着色器来表示),你将在转换过程中丢失一些信息。
理想情况下,你还应该为目标渲染系统创建内容,并且仅在切换系统并更新旧内容或需要为多个系统创建内容时才依赖转换。
9、材质逻辑
那么合理值或校准值是什么意思呢? 不幸的是,这是一个很难回答的问题,它在很大程度上取决于你想要表现的材料类型。 我不会创建备忘单,而是尝试解释一些我喜欢称之为物质逻辑的东西。
坚持图表和扫描数据可能有点困难。 首先,你将无法找到想要重新创建的每种材质的数据,因此需要使用一些逻辑来自行决定哪些值是合适的。 其次,同一材料类型的表面质量可能会因使用年限、磨损、光洁度等各种条件的不同而存在显着差异。
![](http://www.bimant.com/blog/content/images/2023/11/image-628.png)
第一步是弄清楚物体是由什么材料制成的。 对于许多物体来说,这很简单,你只需看照片就可以看出它是由金属、塑料、橡胶等制成的。但是,其他物体可能更复杂或可能包含由多种材料制成的部件。 在这里,研究是你的朋友,找到参考图像或类似的现实世界对象进行研究,甚至研究特定对象的制造方式。
一旦你知道它是由什么制成的,你就可以开始得出各种结论。 例如,金属比绝缘体的反射率高得多,橡胶通常比塑料更粗糙,混凝土通常比沥青具有更亮的反照率,等等。 其中大部分可以通过简单的观察来弄清楚。
![](http://www.bimant.com/blog/content/images/2023/11/image-629.png)
此时,你可以更具体地考虑希望纹理具有的品质。 例如,油漆往往有各种不同的饰面,从哑光到光泽,塑料也是如此,金属也会有很大的不同,具体取决于表面的抛光程度。
总之,使用基于物理的渲染系统需要许多与创建游戏艺术始终依赖的相同的艺术技能,例如观察和重新创建周围世界材料的能力。 了解 PBR 系统的基本概念非常重要; 然而,归根结底,你需要相信自己的艺术直觉。
BimAnt翻译整理,转载请标明出处