Skip to content

Instantly share code, notes, and snippets.

@Regnareb
Last active August 29, 2015 14:22
Show Gist options
  • Save Regnareb/53cca61d2f78eed6db3f to your computer and use it in GitHub Desktop.
Save Regnareb/53cca61d2f78eed6db3f to your computer and use it in GitHub Desktop.
Transfer shader assignation (render layers)
import maya.cmds as cmds
def getSGsFromMaterial(shader):
if cmds.ls(shader, materials=True):
nodes = [i.split('.')[0] for i in cmds.connectionInfo(shader +'.outColor', destinationFromSource=True)] # Faster than cmds.listConnections(shader, type="shadingEngine")
shadingGroups = [i for i in nodes if cmds.nodeType(i) == 'shadingEngine']
return shadingGroups
return []
def getShaderAssignation(shader):
shadingGroups = getSGsFromMaterial(shader) # Add checks?
if shadingGroups:
return cmds.sets(shadingGroups, query=True) or []
return []
# Step one, select renderLayer
shaders = cmds.ls(materials=True)
assignations = {}
for shader in shaders:
assignations[shader] = getShaderAssignation(shader)
# Step two, select masterLayer
for shader, assignation in assignations.iteritems():
try:
cmds.select(assignation)
cmds.hyperShade(assign=shader)
except Exception, e:
print e
print shader
print assignation
print '\n'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment