[Maya 材质教程]MAYA材质系统的Utilities工具简介(二)
来源:vacce华设 作者: 发布时间:2007-05-31

[Maya 材质教程]MAYA材质系统的Utilities工具简介(二)

常规工具节点:
   Set Range:Set Range节点将一段范围内的值,重新映射到另一段范围内,然后输出。注意它和Clamp节点的区别,Clamp节点是专门针对颜色值的。举一个MAYA帮助中的小例子可以理解Set Range节点的作用。

   建立一个nurbsSphere,然后指定一个Blinn材质。生成一个Set Range节点。我们下面要做的是用nurbsSphere的X、Y、Z轴向的旋转来控制Blinn的ColorR、ColorG、ColorB。换句话说,是将0——360这一范围的值,重新映射到0——1这一范围内。

   打开Connection Editor,将nurbsSphere的RotateX、RotateY、RotateZ、分别连接到Set Range节点的ValueX、ValueY、ValueZ上。把Set Range.OutValue输出到Blinn.Color上。然后设置Set Range节点的各项值如图:

   现在说明一下Set Range节点的各项参数:Min和Max的值是我们所希望得到的,在这个例子里是Min=0,Max=1;而Old Min和Old Max代表原来范围的值,在这里是Old Min=0,Old Max=360。Value可以理解为输入值的接口。Set Range节点的工作原理可以由如下公式来解释:OutValue = Min + (((Value-OldMin)/(OldMax-OldMin)) * (Max-Min)) 现在,我们旋转nurbsSphere,它的颜色就会根据旋转的方向和角度变化。

点击放大图片

点击放大

   vectorProduct :vectorProduct节点允许一个矢量乘以另一个矢量或矩阵,它实际上就是一个运算器。在程序语言中经常用到这种运算。vectorProduct节点的主要部分的解释如下:
   Operation
   No operation:将Input1的值不做处理,然后输出;
   Dot Product:这是缺省值。Input1和Input2做点乘运算。点乘运算的原理如以下公式:
   假设有两个矢量(a,b,c)和(d,e,f)

   Dot Product = (a*d) + (b*e) + (c*f)

   注意Dot Product的值是一个单一的值,这就意味着vectorProduct节点在输出的时候,选择OutputX、OutputY、OutputZ三个值中的任何一个都可以。
   Cross Product:叉乘产生一个新的矢量,原理如下:
   x = (b*f)-(c*e)
   y = (c*d)-(a*f)
   z = (a*e)-(b*d)
   注意不要将它和Multiply Divide节点弄混了,Multiply Divide节点的原理是:
   x = a*d, y=b*e, z=c*f
   Vector Matrix Product:将Input1乘以矩阵生成一个新的矢量,公式如下:
   Outvector = Input x Matrix
   假设有一个Input矢量为(a,b,c)和一个Input矩阵:
   A B C D
   E F G H
   I J K L
   M N O P
   则:
   x = (a*A) + (b*B) + (c*C)
   y = (a*E) + (b*F) + (c*G)
   z = (a*I) + (b*J) + (c*K)

   Point Matrix Product的原理是:
   Output = Input x Matrix
   x = (a*A) + (b*B) + (c*C) + D
   y = (a*E) + (b*F) + (c*G) + H
   z = (a*I) + (b*J) + (c*K) + L
   注意以上两种算法都会忽略Input2。

   Normalize Output:
   缺省情况下是关闭的。当打开时,它生成的矢量值在-1到1的范围之间。在使用Point Matrix Product操作时,Normalize Output无效。

   Matrix:
   Matrix不出现在属性面板中,只出现在Connection Editor中。使用Matrix可以将场景中的对象从相机坐标空间转换到世界坐标空间。