У меня есть скрипт в 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
Как я должен хранить его, если не со списком?
Спасибо.
вы пытаетесь запустить это в автономном? Это будет объяснять, что 'module не имеет атрибута \ listConnections \' ', если вы еще не вызвали' maya.standalone.initialize() ' – theodox