2015-11-12 1 views
1

У меня есть скрипт в Maya, который ищет шейдер и создает его, если этот шейдер не существует. Все идет нормально. Проблема в том, что я не могу заставить Майю хранить ее от ее имени, когда она будет найдена.Хранение шейдера как переменной Python в 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

Как я должен хранить его, если не со списком?

Спасибо.

+0

вы пытаетесь запустить это в автономном? Это будет объяснять, что 'module не имеет атрибута \ listConnections \' ', если вы еще не вызвали' maya.standalone.initialize() ' – theodox

ответ

1

Я думаю, что вы Мессинг с модулем майа пространств имен Попробуйте с CMDS

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

ах, как я подозревал, новичковую ошибку. Спасибо! :) – anti

 Смежные вопросы

  • Нет связанных вопросов^_^