import maya.cmds as cmds
def getObjectShader(object_name):
transform = cmds.ls(object_name,typ = 'transform')
shapes = list()
if transform:
shapes = cmds.listRelatives(transform,shapes = True)
else:
shapes = cmds.ls(object_name,shapes = True)
shaders = list()
for i in shapes:
shaders += [cmds.listConnections('%s.surfaceShader' % s,d = False)[0]
for s in cmds.listConnections(i,s = False)
if cmds.ls(s,typ = 'shadingEngine')]
return shaders
def getFileNode(shaderAttribute,spilt = []):
file_nodes = list()
all_nodes = cmds.listConnections(shaderAttribute,d= False)
spilt.append(shaderAttribute.split('.')[0])
if not all_nodes:
all_nodes = list()
for i in all_nodes:
typ = cmds.ls(i,st = True)
if typ[1] in ['file']:
if i not in file_nodes:
file_nodes.append(i)
elif not i in spilt:
file_nodes += [n for n in getFileNode(i,spilt) if not n in file_nodes]
spilt.append(i)
return file_nodes
def setFileNode(node):
cmds.setAttr('%s.filterType' % node,0)
cmds.setAttr('%s.uvTilingMode' % node,3)
cmds.setAttr('%s.uvTileProxyQuality' % node,0)
def duplicateShader(shader):
nodes = cmds.duplicate(shader,upstreamNodes = True)
shadersg = cmds.sets(renderable = True,noSurfaceShader = True,empty = True,name = '%sSG' % nodes[0])
cmds.connectAttr('%s.outColor' % nodes[0],'%s.surfaceShader' % shadersg)
return [nodes[0],shadersg]
def getShaderFileNode(shader):
attribute = dict()
for i in cmds.listAttr(shader,w = True):
file_nodes = list()
try:
file_nodes = getFileNode('%s.%s' %(shader,i),spilt = [])
except:
pass
if file_nodes:
attribute[i] = file_nodes
return attribute
alembicTool_shaderEdit
最新推荐文章于 2022-06-07 18:01:31 发布