就快 - 你只需要连接着色器的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")
感谢您的回复:)))是的,嗯,但我的问题是我如何设置着色器[0]是红色,着色器[1]是绿色,着色器[2]是蓝色,并使其循环....每三步... – Eddie
所以你创建一个词典它和你如何循环三次ir?我的意思是......如果我有着色器4 5 6 7 8 9 10a – Eddie
在这种情况下,它只能制作3个着色器,分别叫做红色,绿色和蓝色 - 你没有说清楚你需要一个开放式列表。您可以将字典键更改为0,1和2,然后使用带有%运算符的for循环以获得0,1,2,0,1,2 ....,其中包含任何迭代次数 – theodox