就快 - 你只需要連接着色器的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