材质表达式 是 UE4 中的构建块,用来创建功能完整的材质。每一个材质表达式都是独立的黑匣,它输出一个或多个特定值的集合,或者对一个或多个输入执行单一操作,然后输出该操作的结果。一个材质表达式节点包含以下5部分:
1、说明 - 所有材质表达式都具有公共的 说明(Desc)属性。在此属性中输入的文本将显示在材质编辑器中,它位于工作空间中表达式的正上方。它可用于任何用途,但通常是一种保留关于表达式用途或功能的简短备注的好方法。
2、标题栏 - 显示材质表达式名称或材质表达式属性的相关信息。
3、输入 - 这些链接用于接收材质表达式所要使用的值。
4、预览 - 显示材质表达式的输出值的预览。启用实时更新后,预览将自动更新。您可使用空格进行手动更新。
5、输出 - 这些链接用于输出材质表达式操作的结果。
某些材质表达式是参数,这意味着它们的值可在包含该参数的基本材质的材质实例中修改(在某些情况下,可在运行时进行动态修改)。您应通过 参数名称(Parameter Name)属性对这些表达式指定唯一的名称,以便在材质实例中识别特定参数时使用。如果类型相同的两个参数在同一材质中具有相同的名称,那么系统会假定它们是同一个参数。在材质实例中更改此参数的值时,将在材质中同时更改这两个参数表达式的值。在基本材质中,还将设置此参数的默认值。这将是此参数在材质实例中具有的值,除非它在该材质实例中被覆盖并修改。
材质表达式有很多类型,本次介绍 数学表达式。
Add(加)表达式接收两个输入,将其相加,然后输出结果。这个加法运算按通道执行,这意味着输入的 R 通道、G 通道和 B 通道等等将分别相加。两个输入必须具有相同数目的通道,除非其中之一是单个常量值。常量可以添加到具有任意数目输入的矢量。
示例:对 0.2 和 0.4 执行 Add(加)的结果是 0.6;对 (0.2,-0.4,0.6) 和 (0.1,0.5,1.0) 执行 Add(加)的结果是 (0.3,0.1,1.6);对 (0.2,-0.4,0.6) 和 1.0 执行 Add(加)的结果是 (1.2,0.6,1.6)
用法示例:Add(加)通常用来使颜色变亮/变暗,或者使 UV 纹理坐标偏移。
AppendVector(追加矢量)表达式允许您将通道组合在一起,以创建通道数比原始矢量更多的矢量。例如,您可以使用两个 常量 值并进行追加,以建立双通道 Constant2Vector(常量 2 矢量) 值。这有助于将单个纹理中的通道重新排序,或者将多个灰阶纹理组合成一个 RGB 彩色纹理。
示例:对 0.2 和 0.4 执行追加的结果是 (0.2,0.4);对 (0.2,0.4) 和 (1.6) 执行追加的结果是 (0.2,0.4,1.6)。
Subtract(减)节点接收两个输入,从第一个输入中减去第二个输入,然后输出它们的差。减法按通道进行,即,第一个输入的 R 通道将减去第二个输入的 R 通道,第一个输入的 G 通道将减去第二个输入的 G 通道,依此类推。除非第二个输入是单个常量值,否则两个输入必须具有相同数目的通道。常量可以从具有任意数目输入的矢量中减去。
示例:对 0.5 和 0.2 执行 Subtract(减)的结果是 0.3;对 (0.2,-0.4,0.6) 和 (0.1,0.1,1.0) 执行 Subtract(减)的结果是 (0.1,-0.5,-0.4);对 (0.2,0.4,1.0) 和 0.2 执行 Subtract(减)的结果是 (0.0,0.2,0.8)。
用法示例:Subtract(减)可用来使颜色变暗以及使 UV 偏移。
Multiply(乘)表达式接收两个输入,将其相乘,然后输出结果。类似于 Photoshop 的多层混合。乘法按通道进行,即,第一个输入的 R 通道将乘以第二个输入的 R 通道,第一个输入的 G 通道将乘以第二个输入的 G 通道,依此类推。除非其中一个值是单个浮点值,否则两个输入必须具有相同数目的值。
示例:对 0.4 和 0.5 执行 Multiply(乘)的结果是 0.2;对 (0.2,-0.4,0.6) 和 (0.0,2.0,1.0) 执行 Multiply(乘)的结果是 (0.0,-0.8,0.6);对 (0.2,-0.4,0.6) 和 0.5 执行 Multiply(乘)的结果是 (0.1,-0.2,0.3)。
用法示例:Multiply(乘)通常用来使颜色/纹理变亮或变暗。
Divide(除)表达式接收两个输入,并输出第一个输入除以第二个输入的结果。除法按通道进行,即,第一个输入的 R 通道将除以第二个输入的 R 通道,第一个输入的 G 通道将除以第二个输入的 G 通道,依此类推。除非除数是单个浮点值,否则两个输入必须具有相同数目的值。切勿以零作除数。
示例:当 A=(1.0,0.5,-0.4) 且 B=(2.0,2.0,4.0) 时,Divide(除)的输出为 (0.5,0.25,-0.1)。
OneMinus(一减)表达式接收一个输入值,并输出“一减去该值”。此运算按通道执行。
示例:对 0.4 执行 OneMinus(一减)的结果是 0.6;对 (0.2,0.5,1.0) 执行 OneMinus(一减)的结果是 (0.8,0.5,0.0);对 (0.0,-0.4,1.6) 执行 OneMinus(一减)的结果是 (1.0,1.4,-0.6)。
用法示例:当输入颜色在 [0,1] 范围内时,OneMinus(一减)的作用就是通常所谓的“反色”-- 即,OneMinus(一减)将返回互补色,这种颜色与输入相加将产生白色。
Min(最小值)表达式接收两个输入,然后输出其中的较小者。