在 Maya 中将着色器存储为 Python 的变量
Storing a shader as a Python's variable in 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
如果不使用列表,我应该如何存储它?
谢谢。
我认为你搞砸了 Maya 模块命名空间
尝试使用 cmds
shaderSG = cmds.listConnections(shaders[0],type='shadingEngine')
我在 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
如果不使用列表,我应该如何存储它?
谢谢。
我认为你搞砸了 Maya 模块命名空间 尝试使用 cmds
shaderSG = cmds.listConnections(shaders[0],type='shadingEngine')