我们今天的目的是用一个圆球的X旋转属性做为驱动值,连接一个智能的判断节点(这是材质类型),从而达到让球体根据旋转的角度来分别赋予不同的材质。打开maya,随便在场景中创建一个nurbs球体(类型没关系),把名称改为Ball,然后打开Hypergraph窗口,并且在保持球体选中的情况下展开节点连接图。
可以看到球体和默认的shader的连接情况,现在再打开Hypershade窗口,这个可比以前的multilister好多了,就是打开的速度慢。接下来要做的就是用几个材质节点和球体的几何属性连接。
点击放大
或者打窗口面板布置成下图所示,这样很方便拖放不同节点。
点击放大
[page]
先说说要做的效果和原理,为了要让球体的X旋转属性来驱动一个节点,并且能够智能判断,所以场景中要加入一个conditionl,这是一个判断的节点。它的原理相当于程序语言中少不了的if,我不会编程,所以用中文表示一下它的意思。如果值1 VS 值2 则 ?? 结果为A ?? 否则 结果为B.
是不是可以这样写
if first term VS second term then
??value = color true
??否则
??value = color false
这里VS可以是等于、大于、小于、不等于等等几个类型,这是数学里的。接下来在hypergraph窗口中(所有的节点都已经显示在里面,,现在可以连接了)。用中键按住Ball不放,拖到conditionl上释放,在弹出的菜单中选择other。
点击放大
现在在连接窗口中找到Rotate,点击前面的+号,选择展开后的Rotate X,然后在右边窗口中选择First Term,现在就把rotate X和first Term连接起来了,也可以选择Second Term,原理一样。first Term的意思想必都明白,就是用它和second tem来做对比,从而判断出值的True和false。
由于我们要做的是如果X轴旋转小于180度,则用一个材质,否则用另一个材质。所以点击conditionl节点,按下ctrl + A,打开conditionl的属性编辑窗,做如下设定。
这里的second term我们用了180,这就是用来做对比的一个数值,这里要说一下,从小到大接受的差不多都是进制为10,100,这些观念,在maya中老是弄错,它所采用的数值格式大多数是最大值为1,最小值为0,好比刚用maya时习惯于RGB的255,老把HSV也当成RGB,结果出了很多错。operation是选择不同的比较方式,这里我们用小于(less than),下面的两个选项是如果比较值为true和为false时的不同情况,到这里可能都明白怎么做了,只要在它们后面分别指定材质就可以做到智能的判断效果。这个例子中在color if true后面指定一个checker贴图,在color if false后面指定一个ramp贴图。现在的hypergraph窗口连接情况。
[page]
看起来还算有条理,如果场景中太多物体话,那才真叫做头大啊。现在很好办,主要的连接都完成,只需要创建一个shader就可以实现了。点击hypershade中的blinn,创建一个blinn材质,然后中键按住conditionl,拖到blinn1上释放,在弹出的菜单中选择color。
最后一步,把blinn1指定给场景中的球体,可以先选定球体,直接把blinn1拖给球体(ball),或者在hypershade中操作更加方便,最后的节点情况和场景如图。
点击放大
最后一步,把blinn1指定给场景中的球体,可以先选定球体,直接把blinn1拖给球体(ball),或者在hypershade中操作更加方便,最后的节点情况和场景如图。
点击放大
旋转一下球体,注意这里我们用的是X轴,当小于180度的时候它表现出来的是黑白的棋盘格,当大于或者等于180度表现出来的则是ramp。