Unreal Engine 4 特效设计必修课
上QQ阅读APP看书,第一时间看更新

2.3 常用函数表达式的功能

在这一节,我们来熟悉一下在游戏特效制作中的一些常用的表达式功能,熟悉了这些常用的表达式功能以后,可以自行组合搭配出很多复杂的材质效果。

如图2-22所示,每个表达式都是一个独立计算单元,它们以单独的框体显示。现在来学习一些常用的材质表达式功能,请一定要认真学习本节,材质系统是基础中的重点。

图2-22

2.3.1 常用常量表达式

Constant(常量)表达式输出单个数值。这是最常用的表达式之一,它可以连接到任何表达式的属性输入节点,而不必考虑目标表达式通道需求。按住键盘上的数字1(大键盘区域的数字),然后在材质编辑窗口空白处单击鼠标左键可以添加表达式。鼠标单击表达式右上角的小三角形按钮可以折叠节点,预览当前表达式状态。如图2-23所示,选中表达式,材质编辑窗口左下侧属性窗口中会出现表达式对应的属性,通过改变Value中的数值来调节表达式的数值。还可以在Desc栏里添加说明文字来注释这个常量表达式的作用,在Desc栏中输入的文字会出现在表达式上方以小窗口表示,如图2-24所示。

图2-23

图2-24

在下面的实例中,如图2-25所示,用该表达式连接了材质输入点中的基本颜色(Base Color)、金属高光(Metallic)以及粗糙程度(Roughness)这三个节点,预览窗口中的球体已经能够反射天空球的状态了。在这个实例中,常量默认数值0,改为1,此时连接到基本颜色的Constant常量,就变成了白色。颜色表现中,0代表黑色,1代表白色。虚幻引擎的计算中,颜色与数值之间是可以相互转换的。数值为1的Constant连入金属高光输入点,代表此时金属反光全部开启;如果数值是0的话,代表金属反光被关闭;当然,如果数值是0.5,可以代表金属反光强度只开启一半。数值越靠近1,金属反光程度就越高。在粗糙程度中,数值0代表表面完全光滑,数值1代表表面完全粗糙,输入的数值越靠近0,表示反射面越是光滑,完全反射图案也就越清晰;输入数值越靠近1的话,反射面就越粗糙,反射强度也会变弱了。

图2-25

01 Constant 2Vector(二维矢量)表达式可以通过按住键盘数字键2,然后在材质编辑窗口单击鼠标左键创建。如图2-26所示,这是一个二维矢量,它的属性中比上面的一维常量多出一个参数,并且数值名称处也变成了R和G,它代表了颜色中的R(Red,红色)和G(Green,绿色)通道,因为在虚幻4中颜色与数值有相通性,R和G也可以代表坐标轴中的X轴和Y轴。在此案例中,只作颜色使用。

图2-26

此时,我们来给它的R值和G值分别调整到1,并且打开该常量表达式的预览窗口(数值右边的倒三角形按钮)。

如图2-27所示,我们看到此时R值为1而G值为0,预览窗口变成了一片红色,说明现在红色所占比例为100%。如图2-28所示,当G值为1,R值为0时,预览窗口变成了纯正的绿色,说明现在绿色所占比例是100%。

图2-27

图2-28

如图2-29所示,此时,若将R值与G值都设置为1,表达式变成了黄色,此时的R值和G值完全融合了。如图2-30所示,尝试将红色数值调整到0.8,使红色占有率为80%,绿色数值调整到0.2,绿色占有率为20%,我们能在预览窗中看到颜色变为橙色。在二维矢量中,可以任意使用红色和绿色比率进行颜色的调配。当然读者会奇怪为什么只有红色和绿色进行搭配,那么三原色中的蓝色呢?这个会涉及三维矢量的应用,也就是我们需要来了解的下面一个常量。

图2-29

图2-30

02 Constant 3Vector(三维矢量)表达式可以通过按住键盘数字键3,然后在材质编辑窗口单击鼠标左键创建,如图2-31所示。

图2-31

