def _handleCreateButton(self): """ This callback creates the Material to be used, and adds it to the object selected for import """ #path = '../../apps/MayaPy/' path = '../assets/' matName = self.MaterialBox.currentText() objectName = self.ObjectBox.currentText() type = 'mayaAscii' #Import Object first then create shader to attach to it if matName == 'Ruby': newShader = mayaMRshader(matName, (0.614, 0.041, 0.041), 1.0, 1.0, (0.723, 0.623, 0.623), 1.0, 2.417, (0.723, 0.623, 0.623), (0.7, 0.5, 0.2), 0.5) if matName == 'Emerald': newShader = mayaMRshader(matName, (0.076, 0.614, 0.076), 1.0, 1.0, (0.633, 0.728, 0.633), 1.0, 1.6, (0.633, 0.728, 0.633), (0.7, 0.5, 0.2), 0.5) if matName == 'Diamond': newShader = mayaMRshader(matName, (0.723, 0.945, 1.0), 1.0, 1.0, (1.0, 1.0, 1.0), 1.0, 2.417, (1.0, 1.0, 1.0), (0.7, 0.5, 0.2), 0.5) if matName == 'Pearl': newShader = mayaMRshader(matName, (1.0, 1.0, 1.0), 1.0, 1.0, (1.0, 0.829, 0.829), 1.0, 2.417, (1.0, 1.0, 1.0), (0.7, 0.5, 0.2), 0.5) newShader.create() file = importFile(objectName, path, type) file.create() global objectNum objectNum = objectNum + 1 cmds.select(objectName) cmds.rename(objectName + str(objectNum)) cmds.hyperShade(a=matName + '1')
def initializeCadenceCam(self): """ This creates an orthographic camera that looks down the Y axis onto the XZ plane, and rotated so that the AI file track labels are legible. This camera is positioned so that the given track nodeName is centered in its field by setCameraFocus. """ if cmds.objExists(self.CADENCE_CAM): return priorSelection = MayaUtils.getSelectedTransforms() c = cmds.camera( orthographic=True, nearClipPlane=1, farClipPlane=100000, orthographicWidth=400) cmds.setAttr(c[0] + '.visibility', False) cmds.rename(c[0], self.CADENCE_CAM) cmds.rotate(-90, 180, 0) cmds.move(0, 100, 0, self.CADENCE_CAM, absolute=True) MayaUtils.setSelection(priorSelection)
def createShader(self, shaderName, shaderType ='blinn'): shaderEngine = None if not cmds.objExists(shaderName): shader = cmds.shadingNode(shaderType, asShader=True) shader = cmds.rename(shader, shaderName) shaderEngine = cmds.sets(renderable=True, empty=True, noSurfaceShader=True, name=shader + '_SG') cmds.connectAttr(shader + '.outColor', shaderEngine + '.surfaceShader') else: shader = shaderName engines = cmds.listConnections(shader + '.outColor') if engines: shaderEngine = engines[0] return shader, shaderEngine
def createToken(cls, uid, props, trackSetNode =None): """ A token is created, provided with some additional Maya attributes, and placed in the scene. Tokens are functtionally similar to TrackNodes, but with different shapes and attributes. """ cylinderHeight = 5.0 coneHeight = 10.0 if not trackSetNode: trackSetNode = TrackSceneUtils.getTrackSetNode() if not trackSetNode: return None node = cls.getTrackNode(uid, trackSetNode=trackSetNode) if node: return node # determine whether left or right, and manus or pes, from name name = props['name'] if props else None if not name: print('createToken: No properties specified') return # remove '_proxy' or '_token' if present (as in S6_LP3_proxy) nameFields = cls.decomposeName(name.split('_')[0]) isLeft = nameFields['left'] isPes = nameFields['pes'] # make a cone for the token of an proxy else a cylinder if uid.endswith('_proxy'): node = cmds.polyCone( radius=0.5, height=coneHeight, subdivisionsX=10, subdivisionsY=1, subdivisionsZ=1, axis=(0, 1, 0), createUVs=0, constructionHistory=0, name='Token_0')[0] cmds.move(0, 0.5 * coneHeight, 0) else: node = cmds.polyCylinder( radius=0.5, height=cylinderHeight, subdivisionsX=10, subdivisionsY=1, subdivisionsZ=1, subdivisionsCaps=0, axis=(0, 1, 0), createUVs=0, constructionHistory=0, name='Token_0')[0] cmds.move(0, 0.5 * cylinderHeight, 0) # Set up the basic cadence attributes cmds.addAttr(longName='cadence_dx', shortName='dx', niceName='DX') cmds.addAttr(longName='cadence_dy', shortName='dy', niceName='DY') cmds.addAttr( longName='cadence_uniqueId', shortName='track_uid', dataType='string', niceName='UID') cmds.addAttr( longName='cadence_name', shortName='token_name', dataType='string', niceName='Name') # Disable some transform attributes cmds.setAttr(node + '.rotateX', lock=True) cmds.setAttr(node + '.rotateZ', lock=True) cmds.setAttr(node + '.scaleY', lock=True) cmds.setAttr(node + '.translateY', lock=True) # Scale the cylinder/cone in x and z to represent 'dy' and 'dx' in # centimeters. There is a change of coordinates between Maya (X, Z) and # the simulator (X, Y) space. For example, for the right manus: # x = int(100*float(entry['rm_y'])) # z = int(100*float(entry['rm_x'])) # and likewise for dx and dy. # the DX and DY attributes affect scaleZ and scaleX in the node cmds.connectAttr(node + '.dx', node + '.scaleZ') cmds.connectAttr(node + '.dy', node + '.scaleX') # add a short annotation based on the name annotation = cmds.annotate(node, text=cls.shortName(props['name'])) cmds.select(annotation) aTransform = cmds.pickWalk(direction='up')[0] # control it's position by that of the node, so that it stays 15 cm # above the pes and 10 cm above the manus if isPes: cmds.move(0.0, 15.0, 0.0, aTransform) else: cmds.move(0.0, 10.0, 0.0, aTransform) cmds.connectAttr(node + '.translateX', aTransform + '.translateX') cmds.connectAttr(node + '.translateZ', aTransform + '.translateZ') # and make it non-selectable cmds.setAttr(aTransform + '.overrideEnabled', 1) cmds.setAttr(aTransform + '.overrideDisplayType', 2) cmds.rename(aTransform, "TokenAnnotation_0") if isPes: if isLeft: color = TrackwayShaderConfig.LEFT_PES_TOKEN_COLOR else: color = TrackwayShaderConfig.RIGHT_PES_TOKEN_COLOR else: if isLeft: color = TrackwayShaderConfig.LEFT_MANUS_TOKEN_COLOR else: color = TrackwayShaderConfig.RIGHT_MANUS_TOKEN_COLOR ShadingUtils.applyShader(color, node) cmds.select(node) # add the new node to the Cadence track set cmds.sets(node, add=trackSetNode) # finally, initialize all the properties from the dictionary props cls.setTokenProps(node, props) return node
def setUpMolecule(): #Adjust time slider cmds.playbackOptions( minTime='1', maxTime='300', mps=1) # Create the oxygen part of the larger bond (cylinder) cmds.polyCylinder(n='oxyCylinder', r=1, h=2, sx=20, sy=1, sz=1, ax=(1, 0, 0), rcp=0, cuv=3, ch=1) #Set scale for oxyCylinder cmds.setAttr("oxyCylinder.translateX", 6) cmds.setAttr("oxyCylinder.scaleZ", 2) cmds.setAttr("oxyCylinder.scaleX", 2) cmds.setAttr("oxyCylinder.scaleY", 2) #-------Set up shader and shade cylinder---------- redShader = cmds.shadingNode('blinn', asShader=True, n='redBlinn') cmds.setAttr("redBlinn.color", 0.772, 0, 0, type="double3") cmds.select('oxyCylinder') cmds.hyperShade(assign=redShader) #--------------White Cylinder------------- # Create the oxygen part of the larger bond (cylinder) cmds.polyCylinder(n='hydroCylinder', r=1, h=2, sx=20, sy=1, sz=1, ax=(1, 0, 0), rcp=0, cuv=3, ch=1) #Set scale for oxyCylinder cmds.setAttr("hydroCylinder.translateX", 10) cmds.setAttr("hydroCylinder.scaleZ", 2) cmds.setAttr("hydroCylinder.scaleX", 2) cmds.setAttr("hydroCylinder.scaleY", 2) #-------Set up shader and shade cylinder---------- whiteShader = cmds.shadingNode('blinn', asShader=True, n='whiteBlinn') cmds.setAttr("whiteBlinn.color", 1, 1, 1, type="double3") #Select the cylinder to color cmds.select('hydroCylinder') # Assign shader cmds.hyperShade(assign=whiteShader) #---------------------------------------------------------- #-----------Group two cylinders together as "cylinder"----- #---------------------------------------------------------- cmds.group(em=True, n='cylinder') cmds.parent('oxyCylinder', 'cylinder') cmds.parent('hydroCylinder', 'cylinder') #------------Oxygen------------- # Create the Oxygen sphere cmds.polySphere(n='oxygen', r=1, sx=20, sy=20, ax=(0, 1, 0), cuv=2, ch=1) #Set scale for oxygen cmds.setAttr("oxygen.scaleZ", 5) cmds.setAttr("oxygen.scaleX", 5) cmds.setAttr("oxygen.scaleY", 5) #-------Assign shader-------- cmds.select('oxygen') cmds.hyperShade(assign=redShader) #------------Hydrogen------------- # Create the Hydrogen sphere cmds.polySphere(n='hydrogen', r=1, sx=20, sy=20, ax=(0, 1, 0), cuv=2, ch=1) #Set scale for oxygen cmds.setAttr("hydrogen.translateX", 14) cmds.setAttr("hydrogen.scaleZ", 4) cmds.setAttr("hydrogen.scaleX", 4) cmds.setAttr("hydrogen.scaleY", 4) #-------Assign shader-------- cmds.select('hydrogen') cmds.hyperShade(assign=whiteShader) #---------------------------------------------------------- #-----------Group 'cylinder' and hydrogen together as "hydroAssembly"----- #---------------------------------------------------------- cmds.group(em=True, n='hydroAssembly1') cmds.parent('cylinder', 'hydroAssembly1') cmds.parent('hydrogen', 'hydroAssembly1') #---------------------------------------------------------- #-----------Group into realign group #---------------------------------------------------------- cmds.group(em=True, n='realignGroup1') cmds.parent('hydroAssembly1', 'realignGroup1') #------------------------------------------------------------- #------------Duplicate the assembly-------------------------- #------------------------------------------------------------- cmds.duplicate('realignGroup1', n='realignGroup2') cmds.setAttr('realignGroup2.rotateZ', 180) cmds.rename('realignGroup2|hydroAssembly1','hydroAssembly2') #---------------------------------------------------------- #-----------Make entire thing a group "molecule"----- #---------------------------------------------------------- cmds.group(em=True, n='molecule') cmds.parent('oxygen', 'molecule') cmds.parent('realignGroup1', 'molecule') cmds.parent('realignGroup2', 'molecule') #-------Move entire molecule up------- cmds.setAttr("molecule.translateY", 10)