Maya Python,连接到 2 个列表
Maya Python, Connect to 2 lists
伙计们,这是关于 Maya 的问题,python。
我可以创建一个循环并将着色器 A 的颜色设置为 R,将着色器 B 的颜色设置为 G,将着色器 C 设置为 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 个步骤都坚持...
您就快完成了 - 您只需将着色器的 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")
所以我最终使用
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)
伙计们,这是关于 Maya 的问题,python。
我可以创建一个循环并将着色器 A 的颜色设置为 R,将着色器 B 的颜色设置为 G,将着色器 C 设置为 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 个步骤都坚持...
您就快完成了 - 您只需将着色器的 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")
所以我最终使用
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)