在三维矢量表达式中,可以对R、G、B这三个通道进行操作,如图2-32所示。R和G通道的作用已经在上面的二维矢量中有说明,三维矢量表达式的应用与二维矢量表达式的区别只是它多出一个B(Blue,蓝色)通道,此时可以使用R、G、B三个道通进行颜色的自由搭配,使用三通道数值的占有比例调出自己需要的颜色。

图2-32

03 Constant 4Vector(四维矢量)表达式可以通过按住键盘数字键4,然后在材质编辑窗口单击鼠标左键创建,如图2-33所示。

图2-33

四维矢量表达式中,除了和三维矢量一样的R、G、B三个颜色通道以外,增加了一个A(Alpha)透明通道。如图2-34所示,设置了R、G、B、A四个通道的数值分别为0、0.5、0.35、0.5,然后利用Mask(Component Mask)表达式将其中的RGB通道和单独的Alpha通道进行分离,分别使用两个Mask表达式过滤以后连接到材质基本颜色(Base Color)和透明通道(Opacity)处。这时候在材质球的预览窗口中能见到一个半透明的蓝绿色球体了,自己动手试试其他颜色和透明度的搭配吧。(Shift+C可以调出Mask表达式,属性窗口可以启用需要的通道。)

如图2-35所示,Particle Color(粒子颜色)表达式无快捷键,可以在编辑窗口空白处单击鼠标右键,查找输入particle color,或是在表达式列表中找到这个表达式并拖动到编辑窗口中。这个表达式的作用是在粒子系统中,能够使用粒子发射器中的颜色模块改变材质的基础颜色。表达式有五个通道:RGB、R、G、B、Alpha,可以分别输出五个通道的不同参数。其中,RGB通道是R、G和B通道三者的集合体,也称为混合通道,其余四个通道(R、G、B、Alpha)是单通道形式。

图2-34

图2-35

如图2-36所示,图例中制作了一个基础圆形粒子纹理的材质球,然后使用粒子系统制作了这样的粒子喷射形态。关于粒子系统会在后面章节中详细讲解,这里只给出一个基础表达式的应用案例。

Time(时间)表达式无快捷键,可以在编辑窗口空白处单击鼠标右键,然后查找输入time,或者在表达式列表中找到该表达式并拖动到编辑窗口中。这个表达式的作用是开始计时,一般用来配合Sine或者Cosine这两个表达式一起使用。

如图2-37所示,示例中使用了Time连接Sine正弦表达式与一个一维常量进行乘法运算,计算结果连接到材质的基本颜色输入(Base Color),此时可以看到预览窗口中材质球开始进行明暗变化了。调整Time表达式左侧属性窗口中的数值可以加快或减慢变化速度。

Desaturation(去色)表达式无快捷键,可以在编辑窗口空白处单击鼠标右键,然后查找输入desaturation,或者在表达式列表中找到它并拖动到编辑窗口中。

如图2-38所示,三维矢量是纯绿色,连接到Desaturation节点“过滤”,有数值为0.85的一维常量连接到去色表达式的Fraction节点,预览窗口中看见材质球只有一点点淡淡的绿色。这里常量参数的值为0.85,是指去掉85%的颜色。调节数值为0~1,参数0代表不丢失任何颜色(表达式无意义),参数1或者缺省代表完全去色,只保留黑白二色。赋予的数值越靠近1,色彩饱和度就越低。

图2-36

图2-37

图2-38

2.3.2 常用坐标表达式

Panner(坐标平移)表达式的创建是按住P键,在材质编辑窗口空白处单击鼠标左键。也可使用鼠标右键在菜单栏中查找,或在表达式列表中查找。

如图2-39所示,使用Panner表达式让Texture Sample纹理贴图沿X轴做0.5个速度单位的平移滚动,连接完成可以在材质预览窗口中看到贴图向左开始滚动。如果想将贴图滚动方向改为向右,可把Speed X的值改为-0.5或者其他负数,数值越大,纹理滚动速度越快。同理,如果要让纹理从上至下,或从下至上进行平移,在Speed Y的参数栏里填上数值就可以了,正值是从下往上,负值是从上往下。在X和Y轴参数里都填上数值的话,纹理会向设定的两个方向同时进行滚动。

