将着色器存储为Maya中的Python变量

时间:2015-11-12 17:10:11

标签: python textures maya

我在Maya中有一个脚本,它会查找着色器并在此着色器不存在时创建它。到现在为止还挺好。问题是,当我找到它时,我似乎无法让Maya从它的名字中存储它。

import maya.cmds as cmds

findShd = cmds.objExists( 'shd_' + str( udim ) )

    if findShd:
        print 'shader exists'
        shaders = cmds.ls( 'shd_' + str( udim ) )
        print shaders[ 0 ] # this prints the name as I would expect
        shaderSG = mc.listConnections( shaders[ 0 ], type = 'shadingEngine' )

    else:
        shader = cmds.shadingNode( 'blinn', asShader = True, name = ( 'shd_' + str( udim ) ) )
        shaderSG = cmds.sets( shader, renderable = True, noSurfaceShader = True, empty = True, name = shader + "SG" )
        cmds.connectAttr( shader + ".outColor", shaderSG + ".surfaceShader", force = True )         
        cmds.select( shellUVs )
        lFaces = cmds.ls( cmds.polyListComponentConversion( tf = True ) )

        for face in lFaces:         
            cmds.sets( lFaces, e = True, forceElement = shaderSG )

当着色器存在时,我需要存储它和它所连接的着色组,以便我可以在条件之外分配它。

这条线虽然:

shaderSG = cmds.listConnections( shaders[ 0 ], type = 'shadingEngine' )

给了我:Module object has no attribute listConnections

如果没有列表,我应该如何存储?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为你弄乱了maya模块命名空间 尝试使用cmds

shaderSG = cmds.listConnections(shaders[0],type='shadingEngine')