Last active
August 29, 2015 14:22
-
-
Save Regnareb/53cca61d2f78eed6db3f to your computer and use it in GitHub Desktop.
Transfer shader assignation (render layers)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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