图2-39

Rotator(旋转)表达式无快捷键,可以在编辑窗口空白处单击鼠标右键,然后查找输入rotator,或者在表达式列表找到并拖动到编辑窗口中。看名字可以理解,这个表达式的作用是对纹理进行旋转操作。

如图2-40所示,使用这个节点对一个漩涡型贴图进行旋转,参数中Center坐标轴X和Y的数值给的是0.5,这是将X和Y轴方向从开始到结束定义为0~1,默认取值0.5代表将这两条坐标轴的中心原点的位置设定为旋转中心。Speed参数是控制旋转的速度,数值越大,旋转速度就会越快。参数为正数时做逆时针旋转;参数为负数(如图中的-0.25)时做顺时针旋转。

图2-40

Texture Coordinate(纹理坐标)表达式的快捷键为U。按住U键,在材质编辑窗口空白处单击鼠标左键创建。这个表达式的作用是对纹理进行UV坐标的调整。

如图2-41所示,使用Texture Coordinate连接了纹理表达式。然后在TexCoord表达式属性栏把U坐标系与V坐标系数值设置为2,意思是把纹理表达式中的图案在横向坐标与竖向坐标中各重复两次,能看到预览窗口中的纹理变成了四个漩涡图案,纹理被分成了2×2的结构。如图2-42所示,如果将U系坐标参数改为3,V系坐标不做设置(默认为1),出现图中所示的纹理,此时的纹理变成了通常所说的1×3结构,原始纹理的竖向数量不变,横向数量为之前的三倍。这个表达式能轻易将纹理图案变成需要的阵列结构。例如4×4、8×8等,在如地面、墙壁等一些需要重复利用纹理的元素对象上应用较多。

图2-41

图2-42

2.3.3 常用数学表达式

从这一节开始,将学习材质节点中用得最多的部分:函数的计算表达式,即Math(数学)类表达式。

Add(加法)表达式快捷键为A,按住A键,然后在材质编辑窗口空白处单击鼠标左键创建这个表达式。这个表达式的作用是将两个输入数值的结果相加。

如图2-43所示,使用了两个纹理图案。第一个纹理上的图案是数字1,第二个纹理上的图案是数字2,把这两个纹理分别连接到Add表达式的A与B节点,打开加法表达式的预览,能看到加法表达式中出现了两个纹理图案。看到这里,有的初学者会认为是不是加法出错了?1加上2为什么会是12?并不是计算出错,计算是正确的。在这个示例中,提供的元素并不是两个数字,而是两张纹理贴图,只不过纹理贴图上画着数字1和数字2而已,即使把这两个数字换成其他图案或颜色也是可以的。Add表达式是把这两个纹理上的图案合并到了一起。

如图2-44所示,使用多个Add表达式进行计算。在第一个Add表达式的输出结果之后,再次添加了一个Add节点,同时新建了一个有3号数字的纹理图案,然后把第一个Add表达式的结果,与第三个纹理的表达式进行相加,结果是在后面一个Add表达式中出现了三个图案。它的意义便是将所有输入的数据全部进行相加合并。可以使用多个不同的计算表达式进行混合运算。

Subtract(减法)表达式没有快捷键,可以在编辑窗口空白处单击鼠标右键,然后查找输入Subtract,或者在表达式列表找到并拖动到编辑窗口中。它的作用是将两个输入的数据进行减法计算。

看到如图2-45所示的这个结果不要奇怪,这并不是印刷出现问题,而是两个纹理图案经过减法表达式处理以后的结果。为什么会这样呢?连接减法表达式A节点的纹理图案3,与连接表达式B节点的圆形纹理,经过减法表达式的处理,两个纹理图案的交汇处被减掉了,显示的结果是两个纹理没有叠加的地方,也就是纹理3的下半部分。图中画上红框的部分,就是两个纹理叠加的地方,此处会被Subtract表达式减掉,输出结果是两个纹理没有叠加的地方。

