def runFrom(bodyName, startTime, endTime): mc.select(bodyName) #first we start mc.currentTime(startTime+24) mc.setKeyframe(attribute='translateZ', v=-60) mc.currentTime(endTime) mc.setKeyframe(attribute='translateZ', v=0) mc.currentTime(startTime) mc.setKeyframe(attribute='rotateX', v=0) mc.currentTime(startTime+24) mc.setKeyframe(attribute='rotateX', v=385) mc.currentTime(endTime-24) mc.setKeyframe(attribute='rotateX', v=385) mc.currentTime(endTime) mc.setKeyframe(attribute='rotateX', v=360) left_leg = findName('leg_R') right_leg = findName('left_L') rTime = startTime lTime = startTime + 6 startVal = 0 while (lTime+12) < endTime: rTime = rTime + 12 lTime = lTime + 12 legRotate(right_leg, rTime, rTime+12, startVal, startVal + 360) legRotate(left_leg, lTime, lTime+12, startVal, startVal+360) startVal = startVal + 360 mc.select(right_leg) mc.currentTime(endTime+1) mc.rotate(0,0,0) mc.currentTime(startTime)
def _createGeometry(self, name, side): #create tibia self.tibia = mc.polyCube(sx=1, sy=1, sz=1, w=2, h=50, d=2, n=name + '_tibia')[0] mc.move(0, 28, -12) self.knee = mc.polyCylinder(h=5, r=2, n=name + '_knee')[0] mc.move(0, 54, -12, r=True) mc.rotate(0, 0, '90deg') self.tibia = mc.polyUnite(self.tibia, self.knee, n=name + '_tibia')[0] mc.move(0, 54, -12, self.tibia + ".scalePivot", self.tibia + ".rotatePivot") #create feamer self.femur = mc.polyCube(sx=1, sy=1, sz=1, w=3, h=50, d=3, n=name + '_feamer')[0] mc.move(0, 80, -12) self.hip = mc.polySphere(r=5, n=name + '_hip') mc.move(0, 107, -12) self.femur = mc.polyUnite(self.femur, self.hip, n=name + '_femur')[0] mc.move(0, 107, -12, self.femur + ".scalePivot", self.femur + ".rotatePivot") pass
def moveFeetFifth(gundamIns): if (gundamIns.currentFeet == "first"): gundamIns.currentFeet = "fifth" mc.select(gundamIns.rightLeg.h_foot) print("here", gundamIns) mc.move(8, 0, 13, r=True) mc.select(gundamIns.leftLeg.h_foot) mc.move(-12, 0, 0, r=True) mc.select(gundamIns.torso.h_hips) currentY = mc.getAttr(".translateY") mc.move(0, -5.3, 0, r=True) if (gundamIns.currentFeet == "parallel"): gundamIns.currentFeet = "fifth" mc.select(gundamIns.rightLeg.h_foot) print("here", gundamIns) mc.rotate(0, -70, 0) mc.move(24.2, 0, 13, r=True) mc.select(gundamIns.leftLeg.h_foot) mc.rotate(0, 70, 0) mc.move(-24.2, 0, 0, r=True) mc.select(cl=True) mc.select(gundamIns.torso.h_hips) currentY = mc.getAttr(".translateY") mc.move(0, -5.3, 0, r=True)
def _createGeometry(self, name): ''' #create tibia self.tibia = mc.polyCube(sx=1, sy=1, sz=1, w=2,h=50, d=2, n=name+'_tibia')[0] mc.move(0,28,-12) self.knee = mc.polyCylinder(h=5,r=2,n=name+'_knee')[0] mc.move(0,54,-12,r=True) mc.rotate(0,0,'90deg') self.tibia = mc.polyUnite(self.tibia,self.knee, n=name+'_tibia')[0] mc.move(0,54,-12, self.tibia+".scalePivot", self.tibia+".rotatePivot") #create feamer self.femur = mc.polyCube(sx=1, sy=1, sz=1, w=3,h=50, d=3, n=name+'_feamer')[0] mc.move(0,80,-12) self.hip = mc.polySphere(r=5,n=name+'_hip') mc.move(0,107,-12) self.femur = mc.polyUnite(self.femur,self.hip, n=name+'_femur')[0] mc.move(0,107,-12, self.femur+".scalePivot", self.femur+".rotatePivot") pass ''' self.spine = mc.polyCylinder(h=75, r=2, n=name + '_spine')[0] mc.move(0, 30, 0) self.pelvic = mc.polyCylinder(h=40, r=2, n=name + '_pelvic')[0] mc.rotate(0, 0, '90deg') self.clavical = mc.polyCylinder(h=56, r=2, n=name + '_clavical')[0] mc.rotate(0, 0, '90deg') mc.move(0, 67, 0) #self.hip = mc.polySphere(r=5,n=name+'_hip') self.torso = mc.polyUnite(self.spine, self.pelvic, n=name)[0]
def _makeMolecule(self): #H2O O = cmds.polySphere(r=1, n='O', ax = [0,0,0]); H1 = cmds.polySphere(r=0.8, n='H1', ax=[0,0,0]); H2 = cmds.polySphere(r=0.8, n='H2', ax=[0,0,0]); cmds.move(0.0,0.0,1,H1, r=True) cmds.move(0.0,0.0,-1,H2, r=True) cmds.xform(H1, piv=[0,0,0], ws=True) cmds.xform(H2, piv=[0,0,0], ws=True) cmds.rotate(0,'60',0, H1); #group O, H1, H2 as a water molecule H2O = cmds.group( empty=True, name='H2O' ) cmds.parent(H1,H2,O,H2O) #paint on colors for the water molecule #create red lambert cmds.sets( renderable=True, noSurfaceShader=True, empty=True, name='O_WhiteSG' ) cmds.shadingNode( 'lambert', asShader=True, name='O_White' ) cmds.setAttr( 'O_White.color', 1, 1, 1, type='double3') cmds.connectAttr('O_White.outColor', 'O_WhiteSG.surfaceShader') #create red lambert cmds.sets( renderable=True, noSurfaceShader=True, empty=True, name='H_RedSG' ) cmds.shadingNode( 'lambert', asShader=True, name='H_Red' ) cmds.setAttr( 'H_Red.color', 1, 0, 0, type='double3') cmds.connectAttr('H_Red.outColor', 'H_RedSG.surfaceShader') #assign the material cmds.sets('H1', edit=True, forceElement='H_RedSG') cmds.sets('H2', edit=True, forceElement='H_RedSG') cmds.sets('O', edit=True, forceElement='O_WhiteSG') return H2O
def _createGeometry(self, name, side): #build toe self.side = side self.name = name self.toe = mc.polyCube(sx=2, sy=2, sz=2, w=5, h=2, d=3, n=name + '_toe')[0] self.ball = mc.polyCylinder(h=5, n=name + '_ball')[0] mc.move(0, 0, -2, r=True) mc.rotate(0, 0, '90deg') self.toe = mc.polyUnite(self.toe, self.ball, n=name + '_toe')[0] mc.move(0, 0, -2, self.toe + ".scalePivot", self.toe + ".rotatePivot") #build arch self.arch = mc.polyCube(w=5, d=10, n=name + '_arch')[0] mc.move(0, 0, -7, r=True) #mc.select(f[8]-f[11]) mc.select(self.arch + '.f[2]') mc.move(0, 3, 0, r=True) self.ankle = mc.polySphere(r=2.5)[0] mc.move(0, 3, -12, r=True) self.arch = mc.polyUnite(self.arch, self.ankle, n=name + '_arch')[0] mc.move(0, 3, -12, self.arch + ".scalePivot", self.arch + ".rotatePivot") #self.heal = mc.polyCube(sx=2, sy=2, sz=2,w=5, h=3, n=name+'_heal') pass
def moveFemur(self, xrotate, yrotate, zrotate): femur = self.getGundamFemur() mc.select(femur[0]) mc.rotate(xrotate, yrotate, zrotate) mc.setKeyframe(femur[0], t=self.timel) mc.select(femur[1]) mc.rotate(xrotate, yrotate, zrotate) mc.setKeyframe(femur[1], t=self.timel)
def moveHip(self, xrotate, yrotate, zrotate): hips = self.getGundamHip() mc.select(hips[0]) mc.rotate(-xrotate, yrotate, zrotate) mc.setKeyframe(hips[0], t=self.timel) mc.select(hips[1]) mc.rotate(-xrotate, -yrotate, zrotate) mc.setKeyframe(hips[1], t=self.timel)
def moveFeet(self, xrotate, yrotate, zrotate): feets = self.getGundamFeet() mc.select(feets[0]) mc.rotate(xrotate, yrotate, zrotate) mc.setKeyframe(feets[0], t=self.timel) mc.select(feets[1]) mc.rotate(xrotate, yrotate, zrotate) mc.setKeyframe(feets[1], t=self.timel)
def _handleDefendButton(self): #driven: all arms and joint; driver: the translateX of the ball self._rightArmDrivenKeyframe() #set the new values cmds.move( -2.5, 0, 0, 'ball', relative=True) cmds.rotate('0', '-72', '0', 'SF|RShoulderJoint|RightArm') cmds.rotate('0', '0', '53', 'SF|RShoulderJoint|RightArm|RHandJoint|RHand') #reset driven: all arms and joint; driver: the translateX of the ball self._rightArmDrivenKeyframe()
def _createGeometry(self, name, side): #create tibia self.tibia = mc.polyCube(sx=1, sy=1, sz=1, w=2, h=50, d=2, n=name + '_tibia')[0] mc.move(0, 28, -12) self.knee = mc.polyCylinder(h=5, r=2, n=name + '_knee')[0] mc.move(0, 54, -12, r=True) mc.rotate(0, 0, '90deg') self.tibia = mc.polyUnite(self.tibia, self.knee, n=name + '_tibia')[0] self.llegArmor = mc.polyCube(w=8, h=30, d=8)[0] mc.move(0, 22, -12) mc.select(self.llegArmor + '.f[3]') mc.scale(1.5, 1, 1.5) mc.select(self.llegArmor + '.e[0]') mc.polySubdivideEdge(dv=2) mc.select(self.llegArmor + '.e[12]') mc.move(0, 2, 0, r=True) self.tibia = mc.polyUnite(self.tibia, self.llegArmor, n=name + '_tibia')[0] mc.move(0, 54, -12, self.tibia + ".scalePivot", self.tibia + ".rotatePivot") #create feamer self.femur = mc.polyCube(sx=1, sy=1, sz=1, w=3, h=50, d=3, n=name + '_feamer')[0] mc.move(0, 80, -12) self.hip = mc.polySphere(r=5, n=name + '_hip') mc.move(0, 107, -12) self.femur = mc.polyUnite(self.femur, self.hip, n=name + '_femur')[0] mc.move(0, 107, -12, self.femur + ".scalePivot", self.femur + ".rotatePivot") self._createCalfArmor(name, side) pass
def jump(self): PlieIk("half", self.start, (self.end - self.start) / 5.0, self.gundamIns) mc.select(self.gundamIns.torso.h_hips) mc.move(0, 120, 0, r=True) mc.select(self.gundamIns.rightArm.h_hand) mc.move(0, 120, 0, r=True) mc.select(self.gundamIns.leftArm.h_hand) mc.move(0, 120, 0, r=True) mc.select(self.gundamIns.torso.h_shoulders) mc.move(0, 120, 0, r=True) mc.select(cl=True) #exit(0) mc.select(self.gundamIns.leftLeg.h_foot) mc.move(0, 0, 0, r=True) mc.select(cl=True) mc.select(self.gundamIns.rightLeg.h_foot) mc.move(0, 0, -80, r=True) mc.move(0, 50, 0, r=True) mc.move(10, 0, 0, r=True) mc.move(0, 50, 0, r=True) mc.rotate(70, -160, 70) #mc.rotate(0,70,0,r=True) #mc.rotate(0,0,-60,r=True) mc.select(cl=True) mc.setKeyframe(self.gundamIns.torso.h_hips, self.gundamIns.leftLeg.h_foot, self.gundamIns.rightLeg.h_foot, self.gundamIns.torso.h_shoulders, self.gundamIns.rightArm.h_hand, self.gundamIns.leftArm.h_hand, t=(self.end - self.start) / 5.0 + (self.end - self.start) / 2 + 2) mc.select(self.gundamIns.rightLeg.h_foot) mc.rotate(0, -70, 0) mc.move(-8, -100, 90, r=True) mc.select(cl=True) mc.select(self.gundamIns.torso.h_hips, self.gundamIns.leftArm.h_hand, self.gundamIns.rightArm.h_hand, self.gundamIns.torso.h_shoulders) mc.move(0, -124, 0, r=True) mc.setKeyframe(self.gundamIns.torso.h_hips, self.gundamIns.leftLeg.h_foot, self.gundamIns.rightLeg.h_foot, self.gundamIns.torso.h_shoulders, self.gundamIns.rightArm.h_hand, self.gundamIns.leftArm.h_hand, t=(self.end - self.start))
def _createCalfArmor(self, name, side): p1 = mc.polySphere(r=10)[0] mc.scale(.35, 1.5, .75) mc.move(5, 0, 0) p2 = mc.polySphere(r=10)[0] mc.scale(.35, 1.5, .75) mc.move(-5, 0, 0) p3 = mc.polyCylinder(r=10, sx=40)[0] mc.rotate(0, 0, '90deg') mc.scale(1.5, 5, .75) #claf1 = mc.polyUnite(p1,p2,p3) #print calf1 #calf1 = mc.polyBoolOp(p1, p3, op=1, n='calf')[0] #calf2 = mc.polyBoolOp(calf1, p2, op=1, n='calf')[0] p4 = mc.polyCube(w=10, h=10, d=10)[0] mc.move(0, 10, -5) p5 = mc.polyCube(w=10, h=10, d=10)[0] mc.move(0, 10, -5) p6 = mc.polyCube(w=10, h=10, d=10)[0] mc.move(0, 10, -5) c1 = mc.polyBoolOp(p1, p4, op=2)[0] c2 = mc.polyBoolOp(p2, p5, op=2)[0] c3 = mc.polyBoolOp(p3, p6, op=2)[0] claf1 = mc.polyUnite(c1, c2, c3) mc.sets(e=True, forceElement=self.color1) mc.move(0, 45, -10) self.tibia = mc.polyUnite(self.tibia, claf1) t1 = mc.polyCube(sx=3, sy=3, sz=3, w=10, h=10, d=10, n='thigh')[0] t1r = mc.polyBevel(ws=1, oaf=1, o=.5, sa=30)[0] mc.scale(1, 5, 1) mc.move(0, 75, -12, r=True) t3 = mc.polyCube(sx=3, sy=3, sz=3, w=10, h=15, d=10, n='thight_armor')[0] mc.sets(e=True, forceElement=self.color1) t3r = mc.polyBevel(ws=1, oaf=1, o=.5, sa=30)[0] mc.scale(1.75, 3, 1.4) mc.move(0, 90, -9, r=True) self.femur = mc.polyUnite(self.femur, t1, t3) pass
def handleBallBtn(self): cmds.select('ball') cmds.currentTime(74) cmds.setKeyframe('ball') cmds.currentTime(112) cmds.move(-0.757, 6.434, 15.831) cmds.rotate(9.208, 17.386, -368.887) cmds.setKeyframe('ball') cmds.currentTime(144) cmds.move(-0.772, 0.637, 22.462) cmds.rotate(9.208, 17.386, -368.887) cmds.setKeyframe('ball')
def moveFifth(self): if self.gundamIns.currentArms == 'straight': self.gundamIns.currentArms = "fifth" #left arm: mc.select(self.gundamIns.leftArm.h_hand) mc.move(-10.285, 0, 0, r=True) mc.move(0, 0, 83.464, r=True) mc.move(-70, 0, 0, r=True) mc.move(0, 0, -10, r=True) mc.move(0, -32, 0, r=True) mc.move(0, 0, -10, r=True) mc.rotate(0, -60, 0, r=True) mc.select(cl=True) mc.select(self.gundamIns.leftArm.hand.j_wrist) mc.rotate(0, 38.976, 0, r=True) mc.select(cl=True) mc.select(self.gundamIns.rightArm.h_hand) mc.move(10.285, 0, 0, r=True) mc.move(0, 0, 83.464, r=True) mc.move(75, 0, 0, r=True) mc.move(0, 0, -13, r=True) mc.move(0, -33, 0, r=True) mc.move(0, 0, -13, r=True) mc.rotate(0, 40, 0, r=True) mc.select(cl=True) mc.select(self.gundamIns.rightArm.hand.j_wrist) mc.rotate(0, -38.976, 0, r=True) else: pass
def _handleRoadButton(self): exist = cmds.ls('road') if(len(exist) != 0): cmds.delete('road') road=cmds.group(empty=True, name='road') transformName = cmds.ls('brick', typ='transform')[0] num = int(self.bricksNum.text()) for i in range(0, num): instanceResult = cmds.instance(transformName, name=transformName + '_instance#') #print 'instanceResult: ' + str(instanceResult) x = random.uniform(-3, 34) z = random.uniform(-3,3) cmds.move(x, 0, z, instanceResult) yRot = random.uniform(0,360) cmds.rotate(0, yRot, 0, instanceResult) cmds.parent(instanceResult, road)
def _duplicate(self): #set the random seed random.seed(1024) for i in range (0, 100): cmds.duplicate('H2O') #let the instances rotate objName='H2O' + str(i+1) #random place x = random.uniform(-30,30) y = random.uniform(0, 40) z = random.uniform(-30, 30) cmds.move(x, y, z, objName) #random rotate xRot=random.uniform(0, 360) yRot=random.uniform(0, 360) zRot=random.uniform(0, 360) cmds.rotate(xRot, yRot, zRot, objName)
def _createGeometry(self, name, side): #create radius self.radius = mc.polyCube(sx=1, sy=1, sz=1, w=2,h=40, d=2, n=name+'_radius')[0] mc.move(0,20,0) self.elbow = mc.polyCylinder(h=5,r=2,n=name+'_elbow')[0] mc.move(0,41,0,r=True) mc.rotate(0,0,'90deg') self.radius = mc.polyUnite(self.radius,self.elbow, n=name+'_radius')[0] mc.move(0,41,0, self.radius+".scalePivot", self.radius+".rotatePivot") #create humerus self.humerus = mc.polyCube(sx=1, sy=1, sz=1, w=3,h=40, d=3, n=name+'_humerus')[0] mc.move(0,62,0) self.shoulder = mc.polySphere(r=5,n=name+'_shoulder') mc.move(0,84,0) self.humerus = mc.polyUnite(self.humerus,self.shoulder, n=name+'_humerus')[0] mc.move(0,84,0, self.humerus+".scalePivot", self.humerus+".rotatePivot") pass
def _handleDuplicatedButton(self): random.seed(1234) exist = cmds.ls('dust') if(len(exist) != 0): cmds.delete('dust') dust=cmds.group(empty=True, name='dust') transformName = cmds.ls('pie', typ='transform')[0] num = int(self.dustNum.text()) for i in range(0, num): instanceResult = cmds.instance(transformName, name=transformName + '_instance#') #print 'instanceResult: ' + str(instanceResult) x = random.uniform(-3, 34) y = random.uniform(0,4) z = random.uniform(-3,3) cmds.move(x, y, z, instanceResult) xRot = random.uniform(0,360) yRot = random.uniform(0,360) zRot = random.uniform(0,360) cmds.rotate(xRot, yRot, zRot, instanceResult) cmds.parent(instanceResult, dust)
def createRenderEnvironment(self): lightName = 'scenic_light1' if not cmds.objExists(lightName): lightName = cmds.directionalLight(name=lightName, intensity=0.5) cmds.move(0, 2500, 0, lightName) cmds.rotate('-45deg', '-45deg', 0, lightName) lightName = 'scenic_light2' if not cmds.objExists(lightName): lightName = cmds.directionalLight(name=lightName, intensity=0.5) cmds.move(0, 2500, 0, lightName) cmds.rotate('-45deg', '135deg', 0, lightName) floorName = 'floor' if not cmds.objExists(floorName): floorName = cmds.polyPlane(width=10000, height=10000, name=floorName)[0] shader, shaderEngine = self.createShader('Whiteout_Surface', 'surfaceShader') cmds.setAttr(shader + '.outColor', 1.0, 1.0, 1.0, type='double3') cmds.select([floorName]) cmds.sets(forceElement=shaderEngine)
def doMulti(time): for i in range(0, time / 2): #makes time/2 bubbles and sets up a bunch of random stats for them initTime = randint(0, time - 30) initX = randint(-10, 10) initZ = randint(-10, 10) xRand = randint(-5, 5) zRand = randint(-5, 5) #keyframes all the bubbles based on time that user sets in Qt slider r = .1 c = cmds.polySphere(r=r) cmds.setAttr(c[0] + ".visibility", 0) cmds.setKeyframe(time=initTime + 60) cmds.scale(11, 10, 11) cmds.move(initX, 20, initZ) cmds.setKeyframe(time=initTime + 50) cmds.setAttr(c[0] + ".visibility", 1) cmds.rotate(100, 0, 0) cmds.scale(10, 9, 9.5) cmds.setKeyframe(time=initTime + 40) cmds.move(initX + xRand, 10, initZ + zRand) cmds.rotate(60, 0, 0) cmds.setKeyframe(time=initTime + 30) cmds.move(initX, 6, initZ) cmds.rotate(0, 0, 0) cmds.setKeyframe(time=initTime + 20) cmds.move(initX, 3, initZ) cmds.scale(3, 3, 3) cmds.setKeyframe(time=initTime + 10) cmds.move(initX, 0, initZ) cmds.scale(1, .8, 1) cmds.setKeyframe(time=initTime)
def doSingle(): #keyframes a bubble, does NOT use slider r = .1 c = cmds.polySphere(r=r) cmds.setAttr(c[0] + ".visibility", 0) cmds.setKeyframe(time=60) cmds.scale(11, 10, 11) cmds.move(0, 20, 0) cmds.setKeyframe(time=50) cmds.setAttr(c[0] + ".visibility", 1) cmds.rotate(100, 0, 0) cmds.scale(10, 9, 9.5) cmds.setKeyframe(time=40) cmds.move(4, 10, 0) cmds.rotate(60, 0, 0) cmds.setKeyframe(time=30) cmds.move(0, 6, 0) cmds.rotate(0, 0, 0) cmds.setKeyframe(time=20) cmds.move(0, 3, 0) cmds.scale(3, 3, 3) cmds.setKeyframe(time=10) cmds.move(0, 0, 0) cmds.scale(1, .8, 1) cmds.setKeyframe(time=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 moveFeetFirst(gundamIns): if gundamIns.currentFeet == 'parallel': mc.select(gundamIns.rightLeg.h_foot) print("here", gundamIns) mc.rotate(0, -70, 0) mc.move(12.2, 0, 0, r=True) mc.select(gundamIns.leftLeg.h_foot) mc.rotate(0, 70, 0) mc.move(-12.2, 0, 0, r=True) mc.select(cl=True) mc.select(gundamIns.torso.h_hips, gundamIns.torso.h_shoulders, gundamIns.rightArm.h_hand, gundamIns.leftArm.h_hand) if (gundamIns.currentFeet == "second"): mc.select(gundamIns.rightLeg.h_foot) print("here", gundamIns) mc.move(19.8, 0, 0, r=True) mc.select(gundamIns.leftLeg.h_foot) mc.move(-19.8, 0, 0, r=True) mc.select(cl=True) mc.select(gundamIns.torso.h_hips, gundamIns.torso.h_shoulders, gundamIns.rightArm.h_hand, gundamIns.leftArm.h_hand) if (gundamIns.currentFeet == 'fifth'): gundamIns.currentFeet = "first" mc.select(gundamIns.rightLeg.h_foot) print("here", gundamIns) mc.move(-8, 0, -13, r=True) mc.select(gundamIns.leftLeg.h_foot) mc.move(12, 0, 0, r=True) mc.select(gundamIns.torso.h_hips) currentY = mc.getAttr(".translateY") mc.move(0, 5.3, 0, r=True) currentY = mc.getAttr(".translateY") mc.move(0, .5, 0, r=True) mc.select(cl=True)
def handleLegsBtn(self): cmds.select('leg_R') cmds.currentTime(48) cmds.setKeyframe('leg_R', at='rotateX') cmds.currentTime(64) cmds.rotate(70.63, 0, 0) cmds.setKeyframe('leg_R', at='rotateX') cmds.currentTime(80) cmds.rotate(-64.254, 0, 0) cmds.setKeyframe('leg_R', at='rotateX') cmds.currentTime(96) cmds.rotate(0, 0, 0) cmds.setKeyframe('leg_R', at='rotateX') cmds.currentTime(104) cmds.rotate(12.526, 0, 0) cmds.setKeyframe('leg_R', at='rotateX') cmds.currentTime(107) cmds.rotate(0, 0, 0) cmds.setKeyframe('leg_R', at='rotateX')
def handleScriptBtn(self): cmds.select('arm_R') cmds.currentTime(1) cmds.setKeyframe('arm_R', at='rotateX') cmds.currentTime(20) cmds.rotate(-142.85, 0, 0) cmds.setKeyframe('arm_R', at='rotateX') cmds.currentTime(32) cmds.rotate(-142.85, 0, 0) cmds.setKeyframe('arm_R', at='rotateX') cmds.currentTime(48) cmds.rotate(0, 0, 0) cmds.setKeyframe('arm_R', at='rotateX')
def turns(self,start,end): mc.select(self.gundamIns.rightLeg.h_foot) mc.move(0,44,0,r=True) mc.rotate(137,-70,0,) mc.select(cl=True) mc.select(self.gundamIns.torso.h_hips) mc.move(20,5,0,r=True) mc.select(self.gundamIns.rightArm.h_hand) mc.move(20,5,0,r=True) mc.select(self.gundamIns.leftArm.h_hand) mc.move(20,5,0,r=True) mc.select(self.gundamIns.torso.h_shoulders) mc.move(20,5,0,r=True) mc.select(cl=True) mc.select(self.gundamIns.rightLeg.h_foot) mc.move(0,5,0,r=True) mc.select(cl=True) mc.setKeyframe(self.gundamIns.torso.h_hips,self.gundamIns.leftLeg.h_foot,self.gundamIns.rightLeg.h_foot,self.gundamIns.torso.h_shoulders,self.gundamIns.rightArm.h_hand,self.gundamIns.leftArm.h_hand, t = (self.start)) mc.select(self.gundamIns.j_root) mc.rotate(0,-45 ,0) mc.setKeyframe(self.gundamIns.j_root,self.gundamIns.torso.h_hips,self.gundamIns.leftLeg.h_foot,self.gundamIns.rightLeg.h_foot,self.gundamIns.torso.h_shoulders,self.gundamIns.rightArm.h_hand,self.gundamIns.leftArm.h_hand,t=(self.end - self.start)*1.0/9.0) mc.select(cl=True) mc.select(self.gundamIns.j_root) mc.rotate(0,-90 ,0) mc.setKeyframe(self.gundamIns.j_root,self.gundamIns.torso.h_hips,self.gundamIns.leftLeg.h_foot,self.gundamIns.rightLeg.h_foot,self.gundamIns.torso.h_shoulders,self.gundamIns.rightArm.h_hand,self.gundamIns.leftArm.h_hand,t=(self.end - self.start)*2.0/9.0) mc.select(cl=True) mc.select(self.gundamIns.j_root) mc.rotate(0,-135 ,0) mc.setKeyframe(self.gundamIns.j_root,self.gundamIns.torso.h_hips,self.gundamIns.leftLeg.h_foot,self.gundamIns.rightLeg.h_foot,self.gundamIns.torso.h_shoulders,self.gundamIns.rightArm.h_hand,self.gundamIns.leftArm.h_hand,t=(self.end - self.start)*3.0/9.0) mc.select(cl=True) mc.select(self.gundamIns.j_root) mc.rotate(0,-180 ,0) mc.setKeyframe(self.gundamIns.j_root,self.gundamIns.torso.h_hips,self.gundamIns.leftLeg.h_foot,self.gundamIns.rightLeg.h_foot,self.gundamIns.torso.h_shoulders,self.gundamIns.rightArm.h_hand,self.gundamIns.leftArm.h_hand,t=(self.end - self.start)*4.0/9.0) mc.select(cl=True) mc.select(self.gundamIns.j_root) mc.rotate(0,-225 ,0) mc.setKeyframe(self.gundamIns.j_root,self.gundamIns.torso.h_hips,self.gundamIns.leftLeg.h_foot,self.gundamIns.rightLeg.h_foot,self.gundamIns.torso.h_shoulders,self.gundamIns.rightArm.h_hand,self.gundamIns.leftArm.h_hand,t=(self.end - self.start)*5.0/9.0) mc.select(cl=True) mc.select(self.gundamIns.j_root) mc.rotate(0,-270 ,0) mc.setKeyframe(self.gundamIns.j_root,self.gundamIns.torso.h_hips,self.gundamIns.leftLeg.h_foot,self.gundamIns.rightLeg.h_foot,self.gundamIns.torso.h_shoulders,self.gundamIns.rightArm.h_hand,self.gundamIns.leftArm.h_hand,t=(self.end - self.start)*6.0/9.0) mc.select(cl=True) mc.select(self.gundamIns.j_root) mc.rotate(0,-315 ,0) mc.setKeyframe(self.gundamIns.j_root,self.gundamIns.torso.h_hips,self.gundamIns.leftLeg.h_foot,self.gundamIns.rightLeg.h_foot,self.gundamIns.torso.h_shoulders,self.gundamIns.rightArm.h_hand,self.gundamIns.leftArm.h_hand,t=(self.end - self.start)*7.0/9.0) mc.select(cl=True) mc.select(self.gundamIns.j_root) mc.rotate(0,-360 ,0) mc.setKeyframe(self.gundamIns.j_root,self.gundamIns.torso.h_hips,self.gundamIns.leftLeg.h_foot,self.gundamIns.rightLeg.h_foot,self.gundamIns.torso.h_shoulders,self.gundamIns.rightArm.h_hand,self.gundamIns.leftArm.h_hand,t=(self.end - self.start)*8.0/9.0) mc.select(cl=True) mc.select(self.gundamIns.rightLeg.h_foot) mc.move(-20,-44,0,r=True) mc.rotate(0,-70,0,) mc.select(cl=True) mc.select(self.gundamIns.torso.h_hips) mc.move(-20,-5,0,r=True) mc.select(self.gundamIns.rightArm.h_hand) mc.move(-20,-5,0,r=True) mc.select(self.gundamIns.leftArm.h_hand) mc.move(-20,-5,0,r=True) mc.select(self.gundamIns.torso.h_shoulders) mc.move(-20,-5,0,r=True) mc.select(cl=True) mc.select(self.gundamIns.rightLeg.h_foot) mc.move(16,-5,0,r=True) mc.setKeyframe(self.gundamIns.torso.h_hips,self.gundamIns.leftLeg.h_foot,self.gundamIns.rightLeg.h_foot,self.gundamIns.torso.h_shoulders,self.gundamIns.rightArm.h_hand,self.gundamIns.leftArm.h_hand, t = (self.end-self.start)*9.0/9.0) mc.select(cl=True)
def setBallet(self): mc.select(self.index.j_n_1) mc.rotate(1, 0, 0, r=True) mc.select(self.index.j_n_2) mc.rotate(5, 0, 0, r=True) mc.select(self.index.j_n_3) mc.rotate(5, 0, 0, r=True) mc.select(self.middle.j_n_1) mc.rotate(10, 0, 0, r=True) mc.select(self.middle.j_n_2) mc.rotate(7, 0, 0, r=True) mc.select(self.middle.j_n_3) mc.rotate(7, 0, 0, r=True) mc.select(self.ring.j_n_1) mc.rotate(7, 0, 0, r=True) mc.select(self.ring.j_n_2) mc.rotate(7, 0, 0, r=True) mc.select(self.ring.j_n_3) mc.rotate(7, 0, 0, r=True) mc.select(self.pinky.j_n_1) mc.rotate(1, 0, 0, r=True) mc.select(self.pinky.j_n_2) mc.rotate(5, 0, 0, r=True) mc.select(self.pinky.j_n_3) mc.rotate(5, 0, 0, r=True) mc.select(self.thumb.j_thumb_1) mc.rotate(-50, -60, 70, r=True) pass
def _handleExitSceneButton(self): #Rotate Y angles angleWheel = 0; angleSolarPanels = 0 angleDoor = 0 angleEVE = 180.0 angleArmLeft = -15; angleArmRight = 15; angleHead = 90 #Translate Z values moveEVEz = .197 #Translate Y values moveHeady = 2.965 moveEVEy = 2.34 cmds.camera() cmds.select('camera1') cmds.move(-1.186, 2.441, 2.849, relative=True) cmds.rotate(1.8, -27.2, 0) cmds.camera() cmds.select('camera2') cmds.move(0.25, 4.5, 15, relative=True) cmds.rotate(-10, -2, 0) cmds.camera() cmds.select('camera3') cmds.move(0.083, 8.809, 4.579, relative=True) cmds.rotate(-49.2, -10, 0) cmds.camera() cmds.select('camera4') cmds.move(-18.709, 15.459, -20.347, relative=True) cmds.rotate(-24, -151.6, 0) #cmds.aimConstraint('EVE', 'camera1') cmds.move(.186,2.34,.197,'EVE') for i in range (360): cmds.setKeyframe('station1:Wheel', attribute='rotateY', value=angleWheel, t=i) angleWheel+=.5 cmds.setKeyframe('station1:SolarPanels', attribute='rotateY', value=angleSolarPanels, t=i) angleSolarPanels+=.5 if (i <= 72): cmds.setKeyframe('station1:spaceDoor', attribute='rotateY', value=angleDoor, t=i) angleDoor -= (120/70); if(i <= 72): cmds.setKeyframe('EVE', attribute='rotateY', value=angleEVE, t=i) angleEVE += (180.0/72.0) if(i > 72 and i < (72 + 48)): cmds.setKeyframe('head_base', attribute='translateY', value=moveHeady, t=i) cmds.setKeyframe('arm_left', attribute='rotateX', value=angleArmLeft, t=i) cmds.setKeyframe('arm_right', attribute='rotateX', value=angleArmRight, t=i) moveEVEz += (.757-.197)/(48.0) if(i <= (72 + 24)): angleArmRight += (24/15) angleArmLeft -= (24/15) cmds.setKeyframe('EVE', attribute='translateZ', value=moveEVEz, t=i) moveHeady += ((3.194-2.965)/24) if(i > (72 + 24)): angleArmRight -= (24/15) angleArmLeft += (24/15) cmds.setKeyframe('EVE', attribute='translateZ', value=moveEVEz, t=i) moveHeady -= ((3.194-2.965)/24) if(i > (120) and i < (120+48)): if(i <= (120 + 24)): angleHead -= (90-15)/24 cmds.setKeyframe('head_base', attribute='rotateY', value=angleHead, t=i) if( i > 144): angleHead += (90+30)/(24) cmds.setKeyframe('head_base', attribute='rotateY', value=angleHead, t=i) if(i > (168-12)): moveEVEz += ((1.709-.745)/2)/48 cmds.setKeyframe('EVE', attribute='translateZ', value=moveEVEz, t=i) if(i > 168 and i < (168+48)): if(i < 168 + 24): angleHead -= (30/24) cmds.setKeyframe('head_base', attribute='rotateY', value=angleHead, t=i) cmds.setKeyframe('EVE', attribute='rotateY', value=angleEVE, t=i) if(i <= 206): cmds.setKeyframe('station1:spaceDoor', attribute='rotateY', value=angleDoor, t=i) angleDoor += (120/48); moveEVEz += ((1.709-.745)/2)/48.0 cmds.setKeyframe('EVE', attribute='translateZ', value=moveEVEz, t=i) angleEVE += (720.0/48.0) moveEVEy += (3.094-2.965)/48.0 cmds.setKeyframe('EVE', attribute='translateY', value=moveEVEy, t=i) if(i > 216): if(i < 270): cmds.setKeyframe('EVE', attribute='translateY', value=angleHead, t=i) angleHead += (700/48) cmds.setKeyframe('EVE', attribute='translateY', value = moveEVEy, t=i ) cmds.setKeyframe('EVE', attribute='rotateY', value = angleEVE, t=i ) moveEVEy += (11.0-2.466)/(360-216) + .01
def doThird(): filePath3 = "C:/Users/Kyle/Downloads/hangar2.mb" filePath4 = "C:/Users/Kyle/Downloads/tie fighter.mb" cmds.file(filePath3, type='mayaBinary', ra=True, mergeNamespacesOnClash=False, namespace='hangar2', i=True) cmds.select('hangar2:pCube2') cmds.move(0, 2.872, 0) cmds.setKeyframe(time=1) cmds.file(filePath4, type='mayaBinary', ra=True, mergeNamespacesOnClash=False, namespace='tie fighter', i=True) cmds.select('tie_fighter:Tie_Droid:polySurface9') cmds.scale(.25, .25, .25) cmds.move(.8, 5.6, 0) cmds.setKeyframe(time=1) cmds.move(.8, 5.6, 0) cmds.setKeyframe(time=15) cmds.move(.8, 5.6, 0) cmds.setKeyframe(time=30) cmds.move(.8, 3.759, 0) cmds.setKeyframe(time=45) cmds.rotate(0, 40, 0) cmds.setKeyframe(time=65) cmds.move(4.765, 3.759, 3.545) cmds.setKeyframe(time=90) cmds.move(13.514, 3.759, 12.571) cmds.setKeyframe(time=120) cmds.file(filePath4, type='mayaBinary', ra=True, mergeNamespacesOnClash=False, namespace='tie fighter1', i=True) cmds.select('tie_fighter1:Tie_Droid:polySurface9') cmds.scale(.25, .25, .25) cmds.move(-.2, 5.6, 0) cmds.setKeyframe(time=1) cmds.setKeyframe(time=15) cmds.move(-.2, 4.377, 0) cmds.setKeyframe(time=30) cmds.setKeyframe(time=45) time.sleep(1) cmds.rotate(0, 40, 0) time.sleep(1) cmds.setKeyframe(time=65) cmds.move(3.765, 4.377, 3.545) cmds.setKeyframe(time=90) cmds.move(12.514, 4.377, 12.571) cmds.setKeyframe(time=120) time.sleep(1) cmds.file(filePath4, type='mayaBinary', ra=True, mergeNamespacesOnClash=False, namespace='tie fighter2', i=True) cmds.select('tie_fighter2:Tie_Droid:polySurface9') cmds.scale(.25, .25, .25) cmds.move(-1.2, 5.6, 0) cmds.setKeyframe(time=1) cmds.move(-1.2, 3.729, 0) cmds.setKeyframe(time=15) cmds.setKeyframe(time=30) cmds.setKeyframe(time=45) time.sleep(1) cmds.rotate(0, 40, 0) time.sleep(1) cmds.setKeyframe(time=65) cmds.move(2.765, 3.729, 3.545) cmds.setKeyframe(time=90) cmds.move(11.514, 3.729, 12.571) cmds.setKeyframe(time=120) time.sleep(1)
def createTrackNode(cls, uid, trackSetNode =None, props =None): """ A track node consists of a triangular pointer (left = red, right = green) which is selectable but only allows rotateY, translateX, and translateZ. The node has a child, a transform called inverter, which serves to counteract the scaling in x and z that is applied to the triangular node. There are two orthogonal rulers (width and length). Width and length uncertainty is represented by rectangular bars at the ends of the rulers. In Maya one can directly adjust track position (translateX and translateZ) and orientation (rotationY); other attributes are adjusted only through the UI. """ if not trackSetNode: trackSetNode = TrackSceneUtils.getTrackSetNode() if not trackSetNode: return None node = cls.getTrackNode(uid, trackSetNode=trackSetNode) if node: return node # Set up dimensional constants for the track node nodeThickness = 1.0 thetaBreadth = 0.1 thetaThickness = 0.5 barBreadth = 2.0 barThickness = 0.5 rulerBreadth = 1.0 rulerThickness = 0.25 epsilon = 1.0 # Create an isoceles triangle pointer, with base aligned with X, and # scaled by node.width. The midpoint of the base is centered on the # 'track center' and the altitude extends from that center of the track # 'anteriorly' to the perimeter of the track's profile (if present, else # estimated). The node is scaled longitudinally (in z) based on the # distance zN (the 'anterior' length of the track, in cm). The triangle # is initially 1 cm on a side. sideLength = 1.0 node = cmds.polyPrism( length=nodeThickness, sideLength=sideLength, numberOfSides=3, subdivisionsHeight=1, subdivisionsCaps=0, axis=(0, 1, 0), createUVs=0, constructionHistory=0, name='Track0')[0] # Point the triangle down the +Z axis cmds.rotate(0.0, -90.0, 0.0) # push it down below ground level so that the two rulers are just # submerged, and scale the triangle in Z to match its width (1 cm) so it # is ready to be scaled cmds.move(0, -(nodeThickness/2.0 + rulerThickness), math.sqrt(3.0)/6.0) # move the node's pivot to the 'base' of the triangle so it scales # outward from that point cmds.move( 0, 0, 0, node + ".scalePivot", node + ".rotatePivot", absolute=True) cmds.scale(2.0/math.sqrt(3.0), 1.0, 100.0) cmds.makeIdentity( apply=True, translate=True, rotate=True, scale=True, normal=False) # Set up the cadence attributes cmds.addAttr( longName='cadence_width', shortName=TrackPropEnum.WIDTH.maya, niceName='Width') cmds.addAttr( longName='cadence_widthUncertainty', shortName=TrackPropEnum.WIDTH_UNCERTAINTY.maya, niceName='Width Uncertainty') cmds.addAttr( longName='cadence_length', shortName=TrackPropEnum.LENGTH.maya, niceName='Length') cmds.addAttr( longName='cadence_lengthUncertainty', shortName=TrackPropEnum.LENGTH_UNCERTAINTY.maya, niceName='Length Uncertainty') cmds.addAttr( longName='cadence_lengthRatio', shortName=TrackPropEnum.LENGTH_RATIO.maya, niceName='Length Ratio') cmds.addAttr( longName='cadence_rotationUncertainty', shortName=TrackPropEnum.ROTATION_UNCERTAINTY.maya, niceName='Rotation Uncertainty') cmds.addAttr( longName='cadence_uniqueId', shortName=TrackPropEnum.UID.maya, dataType='string', niceName='Unique ID') # Construct a ruler representing track width, then push it down just # below ground level, and ake it non-selectable. Drive its scale by the # node's width attribute. widthRuler = cmds.polyCube( axis=(0, 1, 0), width=100.0, height=rulerThickness, depth=rulerBreadth, subdivisionsX=1, subdivisionsY=1, createUVs=0, constructionHistory=0, name='WidthRuler')[0] # Push it down to just rest on the triangular node (which is already # submerged by the thickness of the ruler and half the node thickness. cmds.move(0.0, -rulerThickness/2.0, 0.0) cmds.setAttr(widthRuler + '.overrideEnabled', 1) cmds.setAttr(widthRuler + '.overrideDisplayType', 2) # Construct a ruler representing track length and push it down the same # as the width ruler, and make it non-selectable. Its length will be # driven by the node's length attribute. lengthRuler = cmds.polyCube( axis=(0, 1, 0), width=rulerBreadth, height=rulerThickness, depth=100.0, subdivisionsX=1, subdivisionsY=1, createUVs=0, constructionHistory=0, name='LengthRuler')[0] cmds.move(0.0, -rulerThickness/2.0, 0.0) cmds.setAttr(lengthRuler + '.overrideEnabled', 1) cmds.setAttr(lengthRuler + '.overrideDisplayType', 2) # Now construct 'error bars' to the North, South, West, and East of the # node, to visualize uncertainty in width (West and East bars) and # length (North and South bars), and push them just below ground level, # and make them non-selectable. barN = cmds.polyCube( axis=(0,1,0), width=barBreadth, height=barThickness, depth=100.0, subdivisionsX=1, subdivisionsY=1, createUVs=0, constructionHistory=0, name='BarN')[0] cmds.move(0, -(barThickness/2 + rulerThickness), 0) cmds.setAttr(barN + '.overrideEnabled', 1) cmds.setAttr(barN + '.overrideDisplayType', 2) barS = cmds.polyCube( axis=(0, 1, 0), width=barBreadth, height=barThickness, depth=100.0, subdivisionsX=1, subdivisionsY=1, createUVs=0, constructionHistory=0, name='BarS')[0] cmds.move(0, -(barThickness/2 + rulerThickness), 0) cmds.setAttr(barS + '.overrideEnabled', 1) cmds.setAttr(barS + '.overrideDisplayType', 2) barW = cmds.polyCube( axis=(0, 1, 0), width=100.0, height=barThickness, depth=barBreadth, subdivisionsX=1, subdivisionsY=1, createUVs=0, constructionHistory=0, name='BarW')[0] cmds.move(0, -(barThickness/2 + rulerThickness), 0) cmds.setAttr(barW + '.overrideEnabled', 1) cmds.setAttr(barW + '.overrideDisplayType', 2) barE = cmds.polyCube( axis=(0, 1, 0), width=100.0, height=barThickness, depth=barBreadth, subdivisionsX=1, subdivisionsY=1, createUVs=0, constructionHistory=0, name='BarE')[0] cmds.move(0, -(barThickness/2 + rulerThickness), 0) cmds.setAttr(barE + '.overrideEnabled', 1) cmds.setAttr(barE + '.overrideDisplayType', 2) # Create two diverging lines that indicate rotation uncertainty (plus # and minus), with their pivots placed so they extend from the node # center, and each is made non-selectable. First make the indicator of # maximum (counterclockwise) estimated track rotation thetaPlus = cmds.polyCube( axis=(0, 1, 0), width=thetaBreadth, height=thetaThickness, depth=1.0, subdivisionsX=1, subdivisionsY=1, createUVs=0, constructionHistory=0, name='ThetaPlus')[0] cmds.setAttr(thetaPlus + '.overrideEnabled', 1) cmds.setAttr(thetaPlus + '.overrideDisplayType', 2) # Next, construct the indicator of the minimum (clockwise) estimate of # track rotation thetaMinus = cmds.polyCube( axis=(0, 1, 0), width=thetaBreadth, height=thetaThickness, depth=1.0, subdivisionsX=1, subdivisionsY=1, createUVs=0, constructionHistory=0, name='ThetaMinus')[0] cmds.setAttr(thetaMinus + '.overrideEnabled', 1) cmds.setAttr(thetaMinus + '.overrideDisplayType', 2) # The two width 'error bars' will be translated outward from the node # center. First, the width attribute is converted from meters (as it # comes from the database) to centimeters; the computation is available # in the output of the node 'width'. width = cmds.createNode('multiplyDivide', name='width') cmds.setAttr(width + '.operation', 1) cmds.setAttr(width + '.input1X', 100.0) cmds.connectAttr( node + '.' + TrackPropEnum.WIDTH.maya, width + '.input2X') # Translate barW in x by width/2.0; output is in xW.outputX xW = cmds.createNode('multiplyDivide', name = 'xW') cmds.setAttr(xW + '.operation', 2) cmds.connectAttr(width + '.outputX', xW + '.input1X') cmds.setAttr(xW + '.input2X', 2.0) cmds.connectAttr(xW + '.outputX', barW + '.translateX') # Translate barE in x by -width/2.0; output is in xE.outputX xE = cmds.createNode('multiplyDivide', name = 'xE') cmds.setAttr(xE + '.operation', 2) # division operation cmds.connectAttr(width + '.outputX', xE + '.input1X') cmds.setAttr(xE + '.input2X', -2.0) cmds.connectAttr(xE + '.outputX', barE + '.translateX') # Now regarding length, first convert the node.length attribute from # meters to centimeters. This computation is available in the output of # the node 'length' length = cmds.createNode('multiplyDivide', name='length') cmds.setAttr(length + '.operation', 1) cmds.setAttr(length + '.input1X', 100.0) cmds.connectAttr( node + '.' + TrackPropEnum.LENGTH.maya, length + '.input2X') # scale thetaPlus and thetaMinus by length (since they are 1 cm, # multiply by length in cm) cmds.connectAttr(length + '.outputX', thetaPlus + '.scaleZ') cmds.connectAttr(length + '.outputX', thetaMinus + '.scaleZ') # Then barN is translated forward in z by zN = lengthRatio*length # (centimeters) zN = cmds.createNode('multiplyDivide', name='zN') cmds.setAttr(zN + '.operation', 1) cmds.connectAttr( node + '.' + TrackPropEnum.LENGTH_RATIO.maya, zN + '.input1X') cmds.connectAttr(length + '.outputX', zN + '.input2X') cmds.connectAttr(zN + '.outputX', barN + '.translateZ') # Next, translate barS backward in z by (zN - length); output is in # zS.output1D zS = cmds.createNode('plusMinusAverage', name='sZ') cmds.setAttr(zS + '.operation', 2) cmds.connectAttr(zN + '.outputX', zS + '.input1D[0]') cmds.connectAttr(length + '.outputX', zS + '.input1D[1]') cmds.connectAttr(zS + '.output1D', barS + '.translateZ') # Next, compute the half length, hl = length/2.0 (centimeters) hl = cmds.createNode('multiplyDivide', name='hl') cmds.setAttr(hl + '.operation', 2) cmds.connectAttr(length + '.outputX', hl + '.input1X') cmds.setAttr(hl + '.input2X', 2.0) # Translate lengthRuler along z by zL = (zN - hl) (centimeters) zL = cmds.createNode('plusMinusAverage', name='zL') cmds.setAttr(zL + '.operation', 2) cmds.connectAttr(zN + '.outputX', zL + '.input1D[0]') cmds.connectAttr(hl + '.outputX', zL + '.input1D[1]') cmds.connectAttr(zL + '.output1D', lengthRuler + '.translateZ') # Scale the four 'error bars' to represent the width and length # uncertainties (centimeters) cmds.connectAttr( node + "." + TrackPropEnum.WIDTH_UNCERTAINTY.maya, barW + '.scaleX') cmds.connectAttr( node + "." + TrackPropEnum.WIDTH_UNCERTAINTY.maya, barE + '.scaleX') cmds.connectAttr( node + "." + TrackPropEnum.LENGTH_UNCERTAINTY.maya, barN + '.scaleZ') cmds.connectAttr( node + "." + TrackPropEnum.LENGTH_UNCERTAINTY.maya, barS + '.scaleZ') # Create an 'inverter' transform under which all the other parts are # hung as children, which counteracts scaling applied to its parent # triangular node. inverter = cmds.createNode('transform', name='inverter') # drive the inverter's .scaleX and .scaleZ as the inverse of the parent # node's scale values sx = cmds.createNode('multiplyDivide', name='sx') cmds.setAttr(sx + '.operation', 2) cmds.setAttr(sx + '.input1X', 1.0) cmds.connectAttr(node + '.scaleX', sx + '.input2X') cmds.connectAttr(sx + '.outputX', inverter + '.scaleX') sz = cmds.createNode('multiplyDivide', name='sz') cmds.setAttr(sz + '.operation', 2) cmds.setAttr(sz + '.input1X', 1.0) cmds.connectAttr(node + '.scaleZ', sz + '.input2X') cmds.connectAttr(sz + '.outputX', inverter + '.scaleZ') # Assemble the parts as children under the scale inverter node cmds.parent(lengthRuler, inverter) cmds.parent(widthRuler, inverter) cmds.parent(barN, inverter) cmds.parent(barS, inverter) cmds.parent(barW, inverter) cmds.parent(barE, inverter) cmds.parent(thetaPlus, inverter) cmds.parent(thetaMinus, inverter) cmds.parent(inverter, node) # Rotate thetaPlus and thetaMinus about the Y axis to indicate # rotational uncertainty cmds.connectAttr( node + '.' + TrackPropEnum.ROTATION_UNCERTAINTY.maya, node + '|' + inverter + '|' + thetaPlus + '.rotateY') neg = cmds.createNode('multiplyDivide', name='negative') cmds.setAttr(neg + '.operation', 1) cmds.setAttr(neg + '.input1X', -1.0) cmds.connectAttr( node + '.' + TrackPropEnum.ROTATION_UNCERTAINTY.maya, neg + '.input2X') cmds.connectAttr( neg + '.outputX', node + '|' + inverter + '|' + thetaMinus + '.rotateY') # Disable some transforms of the node cmds.setAttr(node + '.rotateX', lock=True) cmds.setAttr(node + '.rotateZ', lock=True) cmds.setAttr(node + '.scaleY', lock=True) cmds.setAttr(node + '.translateY', lock=True) # Now, the width of the triangle will be driven by its width attribute # (driving .scaleX) cmds.connectAttr(node + '.width', node + '.scaleX') # The quantity zN is used to scale length of the triangle cmds.connectAttr(zN + '.outputX', node + '.scaleZ') # Scale the 'length' (in x) of the width ruler cmds.connectAttr( node + '.width', node + '|' + inverter + '|WidthRuler.scaleX') # Scale the length of the length ruler cmds.connectAttr( node + '.length', node + '|' + inverter + '|LengthRuler.scaleZ') # Translate the track node epsilon below ground level (to reveal the # overlaid track siteMap) cmds.move(0, -epsilon, 0, node) # Initialize all the properties from the dictionary if props: cls.setTrackProps(node, props) else: print('in createTrackNode: properties not provided') return node # Add the new nodeName to the Cadence track scene set, color it, and # we're done cmds.sets(node, add=trackSetNode) cls.colorTrackNode(node, props) return node
import nimble from nimble import cmds kwargs = nimble.getRemoteKwargs(globals()) result = cmds.polySphere() name = result[0] offset = kwargs.get('offset', 10) cmds.move(offset, offset, offset, name) cmds.rotate(50, 20, 10, name) cmds.scale(2, 2, 2, name) response = nimble.createRemoteResponse(globals()) response.put('name', name) response.put('offset', offset)
def _createGeometry(self, name, side): #create radius self.radius = mc.polyCube(sx=1, sy=1, sz=1, w=2, h=40, d=2, n=name + '_radius')[0] mc.move(0, 20, 0) self.elbow = mc.polyCylinder(h=5, r=2, n=name + '_elbow')[0] mc.move(0, 41, 0, r=True) mc.rotate(0, 0, '90deg') self.radius = mc.polyUnite(self.radius, self.elbow, n=name + '_radius')[0] mc.move(0, 41, 0, self.radius + ".scalePivot", self.radius + ".rotatePivot") #create humerus self.humerus = mc.polyCube(sx=1, sy=1, sz=1, w=3, h=40, d=3, n=name + '_humerus')[0] mc.move(0, 62, 0) self.shoulder = mc.polySphere(r=5, n=name + '_shoulder') mc.move(0, 84, 0) self.humerus = mc.polyUnite(self.humerus, self.shoulder, n=name + '_humerus')[0] mc.move(0, 84, 0, self.humerus + ".scalePivot", self.humerus + ".rotatePivot") pass ######### shoulders ############ t1 = mc.polyCube(sx=3, sy=3, sz=3, w=15, h=15, d=15, n='l_shoulder')[0] mc.sets(e=True, forceElement=self.color4) t1r = mc.polyBevel(ws=1, oaf=1, o=.5, sa=30)[0] #mc.scale(1,5,1) mc.move(self.sideMult * 5, 90, 0, r=True) t2 = mc.polyCube(sx=3, sy=3, sz=3, w=10, h=15, d=10, n='r_shoulder')[0] mc.sets(e=True, forceElement=self.color4) t2r = mc.polyBevel(ws=1, oaf=1, o=.5, sa=30)[0] mc.scale(1, 2.5, 1) mc.move(0, 63, 0, r=True) t3 = mc.polyCube(sx=3, sy=3, sz=3, w=10, h=15, d=10, n='r_shoulder')[0] mc.sets(e=True, forceElement=self.color1) t3r = mc.polyBevel(ws=1, oaf=1, o=.5, sa=30)[0] mc.scale(1.2, 2.25, 1) mc.move(0, 63, -1, r=True) t4 = mc.polyCube(sx=3, sy=3, sz=3, w=10, h=15, d=10, n='r_shoulder')[0] mc.sets(e=True, forceElement=self.color4) t4r = mc.polyBevel(ws=1, oaf=1, o=.5, sa=30)[0] mc.scale(1, 2.5, 1) mc.move(0, 20, 0, r=True) t5 = mc.polyCube(sx=3, sy=3, sz=3, w=10, h=15, d=10, n='r_shoulder')[0] mc.sets(e=True, forceElement=self.color1) t5r = mc.polyBevel(ws=1, oaf=1, o=.5, sa=30)[0] mc.scale(1.2, 2.25, 1.0) mc.move(0, 20, -1, r=True) self.elbowArmor = mc.polyCube(sx=3, sy=3, sz=3, w=8, h=15, d=9, n='r_shoulder')[0] mc.sets(e=True, forceElement=self.color1) t5r = mc.polyBevel(ws=1, oaf=1, o=.5, sa=30)[0] mc.move(0, 41, -1, r=True) self.humerus = mc.polyUnite(self.humerus, t1, t2, t3) self.radius = mc.polyUnite(self.radius, t4, t5)
def __init__(self, name, c1=None, c2=None, c3=None): self.name = name self.currentFeet = "parallel" self.currentArms = "straight" self.color1 = c1 self.color2 = c2 self.color3 = c3 if self.color1 is None: self.color1 = 'initialShadingGroup' if self.color2 is None: self.color2 = 'initialShadingGroup' if self.color3 is None: self.color3 = 'initialShadingGroup' #self.sword = sword.Sword(name) ''' mc.select(cl=True) self.rightHand = hand.Hand(name+'_right', Side.right) mc.select(cl=True) self.leftHand = hand.Hand(name+'_left', Side.left) ''' self.leftLeg = leg.Leg(name + '_left', Side.left, self.color1, self.color2, self.color3) mc.select(cl=True) self.rightLeg = leg.Leg(name + '_right', Side.right, self.color1, self.color2, self.color3) mc.select(cl=True) self.leftArm = arms.Arm(name + '_left', Side.left, self.color1, self.color2, self.color3) mc.select(cl=True) self.rightArm = arms.Arm(name + '_right', Side.right, self.color1, self.color2, self.color3) mc.select(cl=True) mc.select(self.rightArm.hand.j_wrist) #mc.move(-112, 173, 0, r=True) mc.rotate('180deg', '-90deg', 0, r=True) mc.select(self.leftArm.hand.j_wrist) #mc.move(112, 173, 0, r=True) mc.rotate('180deg', '90deg', 0, r=True) mc.select(self.rightLeg.j_hip) mc.move(-20, 0, 12, r=True) mc.select(self.leftLeg.j_hip) mc.move(20, 0, 12, r=True) mc.select(self.rightLeg.h_foot) mc.move(-20, 0, 12, r=True) mc.select(self.leftLeg.h_foot) mc.move(20, 0, 12, r=True) mc.select(self.rightArm.j_shoulder) mc.move(-35, 90, 0, r=True) mc.rotate(0, 0, -90) mc.select(self.leftArm.j_shoulder) mc.move(35, 90, 0, r=True) mc.rotate(0, 0, 90) self.torso = torso.Torso(name + '_torso', self.color1, self.color2, self.color3) mc.select(self.torso.j_root) mc.select(self.torso.j_bind_root, add=True) mc.move(0, 107, 0) mc.select(self.torso.j_bind_neck) mc.select(self.torso.h_hips, add=True) mc.select(self.torso.h_shoulders, add=True) mc.move(0, 107, 0, r=True) self.head = head.Head(name) #mc.select(self.head.head) mc.select(self.head.j_head) mc.move(0, 189, 0) mc.parent(self.rightLeg.j_hip, self.torso.j_root) mc.parent(self.leftLeg.j_hip, self.torso.j_root) mc.parent(self.rightArm.j_shoulder, self.torso.j_s5) mc.parent(self.leftArm.j_shoulder, self.torso.j_s5) mc.parent(self.head.j_head, self.torso.j_neck) #mc.parent(self.leftArm.hand.j_wrist, self.leftArm.j_elbow) #mc.parent(self.rightArm.hand.j_wrist, self.rightArm.j_elbow) mc.select(cl=True) self.j_root = mc.joint(p=(0, 107, 0), n=name + '_root') mc.parent(self.torso.j_root, self.j_root) mc.setAttr( self.j_root + " | " + self.torso.j_root + ".segmentScaleCompensate", 0) mc.select(cl=True) self.parentIKToRoot() #print self.leftArm.h_hand self.leftArm.hand.setBallet() self.rightArm.hand.setBallet()
def _createGeometry(self, name, side): #build toe self.side = side self.name = name self.toe = mc.polyCube(sx=2, sy=2, sz=2, w=5, h=2, d=3, n=name + '_toe')[0] self.ball = mc.polyCylinder(h=5, n=name + '_ball')[0] mc.move(0, 0, -2, r=True) mc.rotate(0, 0, '90deg') self.toe = mc.polyUnite(self.toe, self.ball, n=name + '_toe')[0] self.toeBox = mc.polyCube(w=8, h=4, d=3, n=name + '_toeBox')[0] mc.sets(e=True, forceElement=self.color1) mc.move(0, .9, 0, r=True) #e1 mc.select(self.toeBox + '.e[1]') mc.move(0, -1, 0, r=True) self.toeBoxBase = mc.polyCube(w=8, h=4, d=3, n=name + '_toeBoxBase')[0] mc.sets(e=True, forceElement=self.color2) mc.move(0, .9, 1, r=True) #e1 mc.select(self.toeBoxBase + '.e[2]') mc.move(0, -2, 0, r=True) mc.select(self.toeBoxBase + '.e[1]') mc.move(0, -1, 0, r=True) mc.select(self.toeBoxBase + '.f[2]') mc.scale(1.25, 1, 1) mc.move(0, 0, -1, r=True) self.toeToeBox = mc.polyCube(w=8, h=3, d=3, n=name + '_toeToeBox')[0] mc.sets(e=True, forceElement=self.color2) mc.move(0, .4, 4, r=True) #f0 mc.select(self.toeToeBox + '.f[0]') mc.scale(.75, .75, 1) mc.move(0, 0, -2, self.toe + ".scalePivot", self.toe + ".rotatePivot") self.toe = mc.polyUnite(self.toe, self.toeBox) self.toe = mc.polyUnite(self.toe, self.toeToeBox) self.toe = mc.polyUnite(self.toe, self.toeBoxBase, n=name + '_toe') #build arch self.arch = mc.polyCube(w=5, d=10, n=name + '_arch')[0] mc.move(0, 0, -7, r=True) #mc.select(f[8]-f[11]) mc.select(self.arch + '.f[2]') mc.move(0, 3, 0, r=True) self.ankle = mc.polySphere(r=2.5)[0] mc.move(0, 3, -12, r=True) self.arch = mc.polyUnite(self.arch, self.ankle, n=name + '_arch')[0] self.archArmor = mc.polyCube(w=8, h=4, d=8)[0] mc.sets(e=True, forceElement=self.color1) mc.move(0, .9, -6, r=True) self.archArmor2 = mc.polyCube(w=8, h=4, d=8)[0] mc.sets(e=True, forceElement=self.color1) mc.move(0, 4.9, -6, r=True) mc.select(self.archArmor2 + '.e[1]') mc.move(0, -3.75, 0, r=True) mc.select(self.archArmor2 + '.e[2]') #mc.move(0,-.5,0,r=True) mc.scale(.5, 1, 1) self.archArmor3 = mc.polyCube(w=8, h=4, d=8)[0] mc.sets(e=True, forceElement=self.color1) mc.move(0, 4.9, -8.5, r=True) mc.select(self.archArmor3 + '.e[1]') mc.move(0, 0, -4, r=True) mc.scale(.5, 1, 1) mc.select(self.archArmor3 + '.e[2]') #mc.move(0,-.5,0,r=True) mc.scale(.5, 1, 1) self.archArmorBase = mc.polyCube(w=8, h=4, d=8)[0] mc.sets(e=True, forceElement=self.color2) mc.move(0, .9, -6, r=True) mc.select(self.archArmorBase + '.f[0]') mc.scale(1.25, 1, 1) mc.select(self.archArmorBase + '.f[2]') mc.scale(1.25, 1, 1) mc.select(self.archArmorBase + '.e[1]') mc.move(0, -2, 0, r=True) mc.select(self.archArmorBase + '.e[2]') mc.move(0, -.5, 0, r=True) self.archArmorBase2 = mc.polyCube(w=8, h=4, d=4)[0] mc.sets(e=True, forceElement=self.color2) mc.move(0, .9, -12, r=True) mc.select(self.archArmorBase2 + '.f[0]') mc.scale(1.25, 1, 1) mc.select(self.archArmorBase2 + '.f[2]') mc.scale(1.25, 1, 1) mc.select(self.archArmorBase2 + '.e[3]') mc.move(0, 1, 1.75, r=True) mc.select(self.archArmorBase2 + '.e[1]') mc.move(0, -.5, 0, r=True) self.archArmorBase3 = mc.polyCube(w=8, h=4, d=4)[0] mc.sets(e=True, forceElement=self.color2) mc.move(0, 4.9, -12, r=True) mc.select(self.archArmorBase3 + '.f[0]') mc.scale(1.25, 1, 1) mc.select(self.archArmorBase3 + '.f[2]') mc.scale(1.25, 1, 1) mc.select(self.archArmorBase3 + '.f[1]') mc.scale(.5, 1, 1) mc.move(0, -1, 0, r=True) mc.select(self.archArmorBase3 + '.e[0]') mc.move(0, -.5, 0, r=True) mc.select(self.archArmorBase3 + '.e[1]') mc.move(0, 0, -2.5, r=True) mc.select(self.archArmorBase3 + '.e[2]') mc.move(0, 0, -1.5, r=True) self.archArmorBase4 = mc.polyCube(w=8, h=4, d=4)[0] mc.sets(e=True, forceElement=self.color2) mc.move(0, 4.9, -15.5, r=True) mc.select(self.archArmorBase4 + '.f[0]') mc.scale(1.25, 1, 1) mc.select(self.archArmorBase4 + '.f[2]') mc.scale(1.25, 1, 1) mc.select(self.archArmorBase4 + '.f[1]') mc.scale(.5, 1, 1) mc.move(0, -2, 0, r=True) mc.select(self.archArmorBase4 + '.f[3]') mc.scale(1, 1, 1.25) mc.select(self.archArmorBase4 + '.e[0]') mc.move(0, -3, .5, r=True) mc.select(self.archArmorBase4 + '.e[1]') mc.move(0, 0, -2, r=True) mc.select(self.archArmorBase4 + '.e[2]') mc.move(0, 0, 1, r=True) mc.select(self.archArmorBase4 + '.e[3]') mc.move(0, -2, -.75, r=True) mc.scale(.75, 1, 1) self.archArmorBase5 = mc.polyCube(w=8, h=4, d=5)[0] mc.sets(e=True, forceElement=self.color2) mc.move(0, .9, -15.6, r=True) mc.select(self.archArmorBase5 + '.f[1]') mc.move(0, -3, 0, r=True) mc.scale(1.25, 1, 1.25) mc.select(self.archArmorBase5 + '.f[2]') mc.scale(.75, 1, 1) #mc.select(self.archArmorBase5+'.e[3]') #mc.move(0,1,0,r=True) mc.select(self.archArmorBase5 + '.e[2]') mc.move(0, 1, 0, r=True) self.arch = mc.polyUnite(self.arch, self.archArmor) self.arch = mc.polyUnite(self.arch, self.archArmor2) self.arch = mc.polyUnite(self.arch, self.archArmor3) self.arch = mc.polyUnite(self.arch, self.archArmorBase2) self.arch = mc.polyUnite(self.arch, self.archArmorBase3) self.arch = mc.polyUnite(self.arch, self.archArmorBase4) self.arch = mc.polyUnite(self.arch, self.archArmorBase5) self.arch = mc.polyUnite(self.arch, self.archArmorBase, n=name + '_arch')[0] mc.move(0, 3, -12, self.arch + ".scalePivot", self.arch + ".rotatePivot") #self.heal = mc.polyCube(sx=2, sy=2, sz=2,w=5, h=3, n=name+'_heal') pass
def _createGeometry(self, side): mc.select(cl=True) self.n_t = mc.polySphere(r=1.2, n="n_t") mc.move(self.sideModifyer * 4.5, 2, 1.5) self.b_1 = mc.polyCylinder(r=.75, h=2) mc.move(self.sideModifyer * 6.5, 2, 1.5) mc.rotate(0, 0, 90) self.s_1 = mc.polyCube(sx=1, sy=3, sz=1, h=5, w=2, d=2)[0] mc.move(self.sideModifyer * 8.5, 3.5, 1.5) mc.select(self.s_1 + '.f[7]') mc.move(-1, 0, 0, r=True) mc.select(self.s_1 + '.e[26]') mc.move(-1, 0, 0, r=True) mc.select(self.s_1 + '.e[23]') mc.move(.123, 0, 0, r=True) mc.select(self.s_1 + '.f[3]') mc.move(0, -.5, 0, r=True) self.n_2_a = mc.polyCylinder(ax=[0, 0, 1], sx=2, sy=2, sz=2, h=.6, r=1.0, n='n_2_a') mc.move(self.sideModifyer * 8.5, 6.5, 1.5 + .7) #1.875 + .35 self.n_2_b = mc.polyCylinder(ax=[0, 0, 1], sx=2, sy=2, sz=2, h=.6, r=1.0, n='n_2_b') mc.move(self.sideModifyer * 8.5, 6.5, 1.5 - .7) #1.875 -.35 self.s_1 = mc.polyUnite(self.n_t, self.s_1, self.n_2_a, self.n_2_b, self.b_1, n='segment_1') #section 2 construction self.n_2_c = mc.polyCylinder(ax=[0, 0, 1], sx=2, sy=2, sz=2, h=.6, r=1.0, n='n_2_c')[0] mc.move(self.sideModifyer * 8.5, 6.5, 1.5) self.p_2 = mc.polyCube(sx=2, sy=2, sz=2, h=4, w=2, d=2)[0] mc.move(self.sideModifyer * 8.5, 9.5, 1.5) mc.select(self.p_2 + '.f[4:7]') #f[5] on a one segment mc.scale(.8, 1, .75) #section 2 unite self.s_2 = mc.polyUnite(self.n_2_c, self.p_2, n='p_s_2')[0] mc.move(self.sideModifyer * 8.5, 6.5, 1.5, self.s_2 + ".scalePivot", self.s_2 + ".rotatePivot")
def _handleCreateH2o(self): """ """ #Sets the animation end time cmds.playbackOptions(max=240, aet=240) #this number sets the number of molecules to create molecules = 10 #Creates each atom in the h2o molecule, aligns them properly, then groups them together . cmds.polySphere(name="oxygen", r=1.2) cmds.polySphere(name="hydrogenA", r=1.06) cmds.select("hydrogenA") cmds.move(0, -1.3, 0) cmds.group('oxygen', 'hydrogenA', n='oxygenHydrogenA') cmds.select('hydrogenA') cmds.rotate(0, 0, '-52.5', p=(0, 0, 0)) cmds.polySphere(name="hydrogenB", r=1.06) cmds.select("hydrogenB") cmds.move(0, -1.3, 0) cmds.group('oxygen', 'hydrogenB', n='oxygenHydrogenB') cmds.select('hydrogenB') cmds.rotate(0, 0, '52.5', p=(0, 0, 0)) cmds.select('hydrogenA', 'hydrogenB') cmds.polyColorPerVertex(rgb=(1, 1, 1), cdo=True) cmds.select('oxygen') cmds.polyColorPerVertex(rgb=(1, 0, 0), cdo=True) cmds.group('oxygenHydrogenB', 'oxygenHydrogenA', n='h2o') #duplicates the original molecule for i in range(1, molecules): cmds.duplicate('h2o') #list of planes for movement xyz = ['X', 'Y'] #Sets movement for the original h2o molecule cmds.select("h2o") plane = random.choice(xyz) cmds.setKeyframe('h2o', at='translate' + plane, v=float(cmds.getAttr('h2o.translate' + plane)), t=1) cmds.setKeyframe('h2o', at='translate' + plane, v=5, t=240) #Iterates through each h2o group and assigns a random position and orientation for each molecule. #It also randomly choose a direction for the molecule to move in. for i in range(1, molecules): #random plane plane = random.choice(xyz) cmds.select("h2o" + str(i)) #random position cmds.move(random.randrange(-9, 9), random.randrange(-9, 9), random.randrange(-9, 9)) #random orientation cmds.rotate(random.randrange(0, 350), random.randrange(0, 350), random.randrange(0, 350)) #sets the start and end position for movement cmds.setKeyframe( 'h2o' + str(i), at='translate' + plane, v=float(cmds.getAttr('h2o' + str(i) + '.translate' + plane)), t=1) cmds.setKeyframe('h2o' + str(i), at='translate' + plane, v=5, t=240) plane = random.choice(xyz) #Selects all the h2o molecules cmds.select("h2o", add=True) for i in range(1, molecules): cmds.select("h2o" + str(i)) #Creates a new animation layer called vibrate and adds all the h2o molecules to it. cmds.animLayer('vibrate', aso=True) #Sets oscillation for original molecule cmds.setKeyframe('h2o', at='translateZ', v=float(cmds.getAttr('h2o.translateZ')), t=1) cmds.setKeyframe('h2o', at='translateZ', v=float(cmds.getAttr('h2o.translateZ')) + .2, t=2) #cmds.selectKey('h2o', t=(1,2), at="translateZ") cmds.selectKey('h2o', at='translateZ') cmds.setInfinity(pri='oscillate', poi='oscillate') #Sets oscillation for all other molecules for i in range(1, molecules): cmds.setKeyframe('h2o' + str(i), at='translateZ', v=float( cmds.getAttr('h2o' + str(i) + '.translateZ')), t=1) cmds.setKeyframe( 'h2o' + str(i), at='translateZ', v=float(cmds.getAttr('h2o' + str(i) + '.translateZ')) + .2, t=2) #cmds.selectKey('h2o'+str(i), t=(1,2), at="translateZ") cmds.selectKey('h2o' + str(i), at="translateZ") cmds.setInfinity(pri='oscillate', poi='oscillate')
def _handleExampleButton(self): """ This callback creates a polygonal cylinder in the Maya scene. """ random.seed(1234) #check sphereList = cmds.ls('hydrogen1','hydrogen2', 'oxygen','H2O') if len(sphereList)>0: cmds.delete(sphereList) #create 2 hydrogen and oxygen h1 = cmds.polySphere(r=12.0, name='hydrogen1') h2 = cmds.polySphere(r=12.0, name='hydrogen2') oxygen = cmds.polySphere(r=15.0, name='oxygen') #move cmds.move(-15,0,0,h1) cmds.move(15,0,0,h2) cmds.xform(h1, piv=[0,0,0],ws=True) cmds.xform(h2, piv=[0,0,0],ws=True) cmds.rotate(0,'75',0,h1) #group hydrogen and oxygen together H2O = cmds.group(empty=True, name='H2O#') cmds.parent('hydrogen1','hydrogen2','oxygen','H2O1') #add color def createMaterial( name, color, type ): cmds.sets( renderable=True, noSurfaceShader=True, empty=True, name=name + 'SG' ) cmds.shadingNode( type, asShader=True, name=name ) cmds.setAttr( name+'.color', color[0], color[1], color[2], type='double3') cmds.connectAttr(name+'.outColor', name+'SG.surfaceShader') def assignMaterial (name, object): cmds.sets(object, edit=True, forceElement=name+'SG') def assignNewMaterial( name, color, type, object): createMaterial (name, color, type) assignMaterial (name, object) #H is white and O is red assignNewMaterial('Red', (1,0,0), 'lambert', 'oxygen'); assignNewMaterial('White',(1,1,1),'lambert', 'hydrogen1'); assignMaterial('White', 'hydrogen2'); #key frame def keyFullRotation( pObjectName, pStartTime, pEndTime, pTargetAttribute,pValueStart, pvalueEnd ): keyt = (pStartTime[0], pStartTime[0]) cmds.cutKey( pObjectName, time=(keyt, keyt), attribute=pTargetAttribute ) cmds.setKeyframe( pObjectName, time=pStartTime, attribute=pTargetAttribute, value=pValueStart ) cmds.setKeyframe( pObjectName, time=pEndTime, attribute=pTargetAttribute, value=pvalueEnd ) #cmds.selectKey( pObjectName, time=(pStartTime, [pEndTime]), attribute=pTargetAttribute, keyframe=True ) #duplicate H2O for i in range(1,52): cmds.duplicate(H2O) #get random coord x = random.uniform(-200,200) y = random.uniform(0,300) z = random.uniform(-200,200) cmds.move(x,y,z, H2O) xRot = random.uniform(0,360) yRot = random.uniform(0,360) zRot = random.uniform(0,360) cmds.rotate(xRot,yRot,zRot,H2O) startTime = cmds.playbackOptions(minTime=1 ) endTime = cmds.playbackOptions( maxTime=30 ) h2o = "H2O"+str(i) for y in range(3): coordsX = cmds.getAttr( h2o+'.translateX' ) coordsY = cmds.getAttr( h2o+'.translateY' ) coordsZ = cmds.getAttr( h2o+'.translateZ' ) ranStartX = int(random.uniform(0,15)) ranStartY = int(random.uniform(0,15)) ranStartZ = int(random.uniform(0,15)) ranEndX = int(random.uniform(15,30)) ranEndY = int(random.uniform(15,30)) ranEndZ = int(random.uniform(15,30)) x = random.uniform(coordsX-50,coordsX+50) y = random.uniform(coordsY,coordsY+50) z = random.uniform(coordsZ-50,coordsZ+50) #print x,y,z keyFullRotation( h2o, ranStartZ, 15, 'translateZ',coordsZ,z) keyFullRotation( h2o, ranStartX, 15, 'translateX', coordsX,x) keyFullRotation( h2o, ranStartY, 15, 'translateY', coordsY,y) keyFullRotation( h2o, 15, ranEndZ, 'translateZ',z,coordsZ) keyFullRotation( h2o, 15, ranEndX, 'translateX', x,coordsX) keyFullRotation( h2o, 15, ranEndY, 'translateY', y,coordsY) RcoordsX = cmds.getAttr( h2o+'.rotateX' ) RcoordsY = cmds.getAttr( h2o+'.rotateY' ) RcoordsZ = cmds.getAttr( h2o+'.rotateZ' ) xRot = random.uniform(0,360) yRot = random.uniform(0,360) zRot = random.uniform(0,360) keyFullRotation( h2o, ranStartZ, 15, 'rotateZ',RcoordsZ,zRot) keyFullRotation( h2o, ranStartX, 15, 'rotateX', RcoordsX,xRot) keyFullRotation( h2o, ranStartY, 15, 'rotateY', RcoordsY,zRot) keyFullRotation( h2o, 15, ranEndZ, 'rotateZ',zRot,RcoordsZ) keyFullRotation( h2o, 15, ranEndX, 'rotateX', xRot,RcoordsX) keyFullRotation( h2o, 15, ranEndY, 'rotateY', zRot,RcoordsY) print 'done' cmds.delete('H2O52')
def doFourth(): filePath4 = "C:/Users/Kyle/Downloads/tie fighter.mb" filePath = "C:/Users/Kyle/Downloads/x_wing/x_wing.mb" cmds.file(filePath, type='mayaBinary', ra=True, mergeNamespacesOnClash=False, namespace='x_wing', i=True ) cmds.file(filePath4, type='mayaBinary', ra=True, mergeNamespacesOnClash=False, namespace='tie fighter', i=True ) cmds.file(filePath4, type='mayaBinary', ra=True, mergeNamespacesOnClash=False, namespace='tie fighter', i=True ) cmds.file(filePath4, type='mayaBinary', ra=True, mergeNamespacesOnClash=False, namespace='tie fighter', i=True ) cmds.select('x_wing:polySurface3') cmds.scale(.15,.15,.15) cmds.move(0,4,15) cmds.setKeyframe(time=1) cmds.move(0,4,11.7) cmds.rotate(0,-18.6,0) cmds.setKeyframe(time=30) cmds.move(6.667, 4.803,7.37) cmds.rotate(0,36,0) cmds.setKeyframe(time=60) cmds.move(-2.127, 6.86,-5.277) cmds.rotate(26.244,36,0) cmds.setKeyframe(time=120) cmds.select('tie_fighter:Tie_Droid:polySurface9') cmds.move(2,6,5) cmds.rotate(0,180,0) cmds.setKeyframe(time=1) cmds.move(5,6,1.415) cmds.rotate(0,156.849,0) cmds.setKeyframe(time=30) cmds.move(2.309,8.410,-1.272) cmds.rotate(0,214,0) cmds.setKeyframe(time=60) cmds.move(-7.6,8.410,-15.8) cmds.rotate(15,211,-27) cmds.setKeyframe(time=120) cmds.select('tie_fighter1:Tie_Droid:polySurface9') cmds.move(0,4,5) cmds.rotate(0,180,0) cmds.setKeyframe(time=1) cmds.move(3.6,4,1.49) cmds.rotate(0,153.924,0) cmds.setKeyframe(time=30) cmds.move(.64,6.118,-.19) cmds.rotate(0,212.91,0) cmds.setKeyframe(time=60) cmds.move(-9.9,6.118,-14.19) cmds.rotate(14.932,209.673,-28.310) cmds.setKeyframe(time=120) cmds.select('tie_fighter2:Tie_Droid:polySurface9') cmds.move(4,4,5) cmds.rotate(0,180,0) cmds.setKeyframe(time=1) cmds.move(7.45,4,1) cmds.rotate(0,159.3,0) cmds.setKeyframe(time=30) cmds.move(4,5.92,-2.743) cmds.rotate(0,222.231,0) cmds.setKeyframe(time=60) cmds.move(-6.65,5.92,-17.742) cmds.rotate(8,219,-19.8) cmds.setKeyframe(time=120)
def _handleExampleButton(self): """ This callback creates a polygonal cylinder in the Maya scene. """ random.seed(1234) #check sphereList = cmds.ls('hydrogen1', 'hydrogen2', 'oxygen', 'H2O') if len(sphereList) > 0: cmds.delete(sphereList) #create 2 hydrogen and oxygen h1 = cmds.polySphere(r=12.0, name='hydrogen1') h2 = cmds.polySphere(r=12.0, name='hydrogen2') oxygen = cmds.polySphere(r=15.0, name='oxygen') #move cmds.move(-15, 0, 0, h1) cmds.move(15, 0, 0, h2) cmds.xform(h1, piv=[0, 0, 0], ws=True) cmds.xform(h2, piv=[0, 0, 0], ws=True) cmds.rotate(0, '75', 0, h1) #group hydrogen and oxygen together H2O = cmds.group(empty=True, name='H2O#') cmds.parent('hydrogen1', 'hydrogen2', 'oxygen', 'H2O1') #add color def createMaterial(name, color, type): cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=name + 'SG') cmds.shadingNode(type, asShader=True, name=name) cmds.setAttr(name + '.color', color[0], color[1], color[2], type='double3') cmds.connectAttr(name + '.outColor', name + 'SG.surfaceShader') def assignMaterial(name, object): cmds.sets(object, edit=True, forceElement=name + 'SG') def assignNewMaterial(name, color, type, object): createMaterial(name, color, type) assignMaterial(name, object) #H is white and O is red assignNewMaterial('Red', (1, 0, 0), 'lambert', 'oxygen') assignNewMaterial('White', (1, 1, 1), 'lambert', 'hydrogen1') assignMaterial('White', 'hydrogen2') #key frame def keyFullRotation(pObjectName, pStartTime, pEndTime, pTargetAttribute, pValueStart, pvalueEnd): keyt = (pStartTime[0], pStartTime[0]) cmds.cutKey(pObjectName, time=(keyt, keyt), attribute=pTargetAttribute) cmds.setKeyframe(pObjectName, time=pStartTime, attribute=pTargetAttribute, value=pValueStart) cmds.setKeyframe(pObjectName, time=pEndTime, attribute=pTargetAttribute, value=pvalueEnd) #cmds.selectKey( pObjectName, time=(pStartTime, [pEndTime]), attribute=pTargetAttribute, keyframe=True ) #duplicate H2O for i in range(1, 52): cmds.duplicate(H2O) #get random coord x = random.uniform(-200, 200) y = random.uniform(0, 300) z = random.uniform(-200, 200) cmds.move(x, y, z, H2O) xRot = random.uniform(0, 360) yRot = random.uniform(0, 360) zRot = random.uniform(0, 360) cmds.rotate(xRot, yRot, zRot, H2O) startTime = cmds.playbackOptions(minTime=1) endTime = cmds.playbackOptions(maxTime=30) h2o = "H2O" + str(i) for y in range(3): coordsX = cmds.getAttr(h2o + '.translateX') coordsY = cmds.getAttr(h2o + '.translateY') coordsZ = cmds.getAttr(h2o + '.translateZ') ranStartX = int(random.uniform(0, 15)) ranStartY = int(random.uniform(0, 15)) ranStartZ = int(random.uniform(0, 15)) ranEndX = int(random.uniform(15, 30)) ranEndY = int(random.uniform(15, 30)) ranEndZ = int(random.uniform(15, 30)) x = random.uniform(coordsX - 50, coordsX + 50) y = random.uniform(coordsY, coordsY + 50) z = random.uniform(coordsZ - 50, coordsZ + 50) #print x,y,z keyFullRotation(h2o, ranStartZ, 15, 'translateZ', coordsZ, z) keyFullRotation(h2o, ranStartX, 15, 'translateX', coordsX, x) keyFullRotation(h2o, ranStartY, 15, 'translateY', coordsY, y) keyFullRotation(h2o, 15, ranEndZ, 'translateZ', z, coordsZ) keyFullRotation(h2o, 15, ranEndX, 'translateX', x, coordsX) keyFullRotation(h2o, 15, ranEndY, 'translateY', y, coordsY) RcoordsX = cmds.getAttr(h2o + '.rotateX') RcoordsY = cmds.getAttr(h2o + '.rotateY') RcoordsZ = cmds.getAttr(h2o + '.rotateZ') xRot = random.uniform(0, 360) yRot = random.uniform(0, 360) zRot = random.uniform(0, 360) keyFullRotation(h2o, ranStartZ, 15, 'rotateZ', RcoordsZ, zRot) keyFullRotation(h2o, ranStartX, 15, 'rotateX', RcoordsX, xRot) keyFullRotation(h2o, ranStartY, 15, 'rotateY', RcoordsY, zRot) keyFullRotation(h2o, 15, ranEndZ, 'rotateZ', zRot, RcoordsZ) keyFullRotation(h2o, 15, ranEndX, 'rotateX', xRot, RcoordsX) keyFullRotation(h2o, 15, ranEndY, 'rotateY', zRot, RcoordsY) print 'done' cmds.delete('H2O52')
def createLight(self, name, translate, rotate): cmds.spotLight(n=name) cmds.xform(name, t=[translate[0], translate[1], translate[2]]) cmds.rotate(rotate[0], rotate[1], rotate[2], name) cmds.setAttr(self.getShapeString(name) + '.intensity', 1.5) cmds.setAttr(self.getShapeString(name) + '.penumbraAngle', 5.)