Maya Python,连接到2个列表

时间:2017-08-02 03:09:26

标签: python rendering maya

所以伙计们,这是关于Maya,python的问题。

我可以创建一个循环并设置着色器A颜色为R着色器B颜色为G,shaderC为B

for i in range(5):
    shader = cmds.shadingNode ('surfaceShader', name=('mm'+str(i)), asShader=True)
    cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=('mmSG'+str(i)))
    cmds.setAttr(shader +'.outColor', 1,0,0)

这是我到目前为止所做的,我每3个步骤都会坚持......

2 个答案:

答案 0 :(得分:1)

您几乎就在那里 - 您只需要将着色器的outColor连接到着色组中的surfaceShader属性:

import maya.cmds as cmds

for i in range(5):
    shader = cmds.shadingNode ('surfaceShader', name=('mm'+str(i)), asShader=True)
    sg = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=('mmSG'+str(i)))
    cmds.setAttr(shader +'.outColor', 1,0,0)
    cmds.connectAttr(shader + ".outColor", sg + ".surfaceShader")

修改

我误读了OP的意图。如果想要制作一组具有指定颜色的着色器,那么您想要做这样的事情:

  colors = {'red': (1,0,0), 'blue': (0,1,0), 'green':(0,0,1)} 

  for name, color in colors.items():
      shader = cmds.shadingNode ('surfaceShader', name=(name), asShader=True)
      sg = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=(name + "SG")
      cmds.setAttr(shader +'.outColor', color[0], color[1], color[2])
      cmds.connectAttr(shader + ".outColor", sg + ".surfaceShader")

答案 1 :(得分:1)

所以我最终使用

import maya.cmds as cmds

shaderlist=[]

for i in range(5):
    shader = cmds.shadingNode ('surfaceShader', name=('mm'+str(i)), asShader=True)
    sg = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=('mmSG'+str(i)))
    cmds.connectAttr(shader + ".outColor", sg + ".surfaceShader")
    shaderlist.append(shader)



for shader in shaderlist[0::3]:
    cmds.setAttr(shader+'.outColor', 1.0,0,0)

for shader in shaderlist[1::3]:
    cmds.setAttr(shader+'.outColor', 0,1,0)

for shader in shaderlist[2::3]:
    cmds.setAttr(shader+'.outColor', 0,0,1)