如图2-46所示,这是一个简单的加减法混合运算,将纹理1号和纹理2号这两张贴图添加到Add表达式,然后再次添加一个Add表达式并连接纹理3,它们运算的结果使用Subtract表达式减去一个圆形纹理,再次添加一个Subtract表达式减去一个3号纹理,剩下的图案就是这组表达式的结果了。

图2-43

图2-44

图2-45

图2-46

Multiply(乘法)表达式快捷键为M,按住M键,在材质编辑窗口空白处单击鼠标左键创建这个表达式,作用是将两个输入数据进行乘法运算。

如图2-47所示,Multiply表达式A节点连接的是一个写有“乘”字的纹理图案,B节点连接的是边缘羽化的圆形纹理,两个纹理表达式输入到乘法表达式中计算,输出的是羽化圆形纹理与汉字纹理叠加的结果。我们来看这两个图案在Photoshop中合到一起的效果,再对比在虚幻引擎中两个纹理相乘的结果,有类似使用圆形遮罩应用在A纹理图案上的效果。这个表达式是最常用的。下面使用更为直观的表达式应用来说明乘法表达式的作用。

图2-47

如图2-48所示,乘法表达式的A节点连接画有白色横线的纹理表达式,B节点连接画有红色竖线的纹理表达式,连接到乘法表达式以后的输出结果是一个红色的小长方形,颜色也比正常的红色要暗一些。为什么结果是这样呢?原理是乘法表达式取了白色线条纹理和红色线条纹理相交的位置,颜色的数值也会取两个输入纹理颜色的中间值。如果把纹理也看作一连串数字结构的话,那么在乘法表达式中,0乘以任何数都等于0,也就是说纹理中黑色(黑色是0)的部分与任何纹理叠加,都不会显示黑色部分叠加的纹理,通常乘法表达式作为遮罩使用。

图2-48

Divide(除法)表达式快捷键为D,按住D键,在材质编辑窗口空白处单击鼠标左键创建这个表达式。除法表达式接收A、B两个输入数据,输出A除以B的结果。请不要用零作为除数。

如图2-49所示,示例中除法表达式输入的数据是两个一维常量,A节点连接的常量值为2,B节点连接的常量值为1,那么通过这个节点输出的结果仍然是2,因为2除以1,结果还是2。如果A节点输入值为4,B节点输入值为2的话,结果是2,因为4除以2得到结果为2。

除法表达式在特效制作的材质中用得比较少,一般作颜色曝光调整使用,在这里了解一下它的原理与大概使用方式就可以了。

图2-49

Abs(Absolute Value,绝对值)表达式没有快捷键,在编辑窗口空白处单击鼠标右键,查找输入abs,或者在表达式列表找到并拖动到编辑窗口中。这个表达式的作用是将输入的数据做绝对值计算,结果是负数值就把它换算成正数值。

如图2-50所示,使用了一个一维向量(键盘数字1),给它一个-0.5的值,连接到Abs表达式,在材质预览窗口中看到的结果和赋予一维向量正数值0.5的时候是一样的。如果向这个表达式输入1、2、3等正数时,它输出的结果也会是1、2、3。向它输入-1、-3、-5时,它输出的结果为1、3、5。输入数值为0时,表达式不处理结果。

图2-50

Sine(正弦)表达式无快捷键,在编辑窗口空白处单击鼠标右键查找输入sine,或者在表达式列表拖动到编辑窗口中。Sine表达式的作用是将输入的数据以正弦波动数值推进。如图2-51所示,表达式反复输出-1~1的正弦波数值,通常和Time(时间)节点配合使用。

图2-51

如图2-52所示,将Sine表达式连接Time,通过Abs(绝对值)使取值范围在0~1,忽略0~-1的数值,此时材质预览窗口中可以看到忽明忽暗闪动的效果了。输出结果连接到材质的基本颜色节点,材质的取值一直都在发生变化(0为黑,1为白)。Sine节点唯一的属性是Period(循环周期),也就是发生一次波形震荡的长度,取值越大,它波动一次的时间越长。

