当前位置: 主页 > 平面设计 > MAYA节点实现3S效果

MAYA节点实现3S效果

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

  1、先准备以下的一个场景。

  MAYA节点实现3S效果

  2、我们将Hypershade编辑器打开,并使用环境光色Ambient来模拟,因为把环境色提亮时,背光面和受光面都会提亮,当环境色是彩色时,将会与物体的固有色相融合。

  MAYA节点实现3S效果

  MR等渲染器可以直接调节3S的效果是非常好的, 用MAYA内部节点实现的3S肯定要那些强悍的渲染器差,并且这个教程的目的也并不是在比效果上,而是要你明白3S的一些特性,然后我们根据它的特性再利用节点来表达(深入理解MYA节点的强大),因为其

中会牵扯到一些少用的节点,象点乘,还有利用表达式之类的。

  3、先看以下下面这张散射的原理图。并分析一下这张原理图:现在的问题是我们不能单独控制受光面和背光面的强度。根据下图,设想一下使用利用ramp贴图(ramp我就不用讲了吧)上方和下方的颜色来控制受光面和背光面的强度。那既然要控制受光面和背光面的强度,我们马上会想到影响受光面和背光面强度的两个因素:灯光的方向和法线矢量。那该如何提取这两个因素的数据呢,自然你会用Sample Info节点。因为受光面有个为1的数,背光面有个为0的值。

  MAYA节点实现3S效果

  4、建立这些需要的节点并连接它们,除了上面说到的节点外,在建立一个vector Product(矢量求乘)的节点,它是个矢量运算器。具体请看下图。

[NextPage]

  MAYA节点实现3S效果

  5、现在来分析一下现在的shade网络:图示中其实已经说的很清楚了,我说一下现在的渲染结果为什么是这样的。看下

  图。

  MAYA节点实现3S效果

  6、根据上图,我们需要一个新的节点(Set Range)使点乘出来的坐标植限制在0-1的范围内,具体如图。

  MAYA节点实现3S效果

  7、渲染测试,如图。

  MAYA节点实现3S效果

  8、给材质附加属性,如图。

  MAYA节点实现3S效果

  9、首先肯定是散射颜色控制:打开脚本编辑器,输入以下的语句:

  addAttr -ln translucenceColor -at float3 -uac lambert2;

  addAttr -ln translucenceColorR -at "float" -p translucenceColor lambert2;

  addAttr -ln translucenceColorG -at "float" -p translucenceColor lambert2;

  addAttr -ln translucenceColorB -at "float" -p translucenceColor lambert2;

  这里的 translucenceColor 是自己给属性起的名字, lambert2是要增加到的那个材质

  MAYA节点实现3S效果

[NextPage]

  10、对这个新增的translucence Color属性进行关联,如图。

  MAYA节点实现3S效果

  11、看看关联的结果,这种属性关联的方法在复杂的shade网络中非常实用,可以让我们最终调节效果很方便,只要在材质球的属性编辑器中工作即可,不用在复杂的网络节点中苦找你要调节的属性。如图。注意:颜色中V值的使用,大家都清楚V是提高颜色的亮度的,也就是增益,它可以控制散射的亮度。

  MAYA节点实现3S效果

  12、下面考虑灯光和颜色和强度对材质的影响。大家可以调节一下灯光颜色,就会发现,灯光颜色和物体的受光面产生了颜色融合,但背光面没有任何变化,观察现在的shade网络,很明显,物体的背光面是靠ramp来控制颜色的。如图。

  MAYA节点实现3S效果

  13、现在来对背光面的颜色进行融合,这时你肯定可以想到使用BlendColor融合颜色这个节点:把灯光的颜色输入到BlendColor的颜色一上,把背光面的颜色输入到Color2上进行两个颜色的融合。但这时用朋友又会想到灯光强度的问题,因为灯光越强,光线的穿透力高,背面透过的光线自然越多。

  MAYA节点实现3S效果

  14、渲染测试一下,灯光的颜色和强度已经成功和背光面产生了融合。同样为了控制方便,我们把这个融合的数据提出到lambert2材质的附加属性中。就象前面增加translucence Color那样。不同的是前面我们增加的是一个颜色属性,现在是

控制两个颜色的融合程度,这个属性我们可以起名为:LightcolorMix(灯光颜色融合)使用这样一句mel: addAttr -ln lightcolorMix -at double -min 0 -max 1 -dv 0 lambert2;因为BlendColor中的Blender属性是控制颜色融合的,那自然我们应该把新增的lightcolor Mix属性和Blender属性相关联。

[NextPage]

  MAYA节点实现3S效果

  15、观察一下我们现在的shade网络和效果,从中发现问题,如图。那就是我们刚加入的新属性:lightcolor Mix。当我们它的值调到0的时候,背光面的颜色一点都不和灯光颜色融合,而是来自于附加的translucence Color。那是因为

我们的lightcolor Mix是和blender属性相关联,当blender为0的时候,全部选用blendercolor2的颜色。所以现在我们要把灯光的强度提出来和散射颜色相乘。因为刚才我们知道现在灯光属性里面的light Intencity是个R,G,B值,所以在这里要用一个把R,G,B矢量转成标量的节点:luminance。

  MAYA节点实现3S效果

  16、先要把散射颜色的强度V值提取出来,也就是散射的增益,在lambert2里增加这个属性,命名为:sanshe Power,使用这句MEL:

  addAttr -ln sanshePower -at double -min 1 -max 10 -dv 1 lambert2;

  建立一个新的节点:MultiplyDivide1,将刚附加的Sanshe Power送到Mul

tiplyDivide1节点input1的X,Y,Z上,把前面附加的translucence Color送到MultiplyDivide1的input2口上。再将MultiplyDivide1的output连接到ramp的color Entry List[0]Color上。如图。

  MAYA节点实现3S效果

  17、现在调节Sanshe Power,看看效果。

  MAYA节点实现3S效果

  18、先建立luminance和MultiplyDivide2两个节点,把灯光节点的lightIntencity属性和luminanc

e节点的Value想连;把luminance的outValue连到MultiplyDivide2的input x,y,z三个属性上;将lambert2材质我们附加的translucence Color属性连到MultiplyDivide2的input2上。再将MultiplyDivide2的output连到刚才的MultiplyDivide1的input1上。如图。

  但此时我们发现了一个很严重的问题,我们的lightcolor Mix属性失效了。解决这个问题:这是因为那个ramp贴图是我们整个shade中的核心,所有的值都返回到它的零号颜色属性中去。而那个属性只有一个,当已有接点连接到它时,再连接另一个节点过去的时候,前面的那个节点会自动断开。所以我们现在要对目前的shade作个小小的修改,避免这种情况的发生。

  先把MultiplyDivide1和ramp的连接断开,把MultiplyDivide1的output连接到BlenderColor上的color2上去,在把blendercolor的output连接到ramp的position为0的颜色上。

 << 上一页  [11] [12] 下一页