def createShaders(self): """Create only once the different shaders used to bake for the different modes""" if not self.prepared: # OCC self.occ = cmds.createNode('ilrOccSampler') # create shader self.occSG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=self.occ + 'SG') cmds.connectAttr(self.occ + '.outColor', self.occSG + '.surfaceShader', force=True) # THICKNESS thickShader = cmds.shadingNode('surfaceShader', asShader=True) self.thickSG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=thickShader + 'SG') cmds.connectAttr(thickShader + '.outColor', self.thickSG + '.surfaceShader', force=True) self.thick = cmds.shadingNode('ilrSurfaceThickness', asUtility=True) cmds.connectAttr(self.thick + '.outThickness', thickShader + '.outColor', force=True) # DIRT nodes = cmds.file('path_to_your_file_shader.ma', reference=True, returnNewNodes=True, namespace='DIRT') self.dirt = cmds.ls(nodes, type='surfaceShader')[0] self.dirtSG = tdLib.getFirstItem(cmds.listConnections(self.dirt + '.outColor', source=False)) if not self.dirtSG: self.dirtSG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=self.dirt + 'SG') cmds.connectAttr(self.dirt + '.outColor', self.dirtSG + '.surfaceShader', force=True) self.dirt = self.dirtSG # RGB self.rgb = cmds.shadingNode('surfaceShader', asShader=True) self.rgbSG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=self.rgb + 'SG') cmds.connectAttr(self.rgb + '.outColor', self.rgbSG + '.surfaceShader', force=True) self.prepared = True
def createShaders(self): """Create only once the different shaders used to bake for the different modes""" if not self.prepared: # OCC self.occ = cmds.createNode('ilrOccSampler') # create shader self.occSG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=self.occ + 'SG') cmds.connectAttr(self.occ + '.outColor', self.occSG + '.surfaceShader', force=True) # THICKNESS thickShader = cmds.shadingNode('surfaceShader', asShader=True) self.thickSG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=thickShader + 'SG') cmds.connectAttr(thickShader + '.outColor', self.thickSG + '.surfaceShader', force=True) self.thick = cmds.shadingNode('ilrSurfaceThickness', asUtility=True) cmds.connectAttr(self.thick + '.outThickness', thickShader + '.outColor', force=True) # DIRT nodes = cmds.file('path_to_your_file_shader.ma', reference=True, returnNewNodes=True, namespace='DIRT') self.dirt = cmds.ls(nodes, type='surfaceShader')[0] self.dirtSG = tdLib.getFirstItem( cmds.listConnections(self.dirt + '.outColor', source=False)) if not self.dirtSG: self.dirtSG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=self.dirt + 'SG') cmds.connectAttr(self.dirt + '.outColor', self.dirtSG + '.surfaceShader', force=True) self.dirt = self.dirtSG # RGB self.rgb = cmds.shadingNode('surfaceShader', asShader=True) self.rgbSG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=self.rgb + 'SG') cmds.connectAttr(self.rgb + '.outColor', self.rgbSG + '.surfaceShader', force=True) self.prepared = True
import lib.lib as tdLib OBJS = [] OBJSCOPY = [] selection = cmds.ls(sl=True, dagObjects=True) selection = cmds.ls(selection, shapes=True) for sel in selection: try: ncloth = tdLib.getFirstItem(cmds.listConnections(sel + '.inMesh', source=True, shapes=True)) shape = tdLib.getFirstItem(cmds.listConnections(ncloth + '.inputMesh', source=True, shapes=True)) OBJS.append(shape) OBJSCOPY.append(sel) except TypeError: pass shadingGroups = list(tdLib.flatten([tdLib.getSGsFromShape(i) for i in OBJS])) shaders = [tdLib.getMaterialFromSG(i) for i in shadingGroups] assignation = {} for i in shaders: assignation[i] = tdLib.getShaderAssignation(i) objs = {} for i, u in zip(OBJS, OBJSCOPY): objs[i] = u
import lib.lib as tdLib OBJS = [] OBJSCOPY = [] selection = cmds.ls(sl=True, dagObjects=True) selection = cmds.ls(selection, shapes=True) for sel in selection: try: ncloth = tdLib.getFirstItem( cmds.listConnections(sel + '.inMesh', source=True, shapes=True)) shape = tdLib.getFirstItem( cmds.listConnections(ncloth + '.inputMesh', source=True, shapes=True)) OBJS.append(shape) OBJSCOPY.append(sel) except TypeError: pass shadingGroups = list(tdLib.flatten([tdLib.getSGsFromShape(i) for i in OBJS])) shaders = [tdLib.getMaterialFromSG(i) for i in shadingGroups] assignation = {} for i in shaders: assignation[i] = tdLib.getShaderAssignation(i) objs = {} for i, u in zip(OBJS, OBJSCOPY): objs[i] = u