图2-52

Cosine(余弦)表达式无快捷键,在编辑窗口空白处单击鼠标右键,然后查找输入cosine,或者在表达式列表找到并拖动到编辑窗口中。它和Sine不同,Cosine输出与Sine相反的余弦波动,如图2-53所示。

图2-53

Cosine用法与Sine一样,作为正弦的镜像,在具体应用的时候可以视情况,将它作为正弦波的反向应用,Cosine与Sine一起使用会有意想不到的效果。

Clamp(限制)无快捷键,在编辑窗口空白处单击鼠标右键查找输入clamp,或者在表达式列表找到并拖动到编辑窗口中。Clamp的作用是限制数值的取值范围。

如图2-54所示,示例中输出常量值为10,连接Clamp表达式输入到材质Base Color节点的结果只有1。在Clamp节点的属性中,默认限制最小取值(Min Default)是0,最大取值(Max Default)是1,也就是说,无论输入的数值是小于零的,还是大于零的,连接Clamp后结果取最大值与最小值中的数值。例如数值是0、0.25、-1、3的四个常量,分别通过默认数值的Clamp表达式,输出的结果为0、0.25、0、1。因为-1是小于零的负数,表达式最小值为0,所以不会取负数值,而是输出最小值0。第四个数值是3,它大于Clamp默认最大值1,输出结果时数值3便被强制改写为Clamp最大值1。

图2-54

Component Mask(分量蒙版)表达式快捷键为Shift+C,也能在编辑窗口空白处单击鼠标右键查找输入component mask,或者在表达式列表的数学类中找到并拖动到编辑窗口中。表达式的作用是将输入的颜色通道选择性地输出。属性中勾选输出的通道会显示在表达式的标题栏内。

如图2-55所示,建立了三维矢量(键盘数字键3),将R、G、B值分别设置为1、0、1。打开三维矢量的预览,可以看到红色值1和蓝色值1,让这个三维矢量变成一个粉红色。新建两个Mask表达式,一个提取R通道和B通道,一个提取R通道和G通道,将三维矢量分别连接到两个Mask表达式中,可以看到,取值通道为R和B的表达式,打开预览以后变为黄色,在三维矢量的属性中,R红色数值为1,B蓝色数值为1,两个数值融合,红色加蓝色也就变成了黄色。而选取R和G通道的Mask表达式,结果为红色,三维矢量的R和G通道数值分别是1和0,所以表达式中提取红色(R通道)通道的数值1,G通道的数值0。将取R、B通道的Mask表达式连接材质Base Color节点,取值R、G通道的Mask表达式连接Emissive Color(自发光颜色),最后在预览窗口中看到的是偏向橙色的颜色,表面呈黄色,但是阴影处又有些许红色作其补色。

图2-55

Append Vector(追加矢量)表达式无快捷键,在编辑窗口空白处单击鼠标右键查找输入append vector,或是在表达式列表的数学类中找到并拖动到编辑窗口中。这个表达式的作用是将单个常量组合在一起,建立多维矢量。

我们将两个常量值(Constant)进行追加,让其变为一个双通道二维矢量(Constant 2Vector),利用这个特性,可以使用这个表达式对多个常量进行追加,让其变为RGB三通道矢量,或者RGBA四通道矢量。

如图2-56所示使用了三个常量进行Append表达式追加,左边第一个常量值为1,第二个常量值为-1,追加到表达式中显示了红色。此时的Append表达式在追加这两个一维常量后,变成了二维矢量(Constant 2Vector)。一个基本的二维矢量是带有R通道与G通道的,此时第一个常量的数值在此变为二维矢量R通道数值,第二个常量的数值变为二维矢量G通道数值,但由于第二个常量的数值是负数,被忽略掉,所以第一个Append表达式的预览是红色。

图2-56

