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

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

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

  MAYA的材质体系是非常优秀的,它把程序的逻辑思想直接体现在高效的操作中。在MAYA中编辑材质其实很象在编写一段程序。这是有别于MAX的方法。

  所以MAYA独特的思考方法令人难以理解。

  掌握MAYA的材质系统不仅仅是创造完美的shader,Maya是一个将感性和理性完美融合的动画软件,如果熟练地掌握了Maya材质编辑系统独特的工作方式,会令我们在材质的设计能力上获得巨大的技术突破。

  因为Maya的“Utilities”工具的能力非凡,并且要想灵活使用这些工具需要较强的逻辑能力,所以我试图把MAYA的Utilities用我自己的理解解释一下。

  Maya自带的Help文件非常系统和完善,是最好的学习资料。因此这里的文字和帮助内容重复是不可避免的。

  另:在接触三维动画软件的渲染系统时,很容易碰到“Shader”这个术语。目前国内对这个术语的翻译有很多种,比如:阴影、材质、明暗生成器等等,我自己更倾向于“明暗

生成器”这种译法。

  常规工具节点:

  Array Mapper

  Array Mapper节点一般是嵌入在粒子系统中用的,粒子通过Array Mapper节点调用Maya的Texture。

  Bump Utilities

  有两种方法在一个表面上创建Bump(凹凸)效果。

  应用一个Bump贴图,从而在表面产生凹凸感觉。

  使用置换(Displacement)贴图建立凹凸感,置换贴图是真实地移动物体表面的几何结构。

  这两种方法各有利弊。Bump贴图渲染效率更高,但物体表面边缘实现不了凹凸效果,还有一点是Bump贴图只能创建轻微的凹凸效果,不能实现极凹凸的感觉。

  置换(Displacement)贴图实际上是移动物体表面的几何特性,所以是效果最真实的方法,但应用这种方法的物体的UV段数必须足够多,所以这种方法的计算量非常大,最后渲染成品的时候比Bump贴图要慢很多。

[NextPage]

  Bump 2d 和Bump 3d的公共属性

  Bump Filter和Bump Offset是用来改善Bump贴图的细节。如果着色后的图像中凹凸区域有明显的锯齿和闪烁,可以通过调节Bump Filter或者Bump Offset的值来改善。Bump Filter的缺省情况下值为1,当其大于1的时候,凹凸的渲染趋向于平滑;小于1的时候,凹凸的渲染效果趋向于尖锐。

  Bump Offset的缺省值为0,把它理解为在Bump Filter效果的基础上相对地放大更通俗一些。缺省情况下,把Bump Offset的值增加很小的一部分就能起到很大的模糊作用。要想精确地看到Bump Offset效果,可以把Bump Filter的值设为0,然后增大Bump Offset的值。

  Bump Depth控制凹凸效果的程度。

  使用Bump贴图的方法:

  建立一个Bump 2d 或者Bump 3d节点,在Connection Editor中将Bump 2d或者Bump 3d节点的OutNormal连接到材质

(比如:Blinn)的NormalCamera上。

  将Texture的OutAlpha连接到Bump节点的BumpValue上。

  Bump 2d

  Bump 2d节点用来转换一个2D Texture在表面上产生凹凸效果。用前面提过的方法可以很轻易地做出凹凸效果来。

  有必要提的是,如果材质上要有混合两种以上的2D texture的凹凸效果时,如何来实现这种材质外观?Maya4.0的Help里讲述了方法。这里用一个样例简单介绍一下。

  1、建立两个2D Texture,一个是Cloth,一个是Fractal;

  2、建立两个Bump 2d节点和一个Blinn材质;

  3、将Cloth1的outAlpha连接到Bump 2d1的bumpValue上,并将Bump 2d1的outNormal连接到Blinn1的normalCamera上。

  4、同样,将Fractal1的outAlpha连接到Bump 2d2的bump Value性上,并将bump 2d2的outNormal连

接到bump 2d1的normalCamera上。

[NextPage]

  5、把Blinn1指定给所需要的物体对象。

  还有一个问题就是:如果同时指定了Bump贴图和环境贴图(Environment Texture)到物体后,你会发现由环境贴图生成的反射会不真实。原因是Bump贴图的信息没有传递到环境贴图上。有两种方法来解决:一是用鼠标拖放操作将Bump贴图的outNormal属性连接到环境贴图的normalCamera属性上;二是利用Maya提供的一个MEL命令来实现,在命令行中输入以下命令:

  cnctBumpProjNormal shader-name

  其中shader-name是材质的名称。

  Bump 2d节点还有两个参数是Adjust Edges和Provide3d Info。

  Adjust Edges用来改善边界效果。缺省情况下,在两个相接地并指定了Bump贴图的表面之间的接缝处渲染后会有一些杂乱,打开Ad

