2017-08-02 8 views
1

皆さん、これはPythonのMayaに関する質問です。Maya Python、Connect to 2 lists

は、私は、ループを作成し、これは私がこれまでのところ、私はすべての3つのステップでstuckingていたものである

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) 

をBにGとshaderCにRシェーダB色にシェーダに色を設定することができます...

答えて

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") 
+0

を使用して終了):)返信いただきありがとうございます)はい、うーん、私の質問はどのようにシェーダ[0]が赤、シェーダ[1]が緑、シェーダ[2]が青、ループを.... 3ステップごとに設定するのですか... – Eddie

+0

それのための辞書とどのようにあなたは3回毎にirをループさせますか?私はシェイダーを持っていればどういう意味なのですか?4 5 6 7 8 9 10a – Eddie

+0

この場合、赤、緑、青という3つのシェーダーしか作成していません。辞書のキーを0,1,2に変更して、%演算子を含むforループを使用して、0,1,2,0,1,2 ...を得ることができます。 – theodox

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)