在此基础上追加第三个常量并赋值为1,增加一个Append表达式,连接前一个Append表达式的结果到A节点,连接新常量的结果到B节点,表达式预览变成了紫色。在上一个二维矢量(Append表达式添加两个一维常量的结果)的结果中再次添加一维常量,这个时候Append已经成为一个三维矢量,拥有R、G、B三个通道。已知之前的R和G通道数值分别为1、-1,追加数值为1的常量表达式之后,最后的Append表达式是数值1、-1、1的三维常量,输出的结果为紫色。一般使用这个表达式来凑齐所需要的通道数量,但极限是四通道(RGBA)。

One Minus(1-x)表达式快捷键为O,按住O键在编辑窗口单击鼠标左键创建。也可以在编辑窗口空白处单击鼠标右键,然后查找输入oneminus,或在表达式列表的数学类中找到并拖动到编辑窗口中。这个表达式节点接收一个输入值计算“1-输入值”的结果,然后按通道进行输出。

如图2-57所示,使用了一个三维矢量,数值分别设置为0.25、0.5、0.75,预览为浅蓝色。此时把结果数值连接到One Minus表达式,变成了0.75、0.5、0.25,原因是经过1-x时,表达式会接收三通道的数值信息,分别计算1-0.25的结果、1-0.5的结果和1-0.75的结果,把计算完成的数值作为表达式自身数值,所以表达式预览中的结果为黄色(用这个表达式做补色很方便)。

图2-57

这个表达式用得最多的地方,还是用于做“反向”计算。如图2-58所示,纹理表达式的R通道连接去色(Desaturation)表达式,输出的结果连接1-x(One Minus)表达式,预览窗口中白色变成了黑色,而黑色处变成了白色,完成纹理的颜色反向。

图2-58

Power(幂)表达式的快捷键为E,按住E键在编辑窗口单击鼠标左键创建。也可以在编辑窗口空白处单击鼠标右键,然后查找输入power,或在表达式列表的Math类中也能找到这个表达式。它的作用是保留亮色。

如图2-59所示,输入数据是一个Noise表达式,连接到Power表达式以后,纹理变得更为丰富了,在2倍Exp的计算下,有纹理的部分被提升了亮度,对比细节丰富了。可以把这个表达式节点看作Photoshop中的色阶,保留较亮部分的值。

图2-59

If(条件判断)表达式的快捷键为I,按住I键在编辑窗口单击鼠标左键创建。也可以在编辑窗口空白处单击鼠标右键,然后查找输入if,或是在表达式列表Math类中找到并拖动到编辑窗口中。这个表达式是对两个输入数据进行比较,对比输入数据,对满足条件的数据进行输出。在游戏特效制作中,它常用来制作物体的溶解效果。

如图2-60所示,If表达式的A节点连接常量表达式,常量表达式的数值为0.2,If表达式的B节点连接数值为0.5的常量表达式。在If表达式条件判断A>=B的节点连接三维矢量并把三维矢量的R通道数值设置为1,让它输出红色;A<B判断节点连接另一个三维矢量,把这个三维矢量的G通道数值设置为1,输出绿色。此时示例图中A点输入处值为0.2,B点数值为0.5,因为0.2比0.5小,A<B的条件判断成立,此时If表达式输出的是绿色的。如果把A输入点数值改为0.5或者比0.5的数值更大的数,If表达式会输出红色,因为条件满足A>=B。

图2-60

我们来看这个示例,如图2-61所示,添加了Noise表达式作为If表达式的A节点判断条件。前面讲过,在虚幻引擎中,图案可以和数值相互转换,白色代表1,黑色代表0,A条件输入点的纹理可以看作数值0与1组成的矩阵。 B节点连接的是一个常量数值,给它赋予0.5的数值。在判断条件A>=B节点,添加一个常量并赋值为1。这里的常量1代表的是白色,当满足A>=B条件时输出白色;判断条件A<B节点连接一个常量并赋值为0。这里常量0代表的是黑色,当条件满足A<B时,输出黑色。打开If表达式的预览,可以看到图案被抹去了一部分,由于纹理与数值转换的原理,纹理中小于0.5的地方被黑色填充。如图2-62所示,如果修改输入点B的数值,将常量数值改为1.5,此时在If判断表达式中,数值小于1.5的纹理颜色全部被填充为黑色。

