从Maya 2016.5加入的新渲染层功能“渲染设置”(Render Setup)里有两种覆盖对象渲染方式的方法:材质覆盖和着色覆盖。这两种覆盖的原理有一些区别,在使用时要针对不同情况加以区分。
从Maya节点的连接方式来看,三维几何形状的节点连接到Shading Engine节点,然后Shading Engine节点又连接到Lambert或者是Phong这样的材质节点,也就是
三维形状 ー(连接A)ー> Shading Engine <ー(连接B)ー 材质
这样的关系
在Render Setup里,把上述关系里的连接A覆盖住的功能叫做材质覆盖(Material Override),把连接B覆盖住的功能叫着色器覆盖(Shader Override)。Maya里“材质”和“着色器”(也有材质球这样一种叫法)的概念十分混淆,有的渲染器里就叫材质,有的渲染器里就叫着色球或者材质球。在这个Render Setup里材质和材质球覆盖的名字我个人感觉是用反了的。

材质覆盖
材质覆盖是把形状节点的instObjGroups的连接终点指向其他Shading Engine的功能。这个覆盖的对象节点就是场景中的对象或者是组,和旧式渲染层的材质覆盖使用起来的感觉比较相近。

1. 材质覆盖的对象实际上是形状节点,比如多边形Mesh或者是NURBS曲面。在Render Setup的集合里加入了对象或者是组,实际上Render Setup会把那个对象或者是组(其实都是Transform节点)的子层级里的形状节点都列举出来成为覆盖对象。
2. 材质覆盖最经常遇到的一个问题就是,如果某个对象的组件(点,边,面,UV)被加入到了集(Set)里面,或者是历史构造里有变形器。Maya的变形器也是经过集再作用在形状节点上的,所以说问题的原因都只有一个:形状节点被加入在集里面。这时候渲染覆盖会出现下面的警告,并且不能覆盖该对象的材质。
Warning: Failed to make connection for material override materialOverride1. Note that per-face assignments are not supported with material overrides.
※这个问题在maya 2018中存在,在maya 2020.1中已得到修正。跳过这一问题请点这里。
被添加到集里的对象通过节点编辑器观察可以看到,Shading Engine和集都是从形状节点的instObjGroups属性连接出来,因此Maya会误以为这个对象发生了面层级的材质指定,而发出“因为有面层级的材质指定所以无法覆盖材质”的警告。
如果不得已必须使用集或者变形器的话可以通过下面的方法避免这个警告:
- A 使用着色器覆盖
- B 用变形器的对象,使用一个新的形状节点专门用来渲染
- C 在masterLayer下直接进行面层级的材质指定
方法B的具体操作方法就是在场景里新建一个多边形物体,什么形状都可以,姑且称该对象为替身。然后删除历史构造,把要变形的形状节点(原身)的outMesh连接到替身的形状节点的inMesh上,然后对替身进行材质覆盖就可以了。

方法C是这里面最难理解的,但也是最好快省的解决方法。但是由于会发生面层级的材质指定所以使用场面上还是有局限性。MasterLayer上就对对象的面层级进行材质指定的话,这个对象的形状节点会多出来一个叫Comp Inst Obj Groups的属性。下面是我的推测,Render Setup在处理拥有Comp Inst Obj Groups属性的对象时,就会忽略它已经被面层级的材质指定了的这个事,继续执行材质覆盖的处理。

关于面层级材质指定的各种条件判定可以总结为下面的流程图。

着色器覆盖
着色器覆盖是针对Shading Engine节点的surfaceShader属性的覆盖。(属性名叫surfaceShader但是在属性编辑器里却显示为Surface Material,Maya里Shader和Material的概念真的是混淆。。。)


1. 着色器覆盖不会改变置换贴图(Displacement)的影响,这一点要特别注意。
2. 着色器覆盖和场景里对象的层级没有关系,因此即便创建了一个集合,想把某个组里的对象进行着色器覆盖也是没有效果的。一旦使用了着色器覆盖对A材质进行覆盖,场景里所有A材质的物体都会受影响。
3. 如果想对某个个对象进行着色器覆盖,就要新建一个专门为该对象提供的Shading Engine节点。可是一旦有很多个Shading Engine节点公用一个材质节点的话,通过Hypershade Editor给对象指定材质时那个对象都会被添加到最新创建的Shading Engine里面,在管理上会产生一定的麻烦。
总结
以上就是Maya渲染设置里关于材质覆盖和着色器覆盖的原理,区别与注意点的区别。不管是哪一种覆盖都有各自的长处与陷阱,在使用时一定要具体问题具体分析,其实千言万语汇成一句话,去你妈的Maya。。。
本文转载自 tong si