
2.7 遮罩纹理制作
在材质制作中,很多时候会用到遮罩效果,例如制作熔岩地型时,熔岩周围的石头不动,石缝中有熔岩会缓慢流动,有灼热的火焰,有高温引起的空气扭曲。这一节将学习遮罩材质简单的应用。
如图2-110所示,整个球体被一层云状纹理覆盖,球体上有线条在发光,其余部分保持原有的纹理亮度。

图2-110
如图2-111所示是这个球体的材质的节点图,我们使用了两张不同图案的贴图纹理(Texture Sample)来进行纹理的叠加(Add)。先来看第一个纹理材质部分。

图2-111
如图2-112所示,在这个部分,我们使用TexCoord表达式对贴图纹理进行UV划分,表达式的UTiling与VTiling数值为2,意思是将Texture Sample表达式中的纹理重复两次。三维矢量的RGB通道数值分别设置为2、0.1、0,使表达式输出的颜色为橙色。然后将纹理表达式与三维矢量进行乘法运算,得到如图2-112所示的纹理。

图2-112
再来解析高亮线条部分,如图2-113所示,我们使用的纹理是黑白线条,三维矢量表达式的RGB通道参数分别是10、1、0,颜色为高亮金黄色,颜色倍数超过2倍,材质就会开始高亮并外发光。把纹理表达式与三维矢量进行乘法运算,得到金黄色的线条纹理。乘法表达式只对有颜色的部分进行计算,黑色部分是不进行计算的,因为白色的数值是1,而黑色的数值是0,零乘以任何数都是零,所以黑色部分仍然会输出为黑色。

图2-113
如图2-114所示,最后将云状纹理表达式与线条纹理表达式的乘法结果使用Add表达式进行加法运算,得到最后的结果。

图2-114
利用这个示例的材质原型,我们进一步制作材质细节。在线条纹理部分加上另一个遮罩,使高亮线条纹理的细节更为丰富。
如图2-115所示,保留了之前球体的材质表达式连接结构(只是关闭了表达式预览),添加了一个Panner(坐标平移表达式),一个渐变的纹理表达式和一个乘法表达式。

图2-115
如图2-116所示,Panner属性窗口中Speed X数值设置为-0.1,使连接的纹理表达式图案沿X轴平移。将渐变纹理表达式与黑白线条的纹理表达式进行乘法运算,可以在乘法表达式的预览中看到黑白线条纹理有了渐变形态变化。这里只是调节线条与渐变纹理,没有对基础噪波纹理部分造成影响,预览效果中只是物体高亮线条部分有了渐变变化。
如图2-117所示高光部分会像心电图一样从左至右产生渐变变化,淡入淡出。接下来的示例会在此基础上进一步提升应用技巧。

图2-116

图2-117
图2-118示例中,我们对球体高亮线条部分进行紊乱处理,使材质中的纹理贴图产生动态紊乱,让纹理有更多的变化。
在这个示例中,如图2-119所示,保留了上一个球体的材质结构,只是对线条纹理的这个表达式做动态处理。

图2-118

图2-119
这一节的重点在于如何制作纹理表达式的动态效果。我们选中云状纹理表达式复制(Ctrl+C),然后粘贴(Ctrl+V)出来,添加一个Panner表达式连接刚刚复制的纹理表达式,在Panner表达式的属性窗口中,设置Speed X的数值为0.1,添加一个TexCoord表达式,在它的属性窗口中将横向与竖向数量分别设置为3。调整完毕后把TexCoord、Panner与Texture Sample这三个表达式进行连接,然后把这三个表达式复制一份并粘贴,调整粘贴出来的这组表达式的Panner属性,把Speed Y数值设定为0.05,使两组贴图朝向不同的方向进行UV滚动,形成交错移动。随后添加Add表达式连接两个纹理表达式的任意单通道,如图2-120所示。

图2-120
注意
输入纹理贴图的数据只支持单通道!如果使用纹理表达式的RGB混合通道进行连接,会出现如图2-121所示的报错情况。
将连接了两个纹理表达式的Add加法表达式,与一个新建的TexCoord表达式进行加法计算,结果连接到线条纹理的Texture Sample表达式中。打开表达式的预览,能够看到白色线条纹理有了类似水波样的效果,这是由两组向不同方向平移的噪波纹理输入而形成的。
如图2-122所示,图中箭头处添加一维常量与乘法表达式,常量表达式数值越靠近0,紊乱效果越弱;数值越大,紊乱效果就越明显。增加的这两个表达式有调节紊乱强度的效果,类似控制开关。

图2-121

图2-122