当前位置: 主页 > 平面设计 > MAYA材质系统的Utilities工具简介(二)

MAYA材质系统的Utilities工具简介(二)

  • 2022-02-05
  • 来源/作者: PS.ONEGREEN.ORG    / 佚名    
  • 4 次浏览

  01常规工具节点(续)

  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,它的颜色就会根据旋转的方向和角度变化。

  MAYA材质系统的Utilities工具简介(二)

  02vectorProduct

  vectorProduct节点允许一个矢量乘以另一个矢量或矩阵,它实际上就是一个运算器。在程序语言中经常用到这种运算。vectorProduct节点的主要部分的解释如下:

[NextPage]

  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可以将场景中的对象从相机坐标空间转换到世界坐标空间。

[NextPage]

  下面用一些小例子来

感受一下vectorProduct节点的作用:

  Dot Product操作:

  建立一个球体并指定Blinn材质。

  创建一个directionalLight并将其Light Direction连接到vectorProduct节点的Input1;

  建立一个SampleInfo节点并将其Normal Camera连接到vectorProduct节点的Input2;

  vectorProduct节点的操作方式为Dot Product

  将vectorProduct节点的Output值任意一个连接到Blinn.ColorR上。

  结果如图:

  现在球体红色的部分对应Blinn.ColorR的值就为Dot Product操作后产生的值,我这里的ColorR=0.660。如果将vectorProduct节点的OutputX、OutputY、OutputZ分别连接到Blinn.ColorR、Blinn.ColorG、Blinn.ColorZ上。那么由于OutputX、OutputY、

OutputZ的值是相等的,都是0.660。所以Blinn.ColorR、Blinn.ColorG、Blinn.ColorZ都等于0.660。

  MAYA材质系统的Utilities工具简介(二)

  03Cross Product操作:

  建立一个球体并指定Blinn材质;

  建立一个SampleInfo节点;

  建立一个Set Range节点。

  将SampleInfo节点的Ray Direction连接到vectorProduct节点的Input1;

  提取出物体表面光线方向的信息。

  将SampleInfo节点的Normal Camera连接到vectorProduct节点的Input2;

  提取出物体表面法线信息。

  将vectorProd

uct节点的Output连接到Set Range节点的Value;

  将Set Range节点的outValue连接到Blinn.Color。

  设置操作方式为Cross Product

  打开vectorProduct节点的Normalize Output,

  这样vectorProduct节点的Output值的范围在-1到1之间。

  因为颜色没有负值,所有用Set Range节点来将vectorProduct节点的Output值限制在0——1之间。

  Set Range节点的值按如下设置:

  我们所要得到的是:

  Min=0;Max=1

  vectorProduct节点的Output值范围是:

  OldMin=-1,OldMax=1

  渲染场景。

  另:如果不是很清楚的话不要紧,先感觉一下这些操作所起的作用,慢慢做得多了,就理解了。有时间的话,我再做一些实用的例子,

  就

象前面的卡通材质一样。

  MAYA材质系统的Utilities工具简介(二)