图2-61

图2-62

预览窗口中仅剩下了一点点的白色纹理,在If条件判断中,1.5这个数值已经超过了大部分A节点纹理的亮度,剩下的白色,是在A、B条件对比中大于数值1.5的部分。如果将B节点的常量数值修改超过1.5,那么If表达式输出的颜色将只有黑色。特效制作中的“溶解”效果,就是以If表达式为核心,让A与B输入点数值进行动态对比,完成物体动态消融的效果。后面的案例中会有应用。

Linear Interpolate(Lerp线性插值)表达式的快捷键为L,按住L键,然后在编辑窗口单击鼠标左键创建。也可以在编辑窗口空白处单击鼠标右键,然后查找输入linear interpolate或者lerp,或在表达式列表中找到并拖动到编辑窗口中。这个表达式的功能是将A与B节点的输入数据使用Alpha节点的参数按比例混合。可以把A与B输入点看作两张图片,通过Alpha的数值来混合图片。Alpha数值为0(黑色)的时候,显示的是A节点的图片;Alpha数值为1(白色)的时候,显示B节点的图片;Alpha数值为0.5时,A与B各显示50%。

如图2-63所示,使用了两个三维矢量作为输入数据,颜色为红色的表达式连接A节点,颜色为蓝色的表达式连接B节点。在属性窗口中设置Alpha节点的数值为0.75,输出结果预览是紫色。表达式Alpha数值为0时,输出A节点红色;Alpha数值为1时,输出B节点蓝色。案例中Alpha的数值为0.75,表示红色占比25%,蓝色占比75%,结果显示为紫色。举个通俗点的例子,A节点是糖,B节点是盐,Alpha是厨师,当Alpha数值是0的时候,全部放糖,Alpha数值是1的时候全部放盐,Alpha数值是0.5的时候一半放糖一半放盐,Alpha数值是0.9的时候放10%糖,90%盐,这样应该很好懂了。

图2-63

2.3.4 常用纹理与深度表达式

Texture Sample(贴图纹理)表达式的快捷键为T,按住T键,然后在编辑窗口单击鼠标左键创建。也可以在编辑窗口空白处单击鼠标右键查找输入texture sample找到这个表达式。

如图2-64所示,这个表达式的作用,在上面介绍函数表达式时很多图例中都出现了,通常使用它来导入纹理图案。

图2-64

将纹理贴图素材导入Unreal Engine 4,单击Texture栏下拉箭头按钮,弹出的纹理浏览菜单栏中选择想添加到Texture Sample中的纹理图案,如图2-65所示。

图2-65

Particle SubUV(粒子UV)表达式无快捷键,可以在编辑窗口空白处单击鼠标右键查找输入particle subuv,或者在表达式列表纹理类型合集中找到并拖动到编辑窗口中。它的作用是使粒子系统支持序列纹理。使用方法与Texture Sample表达式一样。

如图2-66所示,是一组4×4的序列纹理,使用的序列纹理只可使用规律排列的图案,例如案例中的纹理素材是512×512像素的图,其中集合了128× 128像素的图案16张,这种以规律横向竖向排列的纹理图才可以使用。

图2-66

Depth Fade(深度衰减)表达式无快捷键,在编辑窗口空白处单击鼠标右键查找输入depth fade,或者在表达式列表Depth类型合集中找到并拖动到编辑窗口中。这个表达式用来降低两个物体之间交叉处的尖锐程度,如图2-67所示。

图2-67

深度衰减表达式一般是用来连接透明通道(Opacity)使用的,属性窗口中参数默认Opacity Default为1,Fade Distance Default衰减值为100,用于调节物体之间融合衰减的距离。

案例中给一个球形物体制作了一个材质并加上深度衰减表达式。如图2-68所示,是球体材质中Depth Fade的衰减值(Fade Distance Default)为默认100时,球体与地面发生交叉时的效果;如图2-69所示,是衰减值为10时,球体与默认地面交叉时的效果。二者角度、位置一致,只是虚化的距离不一样。

图2-68

图2-69