just Edges选项后可以解决这个问题。

  如果在一个材质网络中,凹凸效果由一个2D Texture和一个3D Texture嵌套生成,那么应该打开Provide3d Info选项,这样,3D Texture的效果才能实现。

  Bump 3d

  Bump 3d节点的使用方法和Bump 2d节点基本一样,所不同的是Bump 3d节点是用来转换一个3D Texture在表面上产生凹凸效果。

  Condition

  Condition节点的原理可以按以下形式写出:

  If ( A operation B )

  Outcolor = Color1

  else

  Outcolor = Color2

  Condition节点输出的颜色值是根据预定的条件产生的。Condition节点通过比较A值与B值来发现A值是否大于、小于、等于、不等于、大于等于或小于等于B值,如果条件为真,则Outcolor输出Color1;否则,Outcolor输出Color2。

>

  如果懂一点编程的常识,就不难理解Condition节点的原理。

  Condition节点总是和其它节点结合使用,它可以使Shader网络在一种情况下用一种形式工作,而在另一种情况下用另一种形式工作。

[NextPage]

  Condition节点的这种智能性的可以自动判断的工作方式极具灵活性,在设计材质时非常有价值。

  Light Info

  Light Info节点在某种角度上说,其功能有点儿象Sampler Info节点。Sampler Info节点提供物体表面的信息,而Light Info节点提供场景中灯光的信息。

  Light Info节点需要嵌套在其它节点中起作用,主要提供灯光的位置、方向和距离等灯光信息。

  下面的一个简单样例可以感性地理解一下Light Info节点的作用:

  1、建立一个Nurbs Plane并进行缩放操作使其与Maya透视视图中缺省的Grid差不多大小;

  2、建立一个Spot Light并调整位置和角度:

  3、选择Spot Light,按Ctra+A叫出属性编辑器,在Light Effects部分,单击Intensity Curve旁边的Create按纽。则Maya创建了一个强度曲线节点,并把它连接到Intensity上。

  4、选择Spot Light,在Hypershade中显示出上、下游节点,可以看到刚才的操作创建了两个节点,一个是Light Info节点,一个是IntensityCurve节点。Maya的这个功能允许用户使用强度曲线来创建自定义的亮度衰减。

  5、在Hypershade中选择spotLightShape1节点,打开Graph Editor,可以看到方才创建的强度曲线。在这里,可以自由地编辑灯光的强度。为了容易理解和简化操作,删除中间的所有编辑点,只保留首尾两个编辑点。

  6、这里X轴为取样距离,Y轴为灯光的强度。将末尾的编辑点Y轴的值设为1,开始的编辑点Y轴的值设为2。利用Maya的IPR渲染场景,以便在改变强度的数值时,可以在渲染视图中实时地看到调节

后的效果。

  这个节点网络的连接情况是这样:

  spotLightShape1.worldMatrix[0]输出到Light Info.worldMatrix;

  Light Info.sampleDistance输出到IntensityCurve.input;

[NextPage]

  IntensityCurve.output输出到spotLightShape1.intensity。

  Multiply Divide

  Multiply Divide(乘除)节点有三部分——两个Input属性和一个Operation(操作)选项。Operation选项给Input1和Input2提供Multiply(乘)、Divide(除)或者Power(幂)的运算规则,然后通过Output将运算的结果输出。

  不同的运算规则产生的结果可以用以下的公式解释:

  Multiply

  OutputX = Input1X *Iinput2X

  OutputY = Input1Y * Input2Y

  OutputZ = Input1Z * Input2Z

  Divide

  OutputX = Input1X /Iinput2X

  OutputY = Input1Y / Input2Y

  OutputZ = Input1Z / Input2Z

  Power

  OutputX = Input1X Iinput2X

  OutputY = Input1Y Input2Y

  OutputZ = Input1Z Input2Z

  需要注意的是Multiply Divide节点不能进行矢量运算,如果需要进行矢量运算,应该用的是Vector Product节点。

  Plus Minus Average

  Plus Minus Average节点顾名思义,是对Input属性列中进行Plus(加)、Min

us(减)和Average(平均值)运算。Plus Minus Average节点有一些区别于其它工具节点的特性。

  首先,它可以输入多个连接;

  其次,Plus Minus Average节点的Input1D、Input2D和Input3D部分的输入值必须分别是相对应的一个值、两个值和三个值。比方说,要把“Stucco”的Outcolor输入到Plus Minus Average节点中,应该连接到Plus Minus Average节点的Input3D中,而不是Input1D和Input2D。因为“Stucco”的Outcolor包括Outcolor R、OutcolorG和OutcolorB三个值。

  Projection

  Projection节点应用频率很高,通常是用来把2D Texture投影到3D表面上。这个节点原理比较容易理解,和其它三维软件的同类功能相近,很容易掌握,这里不过多解释。

[NextPage]

 << 上一页  [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]  ... 下一页  >>