在本教程中,我们将介绍一种快速更改物体上 Texture 色相的方法,从而可以创建多个不同颜色的副本。
本教程的视频版本目前尚未提供该语言版本。您可以在下方观看带字幕的英文版视频;视频下方提供了翻译成中文的文字稿。
视频文字稿
大家好!
在本教程中,我们将介绍一种快速更改物体上 Texture 色相的方法,从而可以创建多个不同颜色的副本。
我们将通过只使用一个 Material,并利用各个副本的 Object Index 字段来实现这一点,而无需修改原始 Texture 图像,也不需要创建额外的材质。
本教程基于 Blender 3.6 制作。
好的,让我们开始吧!在屏幕上,你可以看到一个 Blender 场景,其中我已经导入了 3D 模型,其状态与刚下载时一致。

有两个对象共享同一个 Material 和同一组 PBR Textures。
具体来说,Base Color Texture 通过 UV mapping 将主体和高亮笔的笔头涂成黄色。如果我复制这些对象以获得更多高亮笔,那么得到的自然也都是黄色的高亮笔。

要更改这些副本的颜色,有多种方法,具体选择取决于实际情况。在这个例子中,需要更改的颜色是均匀的,而且更重要的是,其余部分是黑色,因此我们可以使用 Hue Saturation Value 节点来改变 Base Color Texture 的色相。下面来看具体做法。
在 Shader Editor 中,我在 Base Color Texture 与其连接到 PBR 节点的输入之间添加一个 Color HSV 节点。这个节点是我在许多 3D 模型中使用的一个简单 PBR 节点,也可以很容易地用 Principled BSDF 节点替代。不要被它在这里的存在所影响。

通过将 Hue 字段的值在 0.0 到 1.0 之间调整,我们可以改变 Texture 中有颜色区域的色相,同时保持黑色部分不变。

但是,用这种方式会改变所有由原始对象复制得到的对象的颜色,因为这些副本共享同一个材质。
对于每个副本,我们可以分配一个称为 Object Index 或 Pass Index 的数值。只需选择一个高亮笔的主体,在 Properties 编辑器中打开 Object 选项卡,然后在 Relations 部分修改 Pass Index 字段的值。

我也对其他副本执行相同的操作。显然,具有相同数值索引的对象也会共享相同的颜色。对于高亮笔的笔帽则无需调整 Pass Index,因为这些对象完全是黑色的。
在 Shader editor 中,可以通过 Input Object Info 节点的 Object Index 输出获取对象的 Pass Index 值。

不过,Object Info 输出的值是一个大于或等于 0 的整数,而我们需要的是一个介于 0 到 1 之间的数值,作为 HSV 节点中 Hue 字段的输入。
没问题!Blender 提供了一些节点,可以将这些数值缩放到 0 到 1 的范围内。
例如,我们可以使用 Converter Math 节点并设置为 Divide 模式,将 Object Index 的值除以我们设置的最大 Pass Index 值。

我们也可以使用 Converter Map Range 节点,并在 From Max 字段中设置最大 Pass Index 值,其效果与 Math 的 Divide 相同。

当然,我们也可以使用不同的除数或映射范围,从而得到明显不同的颜色效果。
在这方面,Map Range 节点更具优势,因为它允许我们将映射限制在更窄的数值范围内。例如,当我将 To Min 和 To Max 分别设置为 0.0 和 0.5,或者设置为 0.5 和 1.0 时,可以看到不同的效果。

总结来说:我们可以通过一个称为 Pass Index 的数值来改变应用在多个对象上的单一图像 Texture 的色相。这个数值可以自由地分配给原始对象的各个副本。通过这种方式,我们可以在只使用一个 Material 和一组 Texture 的情况下,获得外观不同的对象。
希望这个教程对你有所帮助!下次见!