使用Maya Python设置具有着色蒙版的渲染层

时间:2016-06-14 08:39:54

标签: python maya

所以我正在尝试编写一个脚本,该脚本从列表中获取材质名称,创建以每种材质命名的渲染层,然后将白色表面着色器应用于共享渲染层名称和黑色表面着色器的材质到没有的对象。

import maya.cmds as cmds

matName = ['blue_mat', 'green_mat', 'red_mat', 'purple_mat']

cmds.shadingNode('surfaceShader',asShader=True,n='WhiteMat')
cmds.setAttr('WhiteMat.outColor', 1.0, 1.0, 1.0, type = 'double3')
cmds.shadingNode('surfaceShader',asShader=True,n='BlackMat')
cmds.setAttr('BlackMat.outColor', 0.0, 0.0, 0.0, type = 'double3')

for i in range(4):
    cmds.select(cl=True)
    cmds.select( hi=True, all=True)
    cmds.createRenderLayer(n=matName[i]+'_layer')
    cmds.hyperShade(objects=matName[i])
    cmds.hyperShade(assign='BlackMat')
    if cmds.hyperShade(objects='BlackMat'):
        cmds.hyperShade(objects=matName[i])

到目前为止,我已经用它创建了包含所有对象的图层并将黑色着色器应用于所有对象,但是我对如何将白色着色器应用于仅在其命名的图层上的材质感到有点迷失。 。我想我可以使用if语句来设置它,但我是Python的新手,仍然试图处理事情。

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,弄清楚了。只需更改一些内容,并在let str = num + ''; 中加入if else即可按正确的顺序应用着色器。

range