def moveAlongNormal( self, tRange, useDnoise): mc.move( self.translate[0], self.translate[1], self.translate[2], self.name, ws=1, absolute=1) if useDnoise: mc.moveVertexAlongDirection( self.name, n=self.dnoiseTx * tRange) else: mc.moveVertexAlongDirection( self.name, n=self.tx * tRange)
def move(): selection = mc.ls(sl=True, fl=True) distance = input() distance = str(distance) dist_list = [] for i in selection: dist_list.append(distance) mc.moveVertexAlongDirection(selection, n=dist_list)
def orient_mid_joint(self, obj_start, obj_mid, obj_end): #make sure that the knee is oriented properly cmds.parent(obj_end, w = True) cmds.parent(obj_mid, w = True) locator = cmds.spaceLocator(n = 'orient')[0] first_obj = cmds.xform(obj_start, q=True, ws=True, t=True) second_obj = cmds.xform(obj_mid, q=True, ws=True, t=True) third_obj = cmds.xform(obj_end, q=True, ws=True, t=True) # make pole vector to be along direction of joints plane = cmds.polyPlane(sx=1, sy=1) cmds.delete(plane[0] + '.vtx[3]') cmds.xform(plane[0] + '.vtx[0]',ws = True, t = (first_obj[0], first_obj[1], first_obj[2])) cmds.xform(plane[0] + '.vtx[1]',ws = True, t = (second_obj[0], second_obj[1], second_obj[2])) cmds.xform(plane[0] + '.vtx[2]',ws = True, t = (third_obj[0], third_obj[1], third_obj[2])) cmds.moveVertexAlongDirection(plane[0] + '.vtx[1]', v = 10) vertex = cmds.xform(plane[0] + '.vtx[1]', q=True, ws=True, t=True) cmds.xform(locator, ws=True, t=(vertex[0], vertex[1], vertex[2])) cmds.setAttr(obj_mid + '.jointOrientX', 0) cmds.setAttr(obj_mid + '.jointOrientY', 0) cmds.setAttr(obj_mid + '.jointOrientZ', 0) aim = cmds.aimConstraint(obj_end, obj_mid, aim=[1.0, 0.0, 0.0], upVector=[0.0, 1.0, 0.0], wut='object', worldUpObject='orient') cmds.delete(aim) mid_joint_rotation = cmds.xform(obj_mid, ws = True, q = True, ro = True) cmds.setAttr(obj_mid + '.jointOrientX', mid_joint_rotation[0]) cmds.setAttr(obj_mid + '.jointOrientY', mid_joint_rotation[1]) cmds.setAttr(obj_mid + '.jointOrientZ', mid_joint_rotation[2]) cmds.setAttr(obj_mid + '.rx', 0) cmds.setAttr(obj_mid + '.ry', 0) cmds.setAttr(obj_mid + '.rz', 0) #parent shin back cmds.parent(obj_mid, obj_start) cmds.parent(obj_end, obj_mid) #delete up object cmds.delete(locator) cmds.delete(plane)
def planeToPVLocation( _sel, _zDistance, *args): #quick broken FK/IK SwitchBlend Creator zMV = -(_zDistance) jL = _sel #set up the pole vector by creating a triangle greo and snapping the verts to the joints in the ik chain and then grabbing the one for the elbow or knee and moveing it in Z axis #then moving the traingle Ctl to the space in component and I think grabbing the rotation off the middle vertex rotate pivot or something and putting that on to the Ctl #then make it the pole vector constrainor of the ik handle #lets make a plane and merge two of the verts the 3rd and 4th and then make a short loop to snap them to the joints pN = 'pv_plane' cmds.polyPlane(n = pN, sx=1,sy=1, w=1, h=1) cmds.polyMergeVertex('pv_plane.vtx[2]', 'pv_plane.vtx[3]', d = 1.5) #I wanted to come up with a more clever way of reading the names for the Vertex and matching them up with the number in the array they should correspond to #but for time Im making it less dynamic and more just getting this done because this is a specific part of the tool I can hard code out a lil #get the locations for the joints jL1 = cmds.xform( jL[0], q = 1, ws = 1, t = 1) jL2 = cmds.xform( jL[1], q = 1, ws = 1, t = 1) jL3 = cmds.xform( jL[2], q = 1, ws = 1, t = 1) #move the vertex to the locations cmds.xform('pv_plane.vtx[0]', ws = True, t = jL1) cmds.xform('pv_plane.vtx[1]', ws = True, t = jL3) #this is for the merged vertex or the point and it should go on the jL2 because thats the knee number cmds.xform('pv_plane.vtx[2]', ws = True, t = jL2) cmds.select(cl=True) #now move the pv vertex it in the v axis in its normals cmds.moveVertexAlongDirection( "pv_plane.vtx[2]", v= zMV) #return the target vertex and the plane name to allow to delete the plane later returns = ['pv_plane.vtx[2]','pv_plane'] return returns
def randomiseVertices(self): """ Randomise vertices. """ # Get options fractional = mc.radioButtonGrp("offsetType2", q=1, select=True) if fractional: factor = mc.floatSliderGrp("randomness", q=1, value=True) if factor > 1: factor = 1 offsetSpace = mc.radioButtonGrp("offsetSpace", q=1, select=True) min_ = mc.floatFieldGrp("minMax", q=1, value1=True) max_ = mc.floatFieldGrp("minMax", q=1, value2=True) enX = mc.checkBoxGrp("axes", q=1, value1=True) enY = mc.checkBoxGrp("axes", q=1, value2=True) enZ = mc.checkBoxGrp("axes", q=1, value3=True) # Generate random seed for repeatable results if mc.checkBox("useSeed", q=1, value=True): seed = mc.intSliderGrp("seed", q=1, value=True) random.seed(seed) # Filter selection so that only polygon vertices, CVs or lattice points are selected if offsetSpace == 3: vtxLs = mc.filterExpand(expand=True, selectionMask=(28, 31)) else: vtxLs = mc.filterExpand(expand=True, selectionMask=(28, 31, 46)) # Check selection if vtxLs == None: if offsetSpace == 3: mc.warning("Randomise in normal space only works on polygon vertices or CVs.") else: mc.warning("Randomise only works on polygon vertices, CVs or lattice points.") return False # Check offset values are nonzero elif (min_ == 0) and (max_ == 0): mc.warning("No offset value specified. Operation will have no effect.") return False # Check at least one axis checkbox is enabled elif enX+enY+enZ == 0: mc.warning("No offset axes enabled. Operation will have no effect.") return False # Perform offset/randomise operation # Initialise progress bar and start clock mc.progressBar(self.gMainProgressBar, e=1, beginProgress=True, isInterruptable=True, maxValue=len(vtxLs)) # Initialise progress bar startTime = time.time() #mc.waitCursor(state=True) for vtx in vtxLs: statusMsg = "Offsetting vertices..." # Progress bar if mc.progressBar(self.gMainProgressBar, q=1, isCancelled=True): # Cancel operation if esc key pressed mc.progressBar(self.gMainProgressBar, e=1, endProgress=True) # Complete progress bar mc.warning("Operation cancelled when partially completed. You may wish to undo.") return False else: mc.progressBar(self.gMainProgressBar, e=1, step=1, status=statusMsg) # Increment progress bar # Generate random x,y,z values and offset vertex xrand = yrand = zrand = 0 if fractional: f = gps.fractionalOffset(vtx, offsetSpace)/2 if enX: xrand = random.uniform(-f*factor, f*factor) if enY: yrand = random.uniform(-f*factor, f*factor) if enZ: zrand = random.uniform(-f*factor, f*factor) else: if enX: xrand = random.uniform(min_, max_) if enY: yrand = random.uniform(min_, max_) if enZ: zrand = random.uniform(min_, max_) if offsetSpace == 1: # World space mc.move(xrand, yrand, zrand, vtx, relative=True, worldSpace=True) elif offsetSpace == 2: # Object space mc.move(xrand, yrand, zrand, vtx, relative=True, objectSpace=True) elif offsetSpace == 3: # Normal (u,v,n) mc.moveVertexAlongDirection(vtx, n=zrand) # move along normal direction first mc.moveVertexAlongDirection(vtx, u=xrand) mc.moveVertexAlongDirection(vtx, v=yrand) # Complete progress bar and print completion message mc.progressBar(self.gMainProgressBar, e=1, endProgress=True) # Complete progress bar totalTime = time.time() - startTime; #mc.waitCursor(state=False) print "Offset %d vertices in %f seconds.\n" %(len(vtxLs), totalTime) return True
def IKFK(*args): #Mirror Joints cmds.select ( 'L_RF_Heel', 'L_RF_Fingers', 'L_RF_Ankle', 'L_Leg_JJ', 'L_Knee_JJ', 'L_Ankle_JJ', 'L_Ball_JJ', 'L_Fingers_JJ','L_RF_Ball') HideAxis = cmds.ls( selection=True ) for jnt in HideAxis: cmds.setAttr (jnt + ".displayLocalAxis", 0) cmds.duplicate ("L_Leg_JJ", rc = True) cmds.duplicate ("L_Leg_JJ", rc = True) cmds.rename ("L_Leg_JJ1", "L_Leg_FK") cmds.rename ("L_Knee_JJ1", "L_Knee_FK") cmds.rename ("L_Ankle_JJ1", "L_Ankle_FK") cmds.rename ("L_Ball_JJ1", "L_Ball_FK") cmds.rename ("L_Fingers_JJ1", "L_Fingers_FK") cmds.rename ("L_Leg_JJ2", "L_Leg_IK") cmds.rename ("L_Knee_JJ2", "L_Knee_IK") cmds.rename ("L_Ankle_JJ2", "L_Ankle_IK") cmds.rename ("L_Ball_JJ2", "L_Ball_IK") cmds.rename ("L_Fingers_JJ2", "L_Fingers_IK") cmds.mirrorJoint ('L_Leg_JJ',mirrorYZ = True, mirrorBehavior = True, searchReplace=('L_', 'R_')) cmds.mirrorJoint ('L_RF_Heel',mirrorYZ = True, mirrorBehavior = True, searchReplace=('L_', 'R_')) cmds.mirrorJoint ('L_Leg_FK',mirrorYZ = True, mirrorBehavior = True, searchReplace=('L_', 'R_')) cmds.mirrorJoint ('L_Leg_IK',mirrorYZ = True, mirrorBehavior = True, searchReplace=('L_', 'R_')) #IK GlobalMult = cmds.floatSliderGrp (RadioControlador, q = True, value = 2) radio = GlobalMult cmds.ikHandle (n="L_LegIKrp", sj="L_Leg_IK", ee= "L_Ankle_IK", sol='ikRPsolver') cmds.ikHandle (n="L_AnkleIKsch", sj="L_Ankle_IK", ee= "L_Ball_IK", sol = 'ikSCsolver') cmds.ikHandle (n="L_BallIKsch", sj="L_Ball_IK", ee= "L_Fingers_IK", sol = 'ikSCsolver') cmds.ikHandle (n="R_LegIKrp", sj="R_Leg_IK", ee= "R_Ankle_IK", sol='ikRPsolver') cmds.ikHandle (n="R_AnkleIKsch", sj="R_Ankle_IK", ee= "R_Ball_IK", sol = 'ikSCsolver') cmds.ikHandle (n="R_BallIKsch", sj="R_Ball_IK", ee= "R_Fingers_IK", sol = 'ikSCsolver') cmds.curve(n="L_LegIK_CC" , d=1, p=[(1, 1, 1),(1,1,-1) ,(1, -1, -1) ,(1, -1, 1) ,(-1, -1, 1) ,(-1, 1, 1) ,(1, 1, 1) ,(1, -1, 1) ,(-1, -1, 1) ,(-1, -1, -1) ,(-1, 1, -1) ,(1, 1, -1) ,(1, -1, -1) ,(-1, -1, -1) ,(-1, 1, -1) ,(-1, 1, 1)], k = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) cmds.group ("L_LegIK_CC", n= "L_LegIK_GRP") cmds.pointConstraint ("L_Ball_JJ", "L_LegIK_GRP") cmds.delete ("L_LegIK_GRP_pointConstraint1") cmds.orientConstraint ("L_Ball_JJ", "L_LegIK_GRP") cmds.delete ("L_LegIK_GRP_orientConstraint1") cmds.duplicate ('L_LegIK_CC',n='R_LegIK_CC') cmds.group ("R_LegIK_CC", n= "R_LegIK_GRP") cmds.parent ('R_LegIK_GRP', w = True) cmds.group(n = 'R_LegIK_GRP2', em = True) cmds.parent ('R_LegIK_GRP','R_LegIK_GRP2') cmds.setAttr('R_LegIK_GRP2.scaleX',-1) cmds.scale(GlobalMult,GlobalMult,GlobalMult,'L_LegIK_GRP', r = True) cmds.scale(GlobalMult,GlobalMult,GlobalMult,'R_LegIK_GRP', r = True) cmds.setAttr ("L_LegIK_CC.overrideEnabled", 1) cmds.setAttr ("R_LegIK_CC.overrideEnabled", 1) cmds.setAttr ("L_LegIK_CC.overrideColor", 6) cmds.setAttr ("R_LegIK_CC.overrideColor", 13) #FK GlobalMult = cmds.floatSliderGrp (RadioControlador, q = True, value = 2) radio = GlobalMult cmds.select ( 'L_Leg_FK', 'L_Knee_FK', 'L_Ankle_FK', 'R_Leg_FK', 'R_Knee_FK' ,'R_Ankle_FK','L_Ball_FK','R_Ball_FK') FKCircle = cmds.ls( selection=True ) for FK in FKCircle: cmds.circle (n= FK + str ('_CC'), r= radio, nr=(0, 1, 0)) cmds.group (n= FK + str ('_CC') + str ('GRP')) cmds.pointConstraint (FK, FK + str ('_CC') + str ('GRP'), mo= False) cmds.orientConstraint (FK, FK + str ('_CC') + str ('GRP'), mo= False) cmds.delete (FK + str ('_CC') + str ('GRP')+str('_pointConstraint1')) cmds.delete (FK + str ('_CC') + str ('GRP')+str('_orientConstraint1')) cmds.orientConstraint (FK + str ('_CC'),FK , mo= True) cmds.pointConstraint (FK + str ('_CC'),FK , mo= True) cmds.setAttr (FK + str ('_CC')+ str ('Shape.overrideEnabled'), 1) cmds.setAttr (FK + str ('_CC')+ str ('Shape.overrideColor'), 6) cmds.setAttr ('R_Leg_FK_CCShape.overrideColor',13) cmds.setAttr ('R_Knee_FK_CCShape.overrideColor',13) cmds.setAttr ('R_Ankle_FK_CCShape.overrideColor',13) cmds.setAttr ('R_Ball_FK_CCShape.overrideColor',13) cmds.parent ('L_Knee_FK_CCGRP','L_Leg_FK_CC') cmds.parent ('L_Ankle_FK_CCGRP','L_Knee_FK_CC') cmds.parent ('L_Ball_FK_CCGRP','L_Ankle_FK_CC') cmds.parent ('R_Knee_FK_CCGRP','R_Leg_FK_CC') cmds.parent ('R_Ankle_FK_CCGRP','R_Knee_FK_CC') cmds.parent ('R_Ball_FK_CCGRP','R_Ankle_FK_CC') #ReverseFoot cmds.parent ('L_RF_Heel','L_LegIK_CC') cmds.parent ('L_LegIKrp','L_RF_Ankle') cmds.parent ('L_AnkleIKsch','L_RF_Ball') cmds.parent ('L_BallIKsch','L_RF_Fingers') cmds.parent ('R_RF_Heel','R_LegIK_CC') cmds.parent ('R_LegIKrp','R_RF_Ankle') cmds.parent ('R_AnkleIKsch','R_RF_Ball') cmds.parent ('R_BallIKsch','R_RF_Fingers') cmds.addAttr ('L_LegIK_CC', ln= 'RollHeel', at= 'double' , dv = 0 ) cmds.setAttr ('L_LegIK_CC.RollHeel', k = True) cmds.connectAttr ('L_LegIK_CC.RollHeel','L_RF_Heel.rotateZ') cmds.addAttr ('L_LegIK_CC', ln= 'TwistHeel', at= 'double' , dv = 0 ) cmds.setAttr ('L_LegIK_CC.TwistHeel', k = True) cmds.connectAttr ('L_LegIK_CC.TwistHeel','L_RF_Heel.rotateY') cmds.addAttr ('L_LegIK_CC', ln= 'RollBall', at= 'double' , dv = 0 ) cmds.setAttr ('L_LegIK_CC.RollBall', k = True) cmds.connectAttr ('L_LegIK_CC.RollBall','L_RF_Ball.rotateZ') cmds.addAttr ('L_LegIK_CC', ln= 'TwistBall', at= 'double' , dv = 0 ) cmds.setAttr ('L_LegIK_CC.TwistBall', k = True) cmds.connectAttr ('L_LegIK_CC.TwistBall','L_RF_Ball.rotateY') cmds.addAttr ('L_LegIK_CC', ln= 'RollToe', at= 'double' , dv = 0 ) cmds.setAttr ('L_LegIK_CC.RollToe', k = True) cmds.connectAttr ('L_LegIK_CC.RollToe','L_RF_Fingers.rotateZ') cmds.addAttr ('R_LegIK_CC', ln= 'RollHeel', at= 'double' , dv = 0 ) cmds.setAttr ('R_LegIK_CC.RollHeel', k = True) cmds.connectAttr ('R_LegIK_CC.RollHeel','R_RF_Heel.rotateZ') cmds.addAttr ('R_LegIK_CC', ln= 'TwistHeel', at= 'double' , dv = 0 ) cmds.setAttr ('R_LegIK_CC.TwistHeel', k = True) cmds.connectAttr ('R_LegIK_CC.TwistHeel','R_RF_Heel.rotateY') cmds.addAttr ('R_LegIK_CC', ln= 'RollBall', at= 'double' , dv = 0 ) cmds.setAttr ('R_LegIK_CC.RollBall', k = True) cmds.connectAttr ('R_LegIK_CC.RollBall','R_RF_Ball.rotateZ') cmds.addAttr ('R_LegIK_CC', ln= 'TwistBall', at= 'double' , dv = 0 ) cmds.setAttr ('R_LegIK_CC.TwistBall', k = True) cmds.connectAttr ('R_LegIK_CC.TwistBall','R_RF_Ball.rotateY') cmds.addAttr ('R_LegIK_CC', ln= 'RollToe', at= 'double' , dv = 0 ) cmds.setAttr ('R_LegIK_CC.RollToe', k = True) cmds.connectAttr ('R_LegIK_CC.RollToe','R_RF_Fingers.rotateZ') #Pole Vector cmds.polyPlane (n="LLeg_PV_Plane", sh = 1, sw= 1) cmds.delete ("LLeg_PV_Plane.vtx[3]") cmds.cluster ("LLeg_PV_Plane.vtx[0]", n= "LegCluster") cmds.cluster ("LLeg_PV_Plane.vtx[1]" ,n= "KneeCluster") cmds.cluster ("LLeg_PV_Plane.vtx[2]", n= "AnkleCluster") cmds.pointConstraint ("L_Leg_JJ","LegClusterHandle") cmds.pointConstraint ("L_Knee_JJ","KneeClusterHandle") cmds.pointConstraint ("L_Ankle_JJ","AnkleClusterHandle") P01X = cmds.getAttr("L_Leg_JJ.translateX") P01Y = cmds.getAttr("L_Leg_JJ.translateY") P01Z = cmds.getAttr("L_Leg_JJ.translateZ") P02X = cmds.getAttr("L_Knee_JJ.translateX") + P01X P02Y = cmds.getAttr("L_Knee_JJ.translateY") + P01Y P02Z = cmds.getAttr("L_Knee_JJ.translateZ") + P01Z P03X = cmds.getAttr("L_Ankle_JJ.translateX") + P02X P03Y = cmds.getAttr("L_Ankle_JJ.translateY") + P02Y P03Z = cmds.getAttr("L_Ankle_JJ.translateZ") + P02Z P04X = cmds.getAttr("L_Fingers_JJ.translateX") + P03X P04Y = cmds.getAttr("L_Fingers_JJ.translateY") + P03Y P04Z = cmds.getAttr("L_Fingers_JJ.translateZ") + P03Z cmds.moveVertexAlongDirection ("LLeg_PV_Plane.vtx[1]", v= P02X+(P02X/2)) PVposition = cmds.pointPosition ("LLeg_PV_Plane.vtx[1]") cmds.circle (n="LLeg_PV01",nr=(0, 0, 1),r = radio/2) cmds.circle (n="LLeg_PV02",nr=(0, 1, 0),r = radio/2) cmds.circle (n="LLeg_PV03",nr=(1, 0, 0),r = radio/2) cmds.parent ("LLeg_PV02Shape","LLeg_PV01",r= True, s= True) cmds.parent ("LLeg_PV03Shape","LLeg_PV01",r= True, s= True) cmds.delete ("LLeg_PV02","LLeg_PV03") cmds.select ("LLeg_PV01") cmds.group (n= "LLeg_PV01_GRP", r= True) cmds.xform (t=PVposition) cmds.duplicate ("LLeg_PV01_GRP", n= "RLeg_PV_GRP") cmds.rename ("RLeg_PV_GRP|LLeg_PV01", "RLeg_PV01") cmds.rename ("LLeg_PV01_GRP", "LLeg_PV0_GRP") cmds.move(0, 0, 0, ".scalePivot",".rotatePivot", absolute=True) cmds.setAttr ("RLeg_PV_GRP.scaleX", -1) cmds.select ("LLeg_PV01","L_LegIKrp") cmds.PoleVectorConstraint () cmds.select ("RLeg_PV01","R_LegIKrp") cmds.PoleVectorConstraint () cmds.setAttr("RLeg_PV01Shape.overrideEnabled", True ) cmds.setAttr("RLeg_PV01Shape.overrideColor", 13 ) cmds.setAttr("RLeg_PV02Shape1.overrideEnabled", True ) cmds.setAttr("RLeg_PV02Shape1.overrideColor", 13 ) cmds.setAttr("RLeg_PV03Shape1.overrideEnabled", True ) cmds.setAttr("RLeg_PV03Shape1.overrideColor", 13 ) cmds.setAttr("LLeg_PV01Shape.overrideEnabled", True ) cmds.setAttr("LLeg_PV01Shape.overrideColor", 6 ) cmds.setAttr("LLeg_PV02Shape.overrideEnabled", True ) cmds.setAttr("LLeg_PV02Shape.overrideColor", 6 ) cmds.setAttr("LLeg_PV03Shape.overrideEnabled", True ) cmds.setAttr("LLeg_PV03Shape.overrideColor", 6 ) cmds.group ("LLeg_PV_Plane","LegClusterHandle","KneeClusterHandle","AnkleClusterHandle", n= "ExtrasAutoLegs") cmds.setAttr ("ExtrasAutoLegs.visibility", 0) #Switch IK FK if cmds.objExists ("IK_FK_CC"): print "CurveControl IKFK Exists" else: if cmds.objExists('makeTextCurves1'): cmds.rename ('makeTextCurves1','makeTextCurves1LOL') Texto = 'IK-FK' Color = 16 Text = cmds.textCurves (n= Texto, t = Texto, o = True) Lista= cmds.listRelatives (Text, ad = True) Shape = Lista[1] cmds.delete ('makeTextCurves1') for Curva in Lista: if cmds.objectType(str(Curva), isType='nurbsCurve'): curvaPapa = cmds.listRelatives(Curva, p = True) curvaAbuelo = cmds.listRelatives(curvaPapa, p = True) DobleCurva = cmds.listRelatives(curvaAbuelo) if len(DobleCurva)==2: LetrasDobles.append (Curva) else: if not Shape == curvaPapa[0]: cmds.makeIdentity (curvaAbuelo, a = True, t = True , r = True) cmds.parent (Curva, Shape, r = True, s = True) #Colores cmds.setAttr (Curva+'.overrideEnabled', 1) cmds.setAttr (Curva+'.overrideColor', Color) cmds.parent (Shape,w=True) cmds.rename(Shape, 'IK_FK_CC') cmds.setAttr ("IK_FK_CC.overrideEnabled", 1) cmds.setAttr ("IK_FK_CC.overrideColor", 16) cmds.setAttr ('IK_FK_CC.rotateX', -90) cmds.xform(cp= True) cmds.setAttr ('IK_FK_CC.scaleX', GlobalMult) cmds.setAttr ('IK_FK_CC.scaleY', GlobalMult) cmds.setAttr ('IK_FK_CC.scaleZ', GlobalMult) cmds.makeIdentity(a=True, t = True, r = True, s=True) cmds.select ("IK_FK_CC") cmds.addAttr (ln= "LeftLegIKFK", min=0, max=1) cmds.setAttr ("IK_FK_CC.LeftLegIKFK", keyable = True) cmds.select ("IK_FK_CC") cmds.addAttr (ln= "RightLegIKFK", min=0, max=1) cmds.setAttr ("IK_FK_CC.RightLegIKFK", keyable = True) cmds.expression (n="L_Leg_Switch", s = "L_Leg_JJ.rotateX = (L_Leg_FK.rotateX* IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.rotateX*(1- IK_FK_CC.LeftLegIKFK)); \nL_Leg_JJ.rotateY = (L_Leg_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Leg_JJ.rotateZ = (L_Leg_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.rotateX = (L_Knee_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.rotateY = (L_Knee_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.rotateZ = (L_Knee_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.rotateX = (L_Ankle_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.rotateY = (L_Ankle_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.rotateZ = (L_Ankle_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.rotateX = (L_Ball_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.rotateY = (L_Ball_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.rotateZ = (L_Ball_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.rotateX = (L_Fingers_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.rotateY = (L_Fingers_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.rotateZ = (L_Fingers_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \n \nL_Leg_JJ.translateX = (L_Leg_FK.translateX* IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.translateX*(1- IK_FK_CC.LeftLegIKFK)); \nL_Leg_JJ.translateY = (L_Leg_FK.translateY*IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Leg_JJ.translateZ = (L_Leg_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( L_Leg_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.translateX = (L_Knee_FK.translateX*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.translateY = (L_Knee_FK.translateY*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Knee_JJ.translateZ = (L_Knee_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( L_Knee_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.translateX = (L_Ankle_FK.translateX*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.translateY = (L_Ankle_FK.translateY*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ankle_JJ.translateZ = (L_Ankle_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( L_Ankle_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.translateX = (L_Ball_FK.translateX*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.translateY = (L_Ball_FK.translateY*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Ball_JJ.translateZ = (L_Ball_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( L_Ball_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.translateX = (L_Fingers_FK.translateX*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.translateY = (L_Fingers_FK.translateY*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nL_Fingers_JJ.translateZ = (L_Fingers_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( L_Fingers_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \n \n \nL_Leg_FK_CC.visibility = IK_FK_CC.LeftLegIKFK; \nL_LegIK_CC.visibility = (1-IK_FK_CC.LeftLegIKFK); \nLLeg_PV01.visibility = (1-IK_FK_CC.LeftLegIKFK);" ) cmds.expression (n="R_Leg_Switch", s = "R_Leg_JJ.rotateX = (R_Leg_FK.rotateX* IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.rotateX*(1- IK_FK_CC.LeftLegIKFK)); \nR_Leg_JJ.rotateY = (R_Leg_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Leg_JJ.rotateZ = (R_Leg_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.rotateX = (R_Knee_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.rotateY = (R_Knee_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.rotateZ = (R_Knee_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.rotateX = (R_Ankle_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.rotateY = (R_Ankle_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.rotateZ = (R_Ankle_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.rotateX = (R_Ball_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.rotateY = (R_Ball_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.rotateZ = (R_Ball_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.rotateX = (R_Fingers_FK.rotateX*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.rotateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.rotateY = (R_Fingers_FK.rotateY*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.rotateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.rotateZ = (R_Fingers_FK.rotateZ*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.rotateZ*(1-IK_FK_CC.LeftLegIKFK)); \n \nR_Leg_JJ.translateX = (R_Leg_FK.translateX* IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.translateX*(1- IK_FK_CC.LeftLegIKFK)); \nR_Leg_JJ.translateY = (R_Leg_FK.translateY*IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Leg_JJ.translateZ = (R_Leg_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( R_Leg_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.translateX = (R_Knee_FK.translateX*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.translateY = (R_Knee_FK.translateY*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Knee_JJ.translateZ = (R_Knee_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( R_Knee_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.translateX = (R_Ankle_FK.translateX*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.translateY = (R_Ankle_FK.translateY*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ankle_JJ.translateZ = (R_Ankle_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( R_Ankle_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.translateX = (R_Ball_FK.translateX*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.translateY = (R_Ball_FK.translateY*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Ball_JJ.translateZ = (R_Ball_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( R_Ball_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.translateX = (R_Fingers_FK.translateX*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.translateX*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.translateY = (R_Fingers_FK.translateY*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.translateY*(1-IK_FK_CC.LeftLegIKFK)); \nR_Fingers_JJ.translateZ = (R_Fingers_FK.translateZ*IK_FK_CC.LeftLegIKFK)+( R_Fingers_IK.translateZ*(1-IK_FK_CC.LeftLegIKFK)); \n \n \nR_Leg_FK_CC.visibility = IK_FK_CC.RightLegIKFK; \nR_LegIK_CC.visibility = (1-IK_FK_CC.RightLegIKFK); \nRLeg_PV01.visibility = (1-IK_FK_CC.RightLegIKFK);" ) # Grouping and Organizing cmds.group ('L_Leg_JJ', 'L_Leg_FK', 'L_Leg_IK ','L_Leg_FK_CCGRP', n = 'L_Leg_Joints') cmds.group ('R_Leg_JJ', 'R_Leg_FK', 'R_Leg_IK ','R_Leg_FK_CCGRP', n = 'R_Leg_Joints') cmds.group ("L_LegIK_GRP", "LLeg_PV0_GRP", n="L_IKLeg_GRP") cmds.group ("R_LegIK_GRP", "RLeg_PV_GRP", n="R_IKLeg_GRP") cmds.group ("L_IKLeg_GRP", "R_IKLeg_GRP",'L_Leg_Joints','R_Leg_Joints',n= "Connect this to the rest of the rig") cmds.group ('ExtrasAutoLegs',"Connect_this_to_the_rest_of_the_rig", n="RdM_AutoLEGS" ) cmds.select ('L_Ball_JJ', 'L_Ankle_JJ', 'L_Knee_JJ', 'L_Leg_JJ','R_Ball_JJ', 'R_Leg_JJ', 'R_Knee_JJ', 'R_Ankle_JJ') cmds.sets (n= 'BindThisToLegs') cmds.delete('R_LegIK_GRP2') #Locking Attr #FK cmds.select ('R_Leg_FK_CC','R_Knee_FK_CC','R_Ankle_FK_CC','R_Ball_FK_CC','L_Leg_FK_CC','L_Knee_FK_CC','L_Ankle_FK_CC','L_Ball_FK_CC') FK = cmds.ls(sl=True) for T in FK: cmds.setAttr(str(T)+'.translateX',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.translateY',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.translateZ',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleX',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleY',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleZ',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.visibility',lock = True, keyable = False, channelBox = False) #IK, Clavicule cmds.select ('L_LegIK_CC', 'R_LegIK_CC') IK = cmds.ls(sl=True) for T in IK: cmds.setAttr(str(T)+'.scaleX',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleY',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleZ',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.visibility',lock = True, keyable = False, channelBox = False) #Pole Vector cmds.select ('LLeg_PV01', 'RLeg_PV01') PV = cmds.ls(sl=True) for T in PV: cmds.setAttr(str(T)+'.rotateX',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.rotateY',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.rotateZ',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleX',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleY',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleZ',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.visibility',lock = True, keyable = False, channelBox = False) print ('Legs DONE')
def IKFK(*args): for X in range (1,jointsNum + 1): cmds.setAttr ("L_arm_" + str(X) + ".displayLocalAxis", 0) cmds.setAttr ("R_arm_" + str(X) + ".displayLocalAxis", 0) cmds.duplicate ("L_arm_2", rc = True) cmds.duplicate ("L_arm_2", rc = True) cmds.rename ("L_arm_5", "L_arm_01_IK") cmds.rename ("L_arm_6", "L_arm_02_IK") cmds.rename ("L_arm_7", "L_arm_03_IK") cmds.rename ("L_arm_8", "L_arm_01_FK") cmds.rename ("L_arm_9", "L_arm_02_FK") cmds.rename ("L_arm_10", "L_arm_03_FK") if cmds.objExists('R_arm_1'): print 'Mirror already aplied' cmds.duplicate ("R_arm_2", rc = True) cmds.duplicate ("R_arm_2", rc = True) cmds.rename ("R_arm_5", "R_arm_01_IK") cmds.rename ("R_arm_6", "R_arm_02_IK") cmds.rename ("R_arm_7", "R_arm_03_IK") cmds.rename ("R_arm_8", "R_arm_01_FK") cmds.rename ("R_arm_9", "R_arm_02_FK") cmds.rename ("R_arm_10", "R_arm_03_FK") else: cmds.select("L_arm_1") cmds.mirrorJoint (mirrorYZ = True, mirrorBehavior = True, searchReplace=('L_', 'R_') ) cmds.ikHandle (n="L_ArmIKrp", sj="L_arm_01_IK", ee= "L_arm_03_IK") cmds.ikHandle (n="R_ArmIKrp", sj="R_arm_01_IK", ee= "R_arm_03_IK") #Controladores ############################ GlobalMult = cmds.floatSliderGrp (RadioControlador, q = True, value = 2) ############################ #Clavicule cmds.circle (r= 3*GlobalMult,nr=(1, 0, 0), n= "L_clavicule_01_CC", ch= 0 ) cmds.group ("L_clavicule_01_CC", n="L_clavicule_01_GRP") cmds.parentConstraint ("L_arm_1", "L_clavicule_01_GRP" ) cmds.delete ("L_clavicule_01_GRP_parentConstraint1" ) cmds.makeIdentity ("L_clavicule_01_CC", apply = True, t = True) cmds.setAttr("L_clavicule_01_CC" + "Shape.overrideEnabled", True ) cmds.setAttr("L_clavicule_01_CC" + "Shape.overrideColor", 6 ) cmds.duplicate ('L_clavicule_01_CC',n= "R_clavicule_01_CC") cmds.group ("R_clavicule_01_CC", n="R_clavicule_01_GRP") cmds.parentConstraint ("R_arm_1", "R_clavicule_01_GRP" ) cmds.delete ("R_clavicule_01_GRP_parentConstraint1" ) cmds.makeIdentity ("R_clavicule_01_CC", apply = True, t = True) cmds.setAttr("R_clavicule_01_CC" + "Shape.overrideEnabled", True ) cmds.setAttr("R_clavicule_01_CC" + "Shape.overrideColor", 13 ) #cmds.orientConstraint ('L_clavicule_01_CC','L_arm_1') #cmds.orientConstraint ('R_clavicule_01_CC','R_arm_1') #FK for P in range (1,jointsNum): cmds.circle (r= 2*GlobalMult ,nr=(1, 0, 0), n= "L_armFK_0" +str(P) + "_CC", ch= 0 ) cmds.group ("L_armFK_0" +str(P) + "_CC", n="L_armFK_0" +str(P) + "_GRP") cmds.parentConstraint ("L_arm_0" +str(P) + "_FK", "L_armFK_0" +str(P) + "_GRP" ) cmds.delete ("L_armFK_0"+str(P)+ "_GRP_parentConstraint1" ) cmds.makeIdentity ("L_armFK_0" +str(P) + "_CC", apply = True, t = True) cmds.setAttr("L_armFK_0" + str(P) + "_CCShape.overrideEnabled", True ) cmds.setAttr("L_armFK_0" + str(P) + "_CCShape.overrideColor", 6 ) cmds.circle (r= 2*GlobalMult ,nr=(1, 0, 0), n= "R_armFK_0" +str(P) + "_CC", ch= 0 ) cmds.group ("R_armFK_0" +str(P) + "_CC", n="R_armFK_0" +str(P) + "_GRP") cmds.parentConstraint ("R_arm_0" +str(P) + "_FK", "R_armFK_0" +str(P) + "_GRP" ) cmds.delete ("R_armFK_0"+str(P)+ "_GRP_parentConstraint1" ) cmds.makeIdentity ("R_armFK_0" +str(P) + "_CC", apply = True, t = True) cmds.setAttr("R_armFK_0" + str(P) + "_CCShape.overrideEnabled", True ) cmds.setAttr("R_armFK_0" + str(P) + "_CCShape.overrideColor", 13 ) cmds.parent ("L_armFK_01_GRP", "L_clavicule_01_CC") cmds.parent ( "L_armFK_02_GRP","L_armFK_01_CC") cmds.parent ( "L_armFK_03_GRP","L_armFK_02_CC") cmds.parent ("R_armFK_01_GRP", "R_clavicule_01_CC") cmds.parent ( "R_armFK_02_GRP","R_armFK_01_CC") cmds.parent ( "R_armFK_03_GRP","R_armFK_02_CC") cmds.parentConstraint ("L_clavicule_01_CC","L_arm_1") cmds.parentConstraint ("L_armFK_01_CC","L_arm_01_FK") cmds.parentConstraint ("L_armFK_02_CC","L_arm_02_FK") cmds.parentConstraint ("L_armFK_03_CC","L_arm_03_FK") cmds.parentConstraint ("R_clavicule_01_CC","R_arm_1") cmds.parentConstraint ("R_armFK_01_CC","R_arm_01_FK") cmds.parentConstraint ("R_armFK_02_CC","R_arm_02_FK") cmds.parentConstraint ("R_armFK_03_CC","R_arm_03_FK") #IK cmds.curve(n="L_armIK_CC" , d=1, p=[(1, 1, 1),(1,1,-1) ,(1, -1, -1) ,(1, -1, 1) ,(-1, -1, 1) ,(-1, 1, 1) ,(1, 1, 1) ,(1, -1, 1) ,(-1, -1, 1) ,(-1, -1, -1) ,(-1, 1, -1) ,(1, 1, -1) ,(1, -1, -1) ,(-1, -1, -1) ,(-1, 1, -1) ,(-1, 1, 1)], k = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) cmds.group ("L_armIK_CC", n= "L_armIK_GRP") cmds.pointConstraint ("L_arm_03_IK", "L_armIK_GRP") cmds.delete ("L_armIK_GRP_pointConstraint1") cmds.orientConstraint ("L_arm_02_IK", "L_armIK_GRP") cmds.delete ("L_armIK_GRP_orientConstraint1") cmds.curve(n="R_armIK_CC" , d=1, p=[(1, 1, 1),(1,1,-1) ,(1, -1, -1) ,(1, -1, 1) ,(-1, -1, 1) ,(-1, 1, 1) ,(1, 1, 1) ,(1, -1, 1) ,(-1, -1, 1) ,(-1, -1, -1) ,(-1, 1, -1) ,(1, 1, -1) ,(1, -1, -1) ,(-1, -1, -1) ,(-1, 1, -1) ,(-1, 1, 1)], k = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) cmds.group ("R_armIK_CC", n= "R_armIK_GRP") cmds.pointConstraint ("R_arm_03_IK", "R_armIK_GRP") cmds.delete ("R_armIK_GRP_pointConstraint1") cmds.orientConstraint ("R_arm_02_IK", "R_armIK_GRP") cmds.delete ("R_armIK_GRP_orientConstraint1") cmds.parent ("L_ArmIKrp", "L_armIK_CC") cmds.parent ("R_ArmIKrp", "R_armIK_CC") cmds.orientConstraint ("L_armIK_CC","L_arm_03_IK", mo= True) cmds.orientConstraint ("R_armIK_CC","R_arm_03_IK", mo= True) cmds.scale(GlobalMult,GlobalMult,GlobalMult,'L_armIK_GRP', r = True) cmds.scale(GlobalMult,GlobalMult,GlobalMult,'R_armIK_GRP', r = True) cmds.setAttr ("L_armIK_CC.overrideEnabled", 1) cmds.setAttr ("R_armIK_CC.overrideEnabled", 1) cmds.setAttr ("L_armIK_CC.overrideColor", 6) cmds.setAttr ("R_armIK_CC.overrideColor", 13) #Pole Vector cmds.polyPlane (n="L_PV_Plane", sh = 1, sw= 1) cmds.delete ("L_PV_Plane.vtx[3]") cmds.cluster ("L_PV_Plane.vtx[0]", n= "ShoulderCluster") cmds.cluster ("L_PV_Plane.vtx[1]" ,n= "ElbowCluster") cmds.cluster ("L_PV_Plane.vtx[2]", n= "WristCluster") cmds.pointConstraint ("L_arm_2","ShoulderClusterHandle") cmds.pointConstraint ("L_arm_3","ElbowClusterHandle") cmds.pointConstraint ("L_arm_4","WristClusterHandle") P01X = cmds.getAttr("L_arm_1.translateX") P01Y = cmds.getAttr("L_arm_1.translateY") P01Z = cmds.getAttr("L_arm_1.translateZ") P02X = cmds.getAttr("L_arm_2.translateX") + P01X P02Y = cmds.getAttr("L_arm_2.translateY") + P01Y P02Z = cmds.getAttr("L_arm_2.translateZ") + P01Z P03X = cmds.getAttr("L_arm_3.translateX") + P02X P03Y = cmds.getAttr("L_arm_3.translateY") + P02Y P03Z = cmds.getAttr("L_arm_3.translateZ") + P02Z P04X = cmds.getAttr("L_arm_4.translateX") + P03X P04Y = cmds.getAttr("L_arm_4.translateY") + P03Y P04Z = cmds.getAttr("L_arm_4.translateZ") + P03Z cmds.moveVertexAlongDirection ("L_PV_Plane.vtx[1]", u= P02X+(P02X/2)) PVposition = cmds.pointPosition ("L_PV_Plane.vtx[1]") cmds.circle (n="L_PV01",nr=(0, 0, 1), r = GlobalMult) cmds.circle (n="L_PV02",nr=(0, 1, 0), r = GlobalMult) cmds.circle (n="L_PV03",nr=(1, 0, 0), r = GlobalMult) cmds.parent ("L_PV02Shape","L_PV01",r= True, s= True) cmds.parent ("L_PV03Shape","L_PV01",r= True, s= True) cmds.delete ("L_PV02","L_PV03") cmds.select ("L_PV01") cmds.group (n= "L_PV01_GRP", r= True) cmds.xform (t=PVposition) cmds.duplicate ("L_PV01_GRP", n= "R_PV_GRP") cmds.rename ("R_PV_GRP|L_PV01", "R_PV01") cmds.rename ("L_PV01_GRP", "L_PV0_GRP") cmds.move(0, 0, 0, ".scalePivot",".rotatePivot", absolute=True) cmds.setAttr ("R_PV_GRP.scaleX", -1) cmds.xform('R_PV_GRP', cp = True) cmds.select ("L_PV01","L_ArmIKrp") cmds.PoleVectorConstraint () cmds.select ("R_PV01","R_ArmIKrp") cmds.PoleVectorConstraint () cmds.setAttr("R_PV01Shape.overrideEnabled", True ) cmds.setAttr("R_PV01Shape.overrideColor", 13 ) cmds.setAttr("R_PV02Shape1.overrideEnabled", True ) cmds.setAttr("R_PV02Shape1.overrideColor", 13 ) cmds.setAttr("R_PV03Shape1.overrideEnabled", True ) cmds.setAttr("R_PV03Shape1.overrideColor", 13 ) cmds.setAttr("L_PV01Shape.overrideEnabled", True ) cmds.setAttr("L_PV01Shape.overrideColor", 6 ) cmds.setAttr("L_PV02Shape.overrideEnabled", True ) cmds.setAttr("L_PV02Shape.overrideColor", 6 ) cmds.setAttr("L_PV03Shape.overrideEnabled", True ) cmds.setAttr("L_PV03Shape.overrideColor", 6 ) #SwitchIKFK if cmds.objExists ("IK_FK_CC"): print "CurveControl IKFK Exists" else: if cmds.objExists('makeTextCurves1'): cmds.rename ('makeTextCurves1','makeTextCurves1LOL') Texto = 'IK-FK' Color = 16 Text = cmds.textCurves (n= Texto, t = Texto, o = True) Lista= cmds.listRelatives (Text, ad = True) Shape = Lista[1] cmds.delete ('makeTextCurves1') for Curva in Lista: if cmds.objectType(str(Curva), isType='nurbsCurve'): curvaPapa = cmds.listRelatives(Curva, p = True) curvaAbuelo = cmds.listRelatives(curvaPapa, p = True) DobleCurva = cmds.listRelatives(curvaAbuelo) if len(DobleCurva)==2: LetrasDobles.append (Curva) else: if not Shape == curvaPapa[0]: cmds.makeIdentity (curvaAbuelo, a = True, t = True , r = True) cmds.parent (Curva, Shape, r = True, s = True) #Colores cmds.setAttr (Curva+'.overrideEnabled', 1) cmds.setAttr (Curva+'.overrideColor', Color) cmds.parent (Shape,w=True) cmds.rename(Shape, 'IK_FK_CC') cmds.setAttr ("IK_FK_CC.overrideEnabled", 1) cmds.setAttr ("IK_FK_CC.overrideColor", 16) cmds.setAttr ('IK_FK_CC.rotateX', -90) cmds.xform(cp= True) cmds.setAttr ('IK_FK_CC.scaleX', GlobalMult) cmds.setAttr ('IK_FK_CC.scaleY', GlobalMult) cmds.setAttr ('IK_FK_CC.scaleZ', GlobalMult) cmds.makeIdentity(a=True, t = True, r = True, s=True) if cmds.objExists("IK_FK_CC.LeftArmIKFK") : print 'existe Attr' else: cmds.select ("IK_FK_CC") cmds.addAttr (ln= "LeftArmIKFK", min=0, max=1) cmds.setAttr ("IK_FK_CC.LeftArmIKFK", keyable = True) if cmds.objExists("IK_FK_CC.RightArmIKFK") : print 'existe Attr' else: cmds.select ("IK_FK_CC") cmds.addAttr (ln= "RightArmIKFK", min=0, max=1) cmds.setAttr ("IK_FK_CC.RightArmIKFK", keyable = True) cmds.expression (n="L_Arms_Switch", s = "L_arm_2.rotateX = (L_arm_01_FK.rotateX*IK_FK_CC.LeftArmIKFK)+(L_arm_01_IK.rotateX*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_2.rotateY = (L_arm_01_FK.rotateY*IK_FK_CC.LeftArmIKFK)+(L_arm_01_IK.rotateY*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_2.rotateZ = (L_arm_01_FK.rotateZ*IK_FK_CC.LeftArmIKFK)+(L_arm_01_IK.rotateZ*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_3.rotateX = (L_arm_02_FK.rotateX*IK_FK_CC.LeftArmIKFK)+(L_arm_02_IK.rotateX*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_3.rotateY = (L_arm_02_FK.rotateY*IK_FK_CC.LeftArmIKFK)+(L_arm_02_IK.rotateY*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_3.rotateZ = (L_arm_02_FK.rotateZ*IK_FK_CC.LeftArmIKFK)+(L_arm_02_IK.rotateZ*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_4.rotateX = (L_arm_03_FK.rotateX*IK_FK_CC.LeftArmIKFK)+(L_arm_03_IK.rotateX*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_4.rotateY = (L_arm_03_FK.rotateY*IK_FK_CC.LeftArmIKFK)+(L_arm_03_IK.rotateY*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_4.rotateZ = (L_arm_03_FK.rotateZ*IK_FK_CC.LeftArmIKFK)+(L_arm_03_IK.rotateZ*(1-IK_FK_CC.LeftArmIKFK));\nL_armFK_03_CC.visibility = IK_FK_CC.LeftArmIKFK;\nL_armFK_02_CC.visibility = IK_FK_CC.LeftArmIKFK;\nL_armFK_01_CC.visibility = IK_FK_CC.LeftArmIKFK;\nL_armIK_CC.visibility = (1-IK_FK_CC.LeftArmIKFK);") cmds.expression (n="R_Arms_Switch", s = "R_arm_2.rotateX = (R_arm_01_FK.rotateX*IK_FK_CC.RightArmIKFK)+(R_arm_01_IK.rotateX*(1-IK_FK_CC.RightArmIKFK));\nR_arm_2.rotateY = (R_arm_01_FK.rotateY*IK_FK_CC.RightArmIKFK)+(R_arm_01_IK.rotateY*(1-IK_FK_CC.RightArmIKFK));\nR_arm_2.rotateZ = (R_arm_01_FK.rotateZ*IK_FK_CC.RightArmIKFK)+(R_arm_01_IK.rotateZ*(1-IK_FK_CC.RightArmIKFK));\nR_arm_3.rotateX = (R_arm_02_FK.rotateX*IK_FK_CC.RightArmIKFK)+(R_arm_02_IK.rotateX*(1-IK_FK_CC.RightArmIKFK));\nR_arm_3.rotateY = (R_arm_02_FK.rotateY*IK_FK_CC.RightArmIKFK)+(R_arm_02_IK.rotateY*(1-IK_FK_CC.RightArmIKFK));\nR_arm_3.rotateZ = (R_arm_02_FK.rotateZ*IK_FK_CC.RightArmIKFK)+(R_arm_02_IK.rotateZ*(1-IK_FK_CC.RightArmIKFK));\nR_arm_4.rotateX = (R_arm_03_FK.rotateX*IK_FK_CC.RightArmIKFK)+(R_arm_03_IK.rotateX*(1-IK_FK_CC.RightArmIKFK));\nR_arm_4.rotateY = (R_arm_03_FK.rotateY*IK_FK_CC.RightArmIKFK)+(R_arm_03_IK.rotateY*(1-IK_FK_CC.RightArmIKFK));\nR_arm_4.rotateZ = (R_arm_03_FK.rotateZ*IK_FK_CC.RightArmIKFK)+(R_arm_03_IK.rotateZ*(1-IK_FK_CC.RightArmIKFK));\nR_armFK_03_CC.visibility = IK_FK_CC.RightArmIKFK;\nR_armFK_02_CC.visibility = IK_FK_CC.RightArmIKFK;\nR_armFK_01_CC.visibility = IK_FK_CC.RightArmIKFK;\nR_armIK_CC.visibility = (1-IK_FK_CC.RightArmIKFK);") cmds.setAttr ("IK_FK_CC.overrideEnabled", 1) cmds.setAttr ("IK_FK_CC.overrideColor", 18) #Twist cmds.moveVertexAlongDirection ("L_PV_Plane.vtx[1]", u= -(P02X+(P02X/2))) V03position = cmds.pointPosition ("L_PV_Plane.vtx[2]") V02position = cmds.pointPosition ("L_PV_Plane.vtx[1]") V01position = cmds.pointPosition ("L_PV_Plane.vtx[0]") cmds.curve (n= "L_UpArmTwist",d=1, p=[(0,0,0),(10,0,0)], k = (0,1)) cmds.curve (n= "L_DownArmTwist",d=1, p=[(0,0,0),(10,0,0)], k = (0,1)) cmds.xform ("L_UpArmTwist.cv[0]" ,t=V01position) cmds.xform ("L_UpArmTwist.cv[1]" ,t=V02position) cmds.xform ("L_DownArmTwist.cv[0]" ,t=V02position) cmds.xform ("L_DownArmTwist.cv[1]" ,t=V03position) cmds.duplicate ("L_UpArmTwist", n="R_UpArmTwist") cmds.duplicate ("L_DownArmTwist", n="R_DownArmTwist") cmds.scale (-1,1,1, "R_UpArmTwist", a= True) cmds.scale (-1,1,1, "R_DownArmTwist", a= True) def FuckingSwitch (side): cmds.duplicate (str(side)+ "_arm_2", n= str(side)+"_UpArmTwist01") cmds.parent (str(side)+ "_UpArmTwist01", world = True) cmds.rename (str(side)+ "_UpArmTwist01|"+str(side)+"_arm_3",str(side)+ "_UpArmTwist03") cmds.duplicate (str(side)+ "_UpArmTwist03", n= str(side)+ "_DownArmTwist01") cmds.delete (str(side)+ "_UpArmTwist03|"+str(side)+"_arm_4") cmds.rename (str(side)+ "_DownArmTwist01|"+str(side)+"_arm_4",str(side)+"_DownArmTwist03") cmds.parent (str(side)+ '_DownArmTwist01', w = True) cmds.duplicate (str(side)+ "_UpArmTwist03",n= str(side)+ "_UpArmTwist02") cmds.duplicate (str(side)+ "_DownArmTwist03",n= str(side)+ "_DownArmTwist02") cmds.pointConstraint (str(side)+ "_UpArmTwist03",str(side)+ "_UpArmTwist01",str(side)+ "_UpArmTwist02", mo = False) cmds.pointConstraint (str(side)+ "_DownArmTwist03",str(side)+ "_DownArmTwist01",str(side)+ "_DownArmTwist02", mo = False) cmds.orientConstraint (str(side)+ "_UpArmTwist03",str(side)+ "_UpArmTwist01",str(side)+ "_UpArmTwist02", mo = True) cmds.orientConstraint (str(side)+ "_DownArmTwist03",str(side)+ "_DownArmTwist01",str(side)+ "_DownArmTwist02", mo = True) cmds.delete(str(side)+ "_UpArmTwist02_pointConstraint1",str(side)+ "_DownArmTwist02_pointConstraint1") cmds.delete(str(side)+ "_UpArmTwist02_orientConstraint1",str(side)+ "_DownArmTwist02_orientConstraint1") cmds.parent (str(side)+ "_UpArmTwist03",str(side)+ "_UpArmTwist02") cmds.parent (str(side)+ "_DownArmTwist03",str(side)+ "_DownArmTwist02") FuckingSwitch("L") FuckingSwitch("R") cmds.group ("L_PV_Plane","ShoulderClusterHandle","ElbowClusterHandle","WristClusterHandle", n= "ExtrasAutoArms") cmds.setAttr ("ExtrasAutoArms.visibility", 0) cmds.duplicate ("L_PV_Plane", n="R_PV_Plane") cmds.setAttr ("R_PV_Plane.scaleX", -1) cmds.duplicate ("L_arm_2",n= "L_NoRot") cmds.duplicate ("R_arm_2",n= "R_NoRot") cmds.delete ("L_NoRot|L_arm_3") cmds.delete ("R_NoRot|R_arm_3") cmds.duplicate("L_arm_2", n= "L_TwistShoulder_JJ" ) cmds.parent ("L_TwistShoulder_JJ", world = True) cmds.rename ("L_TwistShoulder_JJ|L_arm_3","L_TwistElbow_JJ") cmds.rename ("L_TwistElbow_JJ|L_arm_4","L_TwistWrist_JJ") cmds.duplicate("R_arm_2", n= "R_TwistShoulder_JJ" ) cmds.parent ("R_TwistShoulder_JJ", world = True) cmds.rename ("R_TwistShoulder_JJ|R_arm_3","R_TwistElbow_JJ") cmds.rename ("R_TwistElbow_JJ|R_arm_4","R_TwistWrist_JJ") cmds.ikHandle (n= "L_UpTwist_IK", sj="L_UpArmTwist01", ee="L_UpArmTwist03", sol = "ikSplineSolver", ccv= 0, pcv = 0, c="L_UpArmTwist" ) cmds.ikHandle (n= "L_DownTwist_IK", sj="L_DownArmTwist01", ee="L_DownArmTwist03", sol = "ikSplineSolver", ccv= 0, pcv = 0, c="L_DownArmTwist" ) cmds.ikHandle (n= "R_UpTwist_IK", sj="R_UpArmTwist01", ee="R_UpArmTwist03", sol = "ikSplineSolver", ccv= 0, pcv = 0, c="R_UpArmTwist" ) cmds.ikHandle (n= "R_DownTwist_IK", sj="R_DownArmTwist01", ee="R_DownArmTwist03", sol = "ikSplineSolver", ccv= 0, pcv = 0, c="R_DownArmTwist" ) #Twist Connections Stuff cmds.rebuildCurve ("L_UpArmTwist", s = 2, d = 1) cmds.rebuildCurve ("L_DownArmTwist", s = 2, d = 1) cmds.rebuildCurve ("R_UpArmTwist", s = 2, d = 1) cmds.rebuildCurve ("R_DownArmTwist", s = 2, d = 1) cmds.skinCluster("L_TwistShoulder_JJ","L_TwistElbow_JJ", "L_UpArmTwist", tsb= True, bm=0, sm=0, nw=1 ) cmds.skinCluster("L_TwistElbow_JJ","L_TwistWrist_JJ", "L_DownArmTwist", tsb= True, bm=0, sm=0, nw=1 ) cmds.skinCluster("R_TwistShoulder_JJ","R_TwistElbow_JJ", "R_UpArmTwist", tsb= True, bm=0, sm=0, nw=1 ) cmds.skinCluster("R_TwistElbow_JJ","R_TwistWrist_JJ", "R_DownArmTwist", tsb= True, bm=0, sm=0, nw=1 ) cmds.parentConstraint ("L_arm_2","L_TwistShoulder_JJ", mo = True) cmds.parentConstraint ("L_arm_3","L_TwistElbow_JJ", mo = True) cmds.parentConstraint ("L_arm_4","L_TwistWrist_JJ", mo = True) cmds.parentConstraint ("R_arm_2","R_TwistShoulder_JJ", mo = True) cmds.parentConstraint ("R_arm_3","R_TwistElbow_JJ", mo = True) cmds.parentConstraint ("R_arm_4","R_TwistWrist_JJ", mo = True) #Advance Twist Controls cmds.setAttr ("L_UpTwist_IK.dTwistControlEnable", 1) cmds.setAttr ("L_UpTwist_IK.dWorldUpType", 4) cmds.setAttr ("L_UpTwist_IK.dForwardAxis", 0) cmds.setAttr ("L_UpTwist_IK.dWorldUpAxis", 1) cmds.setAttr ("R_UpTwist_IK.dTwistControlEnable", 1) cmds.setAttr ("R_UpTwist_IK.dWorldUpType", 4) cmds.setAttr ("R_UpTwist_IK.dForwardAxis", 0) cmds.setAttr ("R_UpTwist_IK.dWorldUpAxis", 1) cmds.setAttr ("L_DownTwist_IK.dTwistControlEnable", 1) cmds.setAttr ("L_DownTwist_IK.dWorldUpType", 4) cmds.setAttr ("L_DownTwist_IK.dForwardAxis", 0) cmds.setAttr ("L_DownTwist_IK.dWorldUpAxis", 1) cmds.setAttr ("R_DownTwist_IK.dTwistControlEnable", 1) cmds.setAttr ("R_DownTwist_IK.dWorldUpType", 4) cmds.setAttr ("R_DownTwist_IK.dForwardAxis", 0) cmds.setAttr ("R_DownTwist_IK.dWorldUpAxis", 1) cmds.connectAttr ("L_NoRot.xformMatrix", "L_UpTwist_IK.dWorldUpMatrix", f=True) cmds.connectAttr ("L_TwistElbow_JJ.xformMatrix", "L_UpTwist_IK.dWorldUpMatrixEnd", f=True ) cmds.connectAttr ("R_NoRot.xformMatrix", "R_UpTwist_IK.dWorldUpMatrix", f=True) cmds.connectAttr ("R_TwistElbow_JJ.xformMatrix", "R_UpTwist_IK.dWorldUpMatrixEnd", f=True ) cmds.connectAttr ("L_TwistElbow_JJ.xformMatrix", "L_DownTwist_IK.dWorldUpMatrix", f=True) cmds.connectAttr ("L_TwistWrist_JJ.xformMatrix", "L_DownTwist_IK.dWorldUpMatrixEnd", f=True ) cmds.connectAttr ("R_TwistElbow_JJ.xformMatrix", "R_DownTwist_IK.dWorldUpMatrix", f=True) cmds.connectAttr ("R_TwistWrist_JJ.xformMatrix", "R_DownTwist_IK.dWorldUpMatrixEnd", f=True ) cmds.setAttr ('L_UpArmTwist.inheritsTransform', 0) cmds.setAttr ('L_DownArmTwist.inheritsTransform', 0) cmds.setAttr ('R_UpArmTwist.inheritsTransform', 0) cmds.setAttr ('R_DownArmTwist.inheritsTransform', 0) cmds.select (clear = True) # Grouping and Organizing cmds.group ("L_armIK_GRP", "L_PV0_GRP", n="L_IKArm_GRP") cmds.group ("R_armIK_GRP", "R_PV_GRP", n="R_IKArm_GRP") cmds.group ("L_UpArmTwist", "L_DownArmTwist" , "L_UpTwist_IK", "L_DownTwist_IK","L_TwistShoulder_JJ","L_TwistElbow_JJ","L_TwistWrist_JJ","L_UpArmTwist01","L_DownArmTwist01", n = "L_TwistArm") cmds.group ("R_UpArmTwist", "R_DownArmTwist" , "R_UpTwist_IK", "R_DownTwist_IK","R_TwistShoulder_JJ","R_TwistElbow_JJ","R_TwistWrist_JJ","R_UpArmTwist01","R_DownArmTwist01", n = "R_TwistArm") cmds.group ("L_IKArm_GRP", "R_IKArm_GRP","L_clavicule_01_GRP","R_clavicule_01_GRP","L_arm_1","R_arm_1",n= "Connect this to the rest of the rig ARMS") cmds.group ("L_TwistArm", "R_TwistArm", "ExtrasAutoArms","Connect_this_to_the_rest_of_the_rig_ARMS", n="RdM_AutoARMS" ) #Lock and hide #FK cmds.select ('L_armFK_03_CC','L_armFK_02_CC','L_armFK_01_CC','R_armFK_03_CC','R_armFK_02_CC','R_armFK_01_CC') FK = cmds.ls(sl=True) for T in FK: cmds.setAttr(str(T)+'.translateX',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.translateY',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.translateZ',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleX',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleY',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleZ',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.visibility',lock = True, keyable = False, channelBox = False) #IK, Clavicule cmds.select ('L_armIK_CC', 'R_armIK_CC','R_clavicule_01_CC ','L_clavicule_01_CC') IK = cmds.ls(sl=True) for T in IK: cmds.setAttr(str(T)+'.scaleX',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleY',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleZ',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.visibility',lock = True, keyable = False, channelBox = False) #Pole Vector cmds.select ('L_PV01', 'R_PV01') PV = cmds.ls(sl=True) for T in PV: cmds.setAttr(str(T)+'.rotateX',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.rotateY',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.rotateZ',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleX',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleY',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.scaleZ',lock = True, keyable = False, channelBox = False) cmds.setAttr(str(T)+'.visibility',lock = True, keyable = False, channelBox = False) # Borrar lo malo cmds.delete('L_UpArmTwist', 'L_DownArmTwist', 'L_UpTwist_IK', 'L_DownTwist_IK', 'R_UpArmTwist', 'R_DownArmTwist', 'R_UpTwist_IK', 'R_DownTwist_IK') cmds.delete('R_TwistShoulder_JJ_parentConstraint1', 'R_TwistElbow_JJ_parentConstraint1', 'R_TwistWrist_JJ_parentConstraint1', 'L_TwistWrist_JJ_parentConstraint1', 'L_TwistElbow_JJ_parentConstraint1', 'L_TwistShoulder_JJ_parentConstraint1') cmds.delete('L_TwistShoulder_JJ', 'R_TwistShoulder_JJ', 'L_UpArmTwist01', 'R_UpArmTwist01') # Acomodar todo del lado izquierdo cmds.parent('L_TwistWrist_JJ', 'L_TwistElbow_JJ') cmds.parent('L_TwistElbow_JJ', 'L_DownArmTwist02', 'L_arm_3') cmds.delete('L_DownArmTwist03', 'L_DownArmTwist01') cmds.makeIdentity('L_TwistElbow_JJ', apply=True, t=1, r=1) # IKSc cmds.select('L_TwistElbow_JJ', 'L_TwistWrist_JJ') cmds.ikHandle(sol='ikSCsolver', n='L_TwistIKSc') cmds.parent('L_TwistIKSc', 'L_arm_4') # Orient for Twist OrientTemp = cmds.orientConstraint('L_TwistElbow_JJ', 'L_arm_4', 'L_DownArmTwist02', mo=0) cmds.delete(OrientTemp) cmds.makeIdentity('L_DownArmTwist02', apply=True, t=1, r=1) # ConnectionEditor cmds.shadingNode('multiplyDivide', asUtility=1, n='L_TwistMult') cmds.connectAttr('L_TwistElbow_JJ.rotate.rotateX', 'L_TwistMult.input1.input1X') cmds.setAttr('L_TwistMult.input2X', 0.5) cmds.connectAttr('L_TwistMult.output.outputX', 'L_DownArmTwist02.rotate.rotateX') # Duplicar para R # Acomodar todo del lado izquierdo cmds.parent('R_TwistWrist_JJ', 'R_TwistElbow_JJ') cmds.parent('R_TwistElbow_JJ', 'R_DownArmTwist02', 'R_arm_3') cmds.delete('R_DownArmTwist03', 'R_DownArmTwist01') cmds.makeIdentity('R_TwistElbow_JJ', apply=True, t=1, r=1) # IKSc cmds.select('R_TwistElbow_JJ', 'R_TwistWrist_JJ') cmds.ikHandle(sol='ikSCsolver', n='R_TwistIKSc') cmds.parent('R_TwistIKSc', 'R_arm_4') # Orient for Twist OrientTemp = cmds.orientConstraint('R_TwistElbow_JJ', 'R_arm_4', 'R_DownArmTwist02', mo=0) cmds.delete(OrientTemp) cmds.makeIdentity('R_DownArmTwist02', apply=True, t=1, r=1) # ConnectionEditor cmds.shadingNode('multiplyDivide', asUtility=1, n='R_TwistMult') cmds.connectAttr('R_TwistElbow_JJ.rotate.rotateX', 'R_TwistMult.input1.input1X') cmds.setAttr('R_TwistMult.input2X', 0.5) cmds.connectAttr('R_TwistMult.output.outputX', 'R_DownArmTwist02.rotate.rotateX') cmds.select('L_DownArmTwist02', 'L_arm_1', 'R_DownArmTwist02', 'R_arm_1', 'R_arm_2', 'L_arm_2', 'L_arm_3', 'R_arm_3') cmds.sets(n='BindThisToArms') print 'DONE'
def Leg_R(): Scale_Guide=cmds.xform('Guide_Ctrl_Master',ws=True, q=True, s=True )[0] ##Joints Leg_R## #J_Leg_R# trans_Guide_Leg_R = cmds.xform ('Loc_Guide_Leg_R', ws=True, q=True, t=True) translate_Guide_ForeLeg_R = cmds.xform ('Loc_Guide_ForeLeg_R', ws=True, q=True, t=True) translate_Guide_Foot_R = cmds.xform ('Loc_Guide_Foot_R', ws=True, q=True, t=True) Joint_Leg_Neutral_R=cmds.joint(n='J_Leg_Neutral_R',p=trans_Guide_Leg_R,rad=1*Scale_Guide) Joint_ForeLeg_Neutral_R=cmds.joint(n='J_ForeLeg_Neutral_R',p=translate_Guide_ForeLeg_R,rad=1*Scale_Guide) Joint_Ankle_Neutral_R=cmds.joint(n='J_Ankle_Neutral_R',p=translate_Guide_Foot_R,rad=1*Scale_Guide) OJ_Joint_Leg_Neutral_R=cmds.joint('J_Leg_Neutral_R', e=True, zso=True, oj='xzy',sao='zup') OJ_Joint_ForeLeg_Neutral_R=cmds.joint('J_ForeLeg_Neutral_R', e=True, zso=True, oj='xzy',sao='zup') OJ_Joint_Ankle_Neutral_R=cmds.joint('J_Ankle_Neutral_R', e=True, zso=True, oj='xzy',sao='zup') joX_Ankle_R=cmds.setAttr("J_Ankle_Neutral_R.jointOrientX",0) joY_Ankle_R=cmds.setAttr("J_Ankle_Neutral_R.jointOrientY",0) joZ_Ankle_R=cmds.setAttr("J_Ankle_Neutral_R.jointOrientZ",0) cmds.select(d=True) #J_Ankle_R# trans_Guide_Foot_R = cmds.xform ('Guide_Foot_R', ws=True, q=True, t=True) translate_Guide_Toe_R = cmds.xform ('Loc_Guide_Toe_R', ws=True, q=True, t=True) translate_Guide_Tip_R = cmds.xform ('Loc_Guide_Tip_R', ws=True, q=True, t=True) Joint_Toe_Neutral_R=cmds.joint(n='J_Toe_Neutral_R',p=translate_Guide_Toe_R,rad=1*Scale_Guide) Joint_Tip_Neutral_R=cmds.joint(n='J_Tip_Neutral_R',p=translate_Guide_Tip_R,rad=1*Scale_Guide) OJ_Joint_Leg_Neutral_R=cmds.joint('J_Toe_Neutral_R', e=True, zso=True, oj='xzy',sao='yup') OJ_Joint_ForeLeg_Neutral_R=cmds.joint('J_Tip_Neutral_R', e=True, zso=True, oj='xzy',sao='yup') rot_Ankle_R = cmds.xform ('J_Ankle_Neutral_R', ws=True, q=True, ro=True) cmds.select( d=True ) cmds.parent('J_Toe_Neutral_R','J_Ankle_Neutral_R') cmds.select(d=True) cmds.select(Joint_Leg_Neutral_R) cmds.mirrorJoint (myz=True, mb=True) cmds.delete('J_Leg_Neutral_R') Rename_FK= mel.eval('searchReplaceNames("_R1","_R","all")') cmds.select(d=True) rot_Guide_Leg_R = cmds.xform ('J_Leg_Neutral_R', ws=True, q=True, ro=True) trans_Guide_Leg_R = cmds.xform ('J_Leg_Neutral_R', ws=True, q=True, t=True) Z_J_Leg=cmds.group(n='Z_J_Leg_Neutral_R',em=True) P_J_Leg=cmds.group(n='P_J_Leg_Neutral_R') emparentarTrans = cmds.xform ('P_J_Leg_Neutral_R', ws=True, t=trans_Guide_Leg_R) emparentarRot = cmds.xform ('P_J_Leg_Neutral_R', ws=True, ro=rot_Guide_Leg_R) P_J_Leg_Neutral_R_Z_J_Leg_Neutral_R=cmds.parent('J_Leg_Neutral_R','Z_J_Leg_Neutral_R') Activar_color= cmds.setAttr('P_J_Leg_Neutral_R.overrideEnabled', 1) Blanco= cmds.setAttr('P_J_Leg_Neutral_R.overrideColor', 16) cmds.select( d=True ) #Duplicate the original chain Duplicar_a_FK= cmds.duplicate(P_J_Leg, rc=True) Duplicar_a_IK= cmds.duplicate(P_J_Leg, rc=True) #rename the chain Rename_FK= mel.eval('searchReplaceNames("_Neutral_R1","_FK_R","all")') Rename_IK= mel.eval('searchReplaceNames("_Neutral_R2","_IK_R","all")') #Change Color Herarchy FK_IK Activar_Color= cmds.setAttr(('P_J_Leg_FK_R.overrideEnabled'), 1) Azul= cmds.setAttr('P_J_Leg_FK_R.overrideColor', 6) Activar_Color= cmds.setAttr('P_J_Leg_IK_R.overrideEnabled', 1) Amarillo= cmds.setAttr('P_J_Leg_IK_R.overrideColor', 17) def J(Joints,nombre,radio): for Elemento in Joints: Change_Radius_Tip_FK= cmds.setAttr(Elemento+'_'+nombre+'_R'+'.radius',radio*Scale_Guide) J(['J_Leg','J_ForeLeg','J_Ankle','J_Toe','J_Tip'],"FK",.5) J(['J_Leg','J_ForeLeg','J_Ankle','J_Toe','J_Tip'],"IK",.3) #########Create_Ctrls_FK_R############# #Create_Ctrl_Leg_FK_R translate = cmds.xform ('J_Leg_FK_R', ws=True, q=True, t=True) rot = cmds.xform ('J_Leg_FK_R', ws=True, q=True, ro=True) #Emparentar R_FK_Leg_CTL emparentarTrans_R = cmds.xform ('P_R_FK_Leg_CTL', ws=True, t=translate) emparentarRot_R = cmds.xform ('P_R_FK_Leg_CTL', ws=True, ro=rot) cmds.parentConstraint ('R_FK_Leg_CTL', 'J_Leg_FK_R',mo=True) #Create_Ctrl_ForeLeg_FK_R translate = cmds.xform ('J_ForeLeg_FK_R', ws=True, q=True, t=True) rot = cmds.xform ('J_ForeLeg_FK_R', ws=True, q=True, ro=True) #Emparentar R_FK_Leg_CTL emparentarTrans_R = cmds.xform ('P_R_FK_ForeLeg_CTL', ws=True, t=translate) emparentarRot_R = cmds.xform ('P_R_FK_ForeLeg_CTL', ws=True, ro=rot) cmds.parentConstraint ('R_FK_ForeLeg_CTL', 'J_ForeLeg_FK_R',mo=True) P_ForeLeg_R_Ctrl_Leg_R= cmds.parent(("P_R_FK_ForeLeg_CTL","R_FK_Leg_CTL")) #Create_IKAnklele_Leg_R Ik_Ankle_Leg_R=cmds.ikHandle(n='Ik_Ankle_Leg_R', sj='J_Leg_IK_R', ee='J_Ankle_IK_R') Hidde_Ik_Ankle_Leg_R=cmds.hide('Ik_Ankle_Leg_R') #Create_Ctrl_PV_Leg_R pos_Leg_IK_R = cmds.xform ('Guide_Leg_R', ws=True, q=True, t=True) pos_ForeLeg_IK_R = cmds.xform ('Guide_ForeLeg_R', ws=True, q=True, t=True) pos_Ankle_IK_R = cmds.xform ('Guide_Foot_R', ws=True, q=True, t=True) Cv_Polevector_Leg_R=cmds.curve(n='Cv_PV_Guide_Leg_R',d=1,p=[(pos_Leg_IK_R ),(pos_ForeLeg_IK_R),(pos_Ankle_IK_R)],k=(0,1,2)) Move_Cv_Guide=cmds.moveVertexAlongDirection ('Cv_PV_Guide_Leg_R.cv[1]', n= 4.8*Scale_Guide) pos_Cv= cmds.pointPosition ('Cv_PV_Guide_Leg_R.cv[1]') emparentarTrans_R_PV_Leg_R = cmds.xform ('P_R_PolevectorLeg_CTL', ws=True, t=pos_Cv) delete_Cv_Polevector_Leg_R=cmds.delete(Cv_Polevector_Leg_R) Cons_PV_Leg_R= cmds.poleVectorConstraint('R_PolevectorLeg_CTL', 'Ik_Ankle_Leg_R' ) #R_IK_Leg_CTL translate_Ctrl_IK_R = cmds.xform ('J_Ankle_IK_R', ws=True, q=True, t=True) emparentarTrans_IK_Leg_R = cmds.xform ('P_R_IK_Leg_CTL', ws=True, t=translate_Ctrl_IK_R) #Herarchy_IkH_Ctrl_Leg_IK_R IkH_Leg_R_Ctrl_Leg_IK_R=cmds.parent('Ik_Ankle_Leg_R','R_IK_Leg_CTL') #Create_Ctrl_Switch_Leg_R translate_Switch_Leg_R = cmds.xform ('Guide_Ctrl_Switch_Leg_R', ws=True, q=True, t=True) rot_Switch_Leg_R = cmds.xform ('Guide_Ctrl_Switch_Leg_R', ws=True, q=True, ro=True) emparentarTrans_R_Switch_Leg_R = cmds.xform ("P_R_SwitchLeg_CTL", ws=True, t=translate_Switch_Leg_R) emparentarRot_R_Switch_Leg_R = cmds.xform ("P_R_SwitchLeg_CTL", ws=True, ro=rot_Switch_Leg_R) #Add_Attrs_Switch_Leg_R Atributo_Switch= cmds.addAttr("R_SwitchLeg_CTL",longName='Switch_FK_IK',attributeType='float', defaultValue=10, minValue=0, maxValue=10 ) agregarAttr= cmds.setAttr ("R_SwitchLeg_CTL.Switch_FK_IK", k=True) Atributo_Stretch= cmds.addAttr("R_SwitchLeg_CTL",longName='Stretch',attributeType='float', defaultValue=1, minValue=0, maxValue=1) AgregarAttrStretch= cmds.setAttr ("R_SwitchLeg_CTL.Stretch", k=True) #Switch_FK_IK_Leg_R Select_Leg=cmds.select('J_Leg_Neutral_R','J_ForeLeg_Neutral_R','J_Ankle_Neutral_R') sel = cmds.ls (sl=True) def Clear_Select(): cmds.select (cl=True) Clear_Select() MD_switch_fk_ik = cmds.shadingNode ("multiplyDivide", asUtility=True, n="MD_Leg_Switch_FK_IK_R") cmds.setAttr(MD_switch_fk_ik+'.operation',2) cmds.setAttr(MD_switch_fk_ik+'.input2X',10) cmds.connectAttr ('R_SwitchLeg_CTL.Switch_FK_IK', MD_switch_fk_ik + ".input1X") for J in sel: N = J.split("_Neutral_R")[0] print N New_N=N.split("J_")[1] BC_rotate = cmds.shadingNode ("blendColors", asUtility=True, n="BC_" + New_N+"_rotate_R") BC_translate = cmds.shadingNode ("blendColors", asUtility=True, n="BC_" + New_N+"_translate_R") cmds.connectAttr (BC_rotate + ".output", J + ".rotate") cmds.connectAttr (MD_switch_fk_ik + ".outputX", BC_rotate + ".blender") cmds.connectAttr (BC_translate + ".output", J + ".translate") cmds.connectAttr (MD_switch_fk_ik + ".outputX", BC_translate + ".blender") j_Leg_neutral=('J_Leg_Neutral_R') j_foreLeg_neutral=('J_ForeLeg_Neutral_R') jnt_Ankle_neutral_R=('J_Ankle_Neutral_R') JN1 = j_Leg_neutral.split("_Neutral_R")[0] JN2 = j_foreLeg_neutral.split("_Neutral_R")[0] JN3 = jnt_Ankle_neutral_R.split("_Neutral_R")[0] Milista=[] list.append(Milista,JN1) list.append(Milista,JN2) list.append(Milista,JN3) def fun1(Var1): list.append (Milista, Milista[0] + Var1) list.append (Milista, Milista[1] + Var1) list.append (Milista, Milista[2] + Var1) fun1('_FK_R') fun1('_IK_R') def fun(Var): cmds.connectAttr (Milista[3]+ "."+Var, "BC_Leg_"+Var+"_R.color2") cmds.connectAttr (Milista[6]+ "."+Var, "BC_Leg_"+Var+"_R.color1") cmds.connectAttr (Milista[4]+ "."+Var, "BC_ForeLeg_"+Var+"_R.color2") cmds.connectAttr (Milista[7]+ "."+Var, "BC_ForeLeg_"+Var+"_R.color1") cmds.connectAttr (Milista[5]+ "."+Var, "BC_Ankle_"+Var+"_R.color2") cmds.connectAttr (Milista[8]+ "."+Var, "BC_Ankle_"+Var+"_R.color1") fun('rotate') fun('translate') #Cons_Orient_Ik_Ankle_J_Ankle_R Parent_Cons_FK_Ctrl_J_Ik_Leg=cmds.parentConstraint('R_FK_Leg_CTL','J_Leg_IK_R',mo=True) Herarchy_Switch_Leg_R_J_Ankle_Neutral_R=cmds.parent('P_R_SwitchLeg_CTL','J_Ankle_Neutral_R') translate_J_ForeLeg_Ik_R = cmds.xform ('J_ForeLeg_IK_R', ws=True, q=True, t=True) translate_Ctrl_Polevector_Leg_R = cmds.xform ('R_PolevectorLeg_CTL', ws=True, q=True, t=True) #CVPv_IK_R# Cv_Polevector_Leg_R=cmds.curve(n='Cv_Polevector_Leg_R',d=1,p=[(translate_J_ForeLeg_Ik_R),(translate_Ctrl_Polevector_Leg_R)],k=(0,1)) Z_Cvv_Polevector_Leg_R= cmds.group (n=("Z_Cv_Polevector_Leg_R"),em=True) Herarchy_CV_Grp=cmds.parent('Cv_Polevector_Leg_R',"Z_Cv_Polevector_Leg_R") lineWidth_Cv_Polevector_Leg_R=cmds.setAttr (Cv_Polevector_Leg_R+".lineWidth",2) OvE_Cv_Polevector_Leg_R=cmds.setAttr(Cv_Polevector_Leg_R+".overrideEnabled",1) OvDT_Cv_Polevector_Leg_R=cmds.setAttr(Cv_Polevector_Leg_R+".overrideDisplayType",2) cmds.select(d=True) J_CV_0_Leg_R=cmds.joint(p=translate_J_ForeLeg_Ik_R,n="J_Cv_0_Leg_R") Grp_J_CV_0_Leg_R=cmds.group(n='Z_J_Cv_0_Leg_R') cmds.select(d=True) J_CV_1_Leg_R=cmds.joint(p=translate_Ctrl_Polevector_Leg_R,n="J_Cv_1_Leg_R") Grp_J_CV_1_Leg_R=cmds.group(n='Z_J_Cv_1_Leg_R') cmds.select(d=True) Skin_J_Cvs=cmds.skinCluster('J_Cv_0_Leg_R','J_Cv_1_Leg_R','Cv_Polevector_Leg_R',dr=4) Parent_J_CV_Leg_R_J_ForeLeg_IK_R=cmds.parent(Grp_J_CV_0_Leg_R,'J_ForeLeg_IK_R') Parent_J_CV_Leg_R_J_ForeLeg_IK_R=cmds.parent(Grp_J_CV_1_Leg_R,'R_PolevectorLeg_CTL') cmds.select(d=True) #Create Node_Vis_Leg_R# Node_Reverse_Vis_Leg_R=cmds.shadingNode('reverse',au=True, n='R_Vis_Leg_R') Node_MD_Vis_Leg_R=cmds.shadingNode('multiplyDivide',au=True, n='MD_Vis_Leg_R') Operation_MD_Vis_Leg_R= cmds.setAttr (Node_MD_Vis_Leg_R+'.operation',2, k=True) Set_2X_Node_MD_Vis_Leg_R= cmds.setAttr (Node_MD_Vis_Leg_R+'.input2X',10, k=True) #Conect Vis_Leg_R# Switch_MD_Leg_R=cmds.connectAttr('R_SwitchLeg_CTL.Switch_FK_IK',Node_MD_Vis_Leg_R+'.input1X') MD_R_Leg_R=cmds.connectAttr(Node_MD_Vis_Leg_R+'.outputX',Node_Reverse_Vis_Leg_R+'.inputX') R_Ctrl_FK_Leg_R=cmds.connectAttr(Node_Reverse_Vis_Leg_R+'.outputX','P_R_FK_ForeLeg_CTL.visibility') R_J_FK_Leg_R=cmds.connectAttr(Node_Reverse_Vis_Leg_R+'.outputX','P_J_Leg_FK_R.visibility') MD_Ctrl_IK_Leg_R=cmds.connectAttr(Node_MD_Vis_Leg_R+'.outputX','P_R_IK_Leg_CTL.visibility') MD_PV_IK_Leg_R=cmds.connectAttr(Node_MD_Vis_Leg_R+'.outputX','R_PolevectorLeg_CTL.visibility') MD_CV_PV_IK_Leg_R=cmds.connectAttr(Node_MD_Vis_Leg_R+'.outputX','Z_Cv_Polevector_Leg_R.visibility') MD_J_IK_Leg_R=cmds.connectAttr(Node_MD_Vis_Leg_R+'.outputX','P_J_Leg_IK_R.visibility')
def Leg_L(): global translate,rot Scale_Guide=cmds.xform('Guide_Ctrl_Master',ws=True, q=True, s=True )[0] Values_Trans_Guides_Leg=[]#LISTA VACIA QUE RECIBIRA LAS POSICIONES DE LAS GUIAS Leg List_Get_Trans=['Guide_Leg_L','Guide_ForeLeg_L','Guide_Foot_L'] num=0 for Guide in List_Get_Trans:#FOR PARA OBTENER POSICION DE LAS GUIAS DEL Leg Y AGREGARLAS A LA LISTA VALUES_TRANS_GUIDES_Leg Get_Trans_Rot(Guide) list.append(Values_Trans_Guides_Leg,translate) num=num+1 num=0 for Joints_Create in Values_Trans_Guides_Leg:#CREACION DE LOS JOINTS EN BASE A LAS POSICIONES DE LAS GUIAS Name=['Leg','ForeLeg','Ankle'] Joint_Neutral_L=cmds.joint(n='J_'+Name[num]+'_Neutral_L',p=Joints_Create,rad=1*Scale_Guide) num=num+1 List_Joints=['J_Leg_Neutral_L','J_ForeLeg_Neutral_L','J_Ankle_Neutral_L']#LISTA DE LOS JOINTS DEL Leg NEUTRALES for OJ in List_Joints:#FOR PARA ORIENTAR LA CADENA DE JOINTS Leg cmds.joint(OJ, e=True, zso=True, oj='xzy',sao='zup') XYZ=('X','Y','Z') for xyz in XYZ:#FOR PARA ASIGNAR JOINT ORIENT EN 0 cmds.setAttr("J_Ankle_Neutral_L.jointOrient"+xyz,0) cmds.select(cl=True ) Get_Trans_Rot('J_Leg_Neutral_L') cmds.group(n='Z_J_Leg_Neutral_L',em=True)#CREACION GRUPO Z_OFFSET Leg_NEUTRAL_L P_J_Leg=cmds.group(n='P_J_Leg_Neutral_L')#CREACION GRUPO P_OFFSET Leg_NEUTRAL_L Set_Trans_Rot('P_J_Leg_Neutral_L') cmds.parent('J_Leg_Neutral_L','Z_J_Leg_Neutral_L') cmds.select(cl=True ) cmds.setAttr('P_J_Leg_Neutral_L.overrideEnabled', 1) cmds.setAttr('P_J_Leg_Neutral_L.overrideColor', 16) cmds.duplicate(P_J_Leg, rc=True)#DUPLICAR CADENA P_J_Leg cmds.duplicate(P_J_Leg, rc=True)#DUPLICAR CADENA P_J_Leg Rename_FK= mel.eval('searchReplaceNames("_Neutral_L1","_FK_L","all")')#RENOMBRAR CADENA NEUTRAL A FK Rename_IK= mel.eval('searchReplaceNames("_Neutral_L2","_IK_L","all")')#RENOMBRAR CADENA NEUTRAL A IK cmds.setAttr(('P_J_Leg_FK_L.overrideEnabled'), 1) cmds.setAttr('P_J_Leg_FK_L.overrideColor', 6) cmds.setAttr('P_J_Leg_IK_L.overrideEnabled', 1) cmds.setAttr('P_J_Leg_IK_L.overrideColor', 17) def J(Joints,nombre,radio):#FUNCION PARA CAMBIAR RADIO DE CADENAS FK,IK Y NEUTRAL for Elemento in Joints: Change_Radius_Tip_FK= cmds.setAttr(Elemento+'_'+nombre+'_L'+'.radius',radio*Scale_Guide) J(['J_Leg','J_ForeLeg','J_Ankle'],"FK",.5) J(['J_Leg','J_ForeLeg','J_Ankle'],"IK",.3) def Jnts_Ctrls(J,P_Ctrl,Ctrl):#FUNCION PARA EMPARENTAR Y HACER CONSTRAINT A LOS JOINTS FK DEL Leg Get_Trans_Rot(J) Set_Trans_Rot(P_Ctrl) cmds.parentConstraint(Ctrl,J,mo=True) Jnts_Ctrls('J_Leg_FK_L','P_L_FK_Leg_CTL','L_FK_Leg_CTL') Jnts_Ctrls('J_ForeLeg_FK_L','P_L_FK_ForeLeg_CTL','L_FK_ForeLeg_CTL') Jnts_Ctrls('J_Ankle_FK_L','P_L_FK_Ankle_CTL','L_FK_Ankle_CTL') cmds.parent(("P_L_FK_Ankle_CTL","L_FK_ForeLeg_CTL")) cmds.parent(("P_L_FK_ForeLeg_CTL","L_FK_Leg_CTL")) cmds.ikHandle(n='Ik_Ankle_Leg_L', sj='J_Leg_IK_L', ee='J_Ankle_IK_L')#CREAR IK AnkleLE Leg_L cmds.hide('Ik_Ankle_Leg_L') Get_Trans_Rot('J_Ankle_IK_L') cmds.xform ('P_L_IK_Leg_CTL', ws=True, t=translate) cmds.parent('Ik_Ankle_Leg_L','L_IK_Leg_CTL') #CREAR CURVA PARA POSICION DEL POLEVECTOR Cv_Polevector_Leg_L=cmds.curve(n='Cv_PV_Guide_Leg_L',d=1,p=[(Values_Trans_Guides_Leg[0]),(Values_Trans_Guides_Leg[1]),(Values_Trans_Guides_Leg[2])],k=(0,1,2)) cmds.moveVertexAlongDirection ('Cv_PV_Guide_Leg_L.cv[1]', n= 4.8*Scale_Guide) pos_Cv= cmds.pointPosition ('Cv_PV_Guide_Leg_L.cv[1]') cmds.xform ('P_L_PolevectorLeg_CTL', ws=True, t=pos_Cv) cmds.delete(Cv_Polevector_Leg_L) Cons_PV_Leg_L= cmds.poleVectorConstraint( 'L_PolevectorLeg_CTL', 'Ik_Ankle_Leg_L' ) cmds.select(cl=True) Get_Trans_Rot('Guide_Ctrl_Switch_Leg_L') Set_Trans_Rot('P_L_SwitchLeg_CTL') Attributes=['Switch_FK_IK','Stretch']#LISTA DE ATTRS PARA EL SWITCH for Attr in Attributes:#FOR PARA AGREGAR ATRIBUTOS AL SWITCH if Attr is 'Stretch': Atributo_Switch= cmds.addAttr("L_SwitchLeg_CTL",longName=Attr,attributeType='float', defaultValue=1, minValue=0, maxValue=1 ) agregarAttr= cmds.setAttr ("L_SwitchLeg_CTL."+Attr, k=True) else: Atributo_Switch= cmds.addAttr("L_SwitchLeg_CTL",longName=Attr,attributeType='float', defaultValue=10, minValue=0, maxValue=10 ) agregarAttr= cmds.setAttr ("L_SwitchLeg_CTL."+Attr, k=True) #Switch_FK_IK_Leg_L Select_Leg=cmds.select('J_Leg_Neutral_L','J_ForeLeg_Neutral_L','J_Ankle_Neutral_L') sel = cmds.ls (sl=True) cmds.select (cl=True) MD_switch_fk_ik = cmds.shadingNode ("multiplyDivide", asUtility=True, n="MD_Leg_Switch_FK_IK_L") cmds.setAttr(MD_switch_fk_ik+'.operation',2) cmds.setAttr(MD_switch_fk_ik+'.input2X',10) cmds.connectAttr ('L_SwitchLeg_CTL.Switch_FK_IK', MD_switch_fk_ik + ".input1X") Milista=[]#LISTA VACIA QUE RECIBIRA LOS NOMBRES _NEUTRAL_L for J in sel:#FOR PARA EN BASE A LA SELECCION(JOINTS) SE CREAN BLENDCOLORS Y SE CONECTE EL MULTIPLYDIVIDE A LOS BLENDS N = J.split("_Neutral_L")[0] New_N=N.split("J_")[1] BC_rotate = cmds.shadingNode ("blendColors", asUtility=True, n="BC_" + New_N+"_rotate_L") BC_translate = cmds.shadingNode ("blendColors", asUtility=True, n="BC_" + New_N+"_translate_L") cmds.connectAttr (BC_rotate + ".output", J + ".rotate") cmds.connectAttr (MD_switch_fk_ik + ".outputX", BC_rotate + ".blender") cmds.connectAttr (BC_translate + ".output", J + ".translate") cmds.connectAttr (MD_switch_fk_ik + ".outputX", BC_translate + ".blender") list.append(Milista,N)#AGREGA EL NOMBRE DEL JOINT SIN NOMBRE DEL SISTEMA A LA LISTA Milista def fun1(Var1):#FUNCION PARA AGREGAR STRING A LOS NOMBRES QUE EXISTEN EN Milista list.append (Milista, Milista[0] + Var1) list.append (Milista, Milista[1] + Var1) list.append (Milista, Milista[2] + Var1) fun1('_FK_L') fun1('_IK_L') def fun(Var):#FUNCION PARA CONECTAR LOS JOINTS FK,IK A LOS BLEND COLORS cmds.connectAttr (Milista[3]+ "."+Var, "BC_Leg_"+Var+"_L.color2") cmds.connectAttr (Milista[6]+ "."+Var, "BC_Leg_"+Var+"_L.color1") cmds.connectAttr (Milista[4]+ "."+Var, "BC_ForeLeg_"+Var+"_L.color2") cmds.connectAttr (Milista[7]+ "."+Var, "BC_ForeLeg_"+Var+"_L.color1") cmds.connectAttr (Milista[5]+ "."+Var, "BC_Ankle_"+Var+"_L.color2") cmds.connectAttr (Milista[8]+ "."+Var, "BC_Ankle_"+Var+"_L.color1") fun('rotate') fun('translate') cmds.parentConstraint('L_FK_Leg_CTL','J_Leg_IK_L',mo=True) cmds.parent('P_L_SwitchLeg_CTL','J_Ankle_Neutral_L') Get_Trans_Rot('J_ForeLeg_IK_L') translate_J_ForeLeg_Ik_L=translate Get_Trans_Rot('L_PolevectorLeg_CTL') translate_Ctrl_PoleVector_Leg_L=translate #CREAR CV PARA POLEVECTOR Cv_Polevector_Leg_L=cmds.curve(n='Cv_Polevector_Leg_L',d=1,p=[(translate_J_ForeLeg_Ik_L),(translate_Ctrl_PoleVector_Leg_L)],k=(0,1)) cmds.group (n=("Z_Cv_Polevector_Leg_L"),em=True) cmds.parent('Cv_Polevector_Leg_L',"Z_Cv_Polevector_Leg_L") cmds.setAttr (Cv_Polevector_Leg_L+".lineWidth",2) cmds.setAttr(Cv_Polevector_Leg_L+".overrideEnabled",1) cmds.setAttr(Cv_Polevector_Leg_L+".overrideDisplayType",2) cmds.select(cl=True) J_CV_0_Leg_L=cmds.joint(p=translate_J_ForeLeg_Ik_L,n="J_Cv_0_Leg_L") cmds.select(cl=True) J_CV_1_Leg_L=cmds.joint(p=translate_Ctrl_PoleVector_Leg_L,n="J_Cv_1_Leg_L") Grp_J_CV_1_Leg_L=cmds.group(n='Z_J_Cv_1_Leg_L') cmds.select(cl=True) cmds.skinCluster('J_Cv_0_Leg_L','J_Cv_1_Leg_L','Cv_Polevector_Leg_L',dr=4) cmds.parent(J_CV_0_Leg_L,'J_ForeLeg_IK_L') cmds.parent(Grp_J_CV_1_Leg_L,'L_PolevectorLeg_CTL') cmds.select(cl=True) #Create and Connect Nodes_Vis_Leg_L# Node_Reverse_Vis_Leg_L=cmds.shadingNode('reverse',au=True, n='R_Vis_Leg_L') Node_MD_Vis_Leg_L=cmds.shadingNode('multiplyDivide',au=True, n='MD_Vis_Leg_L') cmds.setAttr (Node_MD_Vis_Leg_L+'.operation',2, k=True) cmds.setAttr (Node_MD_Vis_Leg_L+'.input2X',10, k=True) Nodes_Vis=['R_Vis_Leg_L','MD_Vis_Leg_L'] cmds.connectAttr('L_SwitchLeg_CTL.Switch_FK_IK',Node_MD_Vis_Leg_L+'.input1X') cmds.connectAttr(Nodes_Vis[1]+'.outputX',Nodes_Vis[0]+'.inputX') #CONECTAR REVERSE_VISIBILITY A LA VISIBILIDAD FK cmds.connectAttr(Nodes_Vis[0]+'.outputX','P_L_FK_ForeLeg_CTL.visibility') cmds.connectAttr(Nodes_Vis[0]+'.outputX','P_J_Leg_FK_L.visibility') Names=['P_L_IK_Leg_CTL','P_L_PolevectorLeg_CTL','Z_Cv_Polevector_Leg_L','P_J_Leg_IK_L']#LISTA DE STRINGS IKS for Object in Names:#FOR PARA CONECTAR EL MULTIPLYDIVIDE A LA VISIBILIDAD IK cmds.connectAttr(Nodes_Vis[1]+'.outputX',Object+'.visibility') cmds.select(cl=True)
def SK_createLeg(jntObj): jointListName = ['_jnt','_jnt_IK','_jnt_FK'] controlCurveName = ['_Leg_FK','_Knee_FK','_Ankle_FK','_Leg_IK'] legHeelPointer = '_heel_drv' origeJoints = [] inputJoint = jntObj leg = inputJoint if('Arm_' in leg): controlCurveName = ['_UpArm_FK','_Elbow_FK','_Wrist_FK','_Wrist_IK'] origeJoints.append(leg) knee = rig.listRelatives(leg,c = True)[0] origeJoints.append(knee) ankle = rig.listRelatives(knee,c = True)[0] origeJoints.append(ankle) # get leg Position legPos = [] legPos.append(rig.xform(leg,q = True,ws = True,rp = True)) legPos.append(rig.xform(knee,q = True,ws = True,rp = True)) legPos.append(rig.xform(ankle,q = True,ws = True,rp = True)) # create IK and FK Joint skJoints = SK_duplicateJoint(origeJoints,jointListName[0]) ikJoints = SK_duplicateJoint(origeJoints,jointListName[1]) fkJoints = SK_duplicateJoint(origeJoints,jointListName[2]) prefix = origeJoints[0] prefixName = origeJoints[0].split('_')[0]+'Leg' if('Arm_' in leg): prefixName = origeJoints[0].split('_')[0]+'Arm' # create constraint jntConstraints = [] conIkBlendGrp = rig.group(empty = True,n = prefixName+'_IKFK_blendCon') rig.addAttr(conIkBlendGrp,ln = 'toeLift',at = 'float',dv = 30,k = True) rig.addAttr(conIkBlendGrp,ln = 'toeStraight',at = 'float',dv = 60,k = True) rig.addAttr(conIkBlendGrp,ln = 'ctrl',at = 'float',min = 0,max = 1, dv = 1) rig.addAttr(conIkBlendGrp,ln = 'AutoStretch',at = 'float',min = 0,max = 1, dv = 0) rig.addAttr(conIkBlendGrp,ln = 'IKFK_vis',at = 'float',min = 0,max = 1, dv = 0,k = True) rig.addAttr(conIkBlendGrp,ln = 'IKFKBlend',at = 'float',min = 0,max = 1, dv = 0,k = True) rig.addAttr(conIkBlendGrp,ln = 'IKFK',at = 'bool', dv = 0,k = True) rig.connectAttr(conIkBlendGrp+'.IKFK',conIkBlendGrp+'.IKFKBlend') rig.connectAttr(conIkBlendGrp+'.IKFK',conIkBlendGrp+'.IKFK_vis') rig.addAttr(ikJoints[0],ln = 'ctrl',at = 'float',min = 0,max = 1, dv = 1,k = True) rig.connectAttr(conIkBlendGrp+'.ctrl',ikJoints[0]+'.ctrl') reverseNode = rig.createNode('reverse',n = prefixName+'_RV') rig.connectAttr(conIkBlendGrp+'.IKFKBlend',reverseNode+'.inputX') SK_snapToObj(skJoints[0],conIkBlendGrp) for i,jnt in enumerate(ikJoints): # JointIKFKConstraint = rig.orientConstraint(ikJoints[i],fkJoints[i],skJoints[i])[0] # jntConstraints.append(JointIKFKConstraint) # rig.connectAttr(conIkBlendGrp+'.IKFKBlend',JointIKFKConstraint+'.'+ikJoints[i]+'W0') # rig.connectAttr(reverseNode+'.outputX',JointIKFKConstraint+'.'+fkJoints[i]+'W1') blendColor = rig.createNode('pairBlend',n = prefixName+'_PB') rig.connectAttr(reverseNode+'.outputX',blendColor+'.weight') rig.connectAttr(ikJoints[i]+'.translate',blendColor+'.inTranslate1') rig.connectAttr(ikJoints[i]+'.rotate',blendColor+'.inRotate1') rig.connectAttr(fkJoints[i]+'.translate',blendColor+'.inTranslate2') rig.connectAttr(fkJoints[i]+'.rotate',blendColor+'.inRotate2') rig.connectAttr(blendColor+'.outTranslate',skJoints[i]+'.translate') rig.connectAttr(blendColor+'.outRotate',skJoints[i]+'.rotate') # create Iksystem locPoleVector = rig.spaceLocator(n = prefixName+'_poleVector')[0] ikHanleName = rig.ikHandle(sj = ikJoints[0],ee = ikJoints[2],n = prefixName+'_IKhandle',sol = 'ikRPsolver')[0] SK_snapToObj(ikJoints[1],locPoleVector) poleVectorConsName = rig.poleVectorConstraint(locPoleVector,ikHanleName)[0] # create global controller Scale jointPos1 = rig.xform(ikJoints[0],q = True,t = True,ws = True) jointPos2 = rig.xform(ikJoints[2],q = True,t = True,ws = True) scaleVal = math.sqrt(math.pow((jointPos1[0]-jointPos2[0]),2)+ math.pow((jointPos1[1]-jointPos2[1]),2)+ math.pow((jointPos1[2]-jointPos2[2]),2))/11.4802792549 #create controller FKconScale = 0.1 ikAnkleCon = SK_b01(13) rig.setAttr(ikAnkleCon+'.visibility',cb = False,k = False) SK_AddAttributes(ikAnkleCon,'Leg') rig.setAttr(ikAnkleCon+'.scale',scaleVal,scaleVal,scaleVal) SK_freezeObj(ikAnkleCon) rig.setAttr(ikAnkleCon+'.scaleVal',scaleVal) rig.connectAttr(conIkBlendGrp+'.ctrl',ikAnkleCon+'.ctrl') rig.setAttr(ikAnkleCon+'.ctrl',cb = False,k = False) ikanklecon = rig.rename(ikAnkleCon,prefixName+controlCurveName[3]) IKFKSwithIkCon = rig.group(ikanklecon, n = ikanklecon+'_IKFK_GRP') ikankleconConstraint = rig.group(IKFKSwithIkCon,n = ikanklecon+'_Anim') rig.parent(ikanklecon,ikankleconConstraint) ikankleconAnim = rig.group(ikankleconConstraint,n = ikanklecon+'_Constraint') ikankleconGRP = rig.group(ikankleconAnim,n = ikanklecon+'_GRP') ikLegPos = rig.xform(ikJoints[2],q = True,t = True,ws = True) if not ('Arm_' in leg): ikLegPos = rig.xform(prefix.split('_')[0]+legHeelPointer,q = True,t = True,ws = True) rig.xform(ikankleconGRP,t = ikLegPos,ws = True) # SK_snapToObj(ikJoints[2],ikankleconGRP) rig.parent(ikHanleName,ikanklecon) fkLegCon = SK_b29(6) rig.connectAttr(conIkBlendGrp+'.ctrl',fkLegCon+'.ctrl') fkLegCon = rig.rename(fkLegCon,prefixName+controlCurveName[0]) rig.setAttr(fkLegCon+'.scale',FKconScale*scaleVal,FKconScale*scaleVal,FKconScale*scaleVal) rig.setAttr(fkLegCon+'.rz',90) SK_freezeObj(fkLegCon) fkLegConGRP = rig.group(fkLegCon,n = fkLegCon+'_GRP') SK_snapToObj(fkJoints[0],fkLegConGRP) rig.parentConstraint(fkLegCon,fkJoints[0]) fkKneeCon = SK_b29(6) rig.connectAttr(conIkBlendGrp+'.ctrl',fkKneeCon+'.ctrl') fkKneeCon = rig.rename(fkKneeCon,prefixName+controlCurveName[1]) rig.setAttr(fkKneeCon+'.scale',FKconScale*scaleVal,FKconScale*scaleVal,FKconScale*scaleVal) rig.setAttr(fkKneeCon+'.rz',90) SK_freezeObj(fkKneeCon) fkKneeConGRP = rig.group(fkKneeCon,n = fkKneeCon+'_GRP' ) SK_snapToObj(fkJoints[1],fkKneeConGRP) rig.parentConstraint(fkKneeCon,fkJoints[1]) fkAnkleCon = SK_b29(13) rig.setAttr(fkAnkleCon+'.visibility',cb = False,k = False) rig.connectAttr(conIkBlendGrp+'.ctrl',fkAnkleCon+'.ctrl') fkAnkleCon = rig.rename(fkAnkleCon,prefixName+controlCurveName[2]) rig.setAttr(fkAnkleCon+'.scale',FKconScale*scaleVal,FKconScale*scaleVal,FKconScale*scaleVal) rig.setAttr(fkAnkleCon+'.rz',90) SK_freezeObj(fkAnkleCon) fkAnkleConGRP = rig.group(fkAnkleCon,n = fkAnkleCon+'_GRP') SK_snapToObj(fkJoints[2],fkAnkleConGRP) rig.orientConstraint(fkAnkleCon,IKFKSwithIkCon,mo = True) rig.parentConstraint(fkAnkleCon,fkJoints[2]) rig.parent(fkAnkleConGRP,fkKneeCon) rig.parent(fkKneeConGRP,fkLegCon) #=============================================================================== # create stretch system #=============================================================================== # 创建Locator legLoc = rig.spaceLocator(n = prefixName+'_Locator')[0] rig.pointConstraint(ikJoints[0],legLoc,mo = False) ankleLoc = rig.spaceLocator(n = prefixName+'_Locator')[0] rig.pointConstraint(ikHanleName ,ankleLoc,mo = False) locatorDistaneceGrp = rig.group(empty = True,n = prefixName+'_locDistanceGrp') SK_snapToObj(prefix,locatorDistaneceGrp) SK_freezeObj(locatorDistaneceGrp) rig.parent(legLoc,locPoleVector,ankleLoc,locatorDistaneceGrp) # create distanceBetweenNode ankleLegDis = rig.createNode('distanceBetween',n = prefixName+'_DBT',ss = True) kneeLegDis = rig.createNode('distanceBetween',n = prefixName+'_DBT',ss = True) ankleKneeDis = rig.createNode('distanceBetween',n = prefixName+'_DBT',ss = True) locPoleVectorShape = rig.listRelatives(locPoleVector,s = True)[0] legLocShape = rig.listRelatives(legLoc,s = True)[0] ankleLocShape = rig.listRelatives(ankleLoc,s = True)[0] rig.connectAttr(locPoleVector+'.translate',ankleKneeDis+'.point1') rig.connectAttr(locPoleVector+'.translate',kneeLegDis+'.point1') rig.connectAttr(ankleLoc +'.translate',ankleLegDis+'.point1') rig.connectAttr(ankleLoc +'.translate',ankleKneeDis+'.point2') rig.connectAttr(legLoc+'.translate',ankleLegDis+'.point2') rig.connectAttr(legLoc+'.translate',kneeLegDis+'.point2') XYZ = SK_jointOrientation(ikJoints[1]) AxisValue = rig.getAttr(ikJoints[1]+'.'+XYZ) SK_createLegSetupNode(prefixName,ikJoints[1],ikJoints[2],ikanklecon,fkAnkleCon,conIkBlendGrp,reverseNode,XYZ,kneeLegDis,ankleKneeDis,ankleLegDis) # poleVector Setup poleCurve = '' try: poleCurve = rig.curve(d = 1,p = [legPos[0],legPos[1],legPos[2]],k = [0,1,2],n = prefixName+'_locatorPoleVector') except: pass poleVecPos = rig.getAttr(ankleLegDis+'.distance') rig.moveVertexAlongDirection(poleCurve+'.cv[1]',n = poleVecPos/3) poleVtxPos = rig.pointPosition(poleCurve+'.cv[1]') assisetPoleLoc = rig.spaceLocator(n = prefixName+'_PoleVectorPos')[0] rig.addAttr(assisetPoleLoc,ln = 'ctrl',at = 'float',min = 0,max = 1, dv = 1,k = True) rig.connectAttr(conIkBlendGrp+'.ctrl',assisetPoleLoc+'.ctrl') rig.move(poleVtxPos[0],poleVtxPos[1],poleVtxPos[2],assisetPoleLoc) rig.parent(assisetPoleLoc,fkJoints[0]) rig.move(poleVtxPos[0],poleVtxPos[1],poleVtxPos[2],locPoleVector) # rotatePoleCurve = rig.group(empty = True,n = prefixName+'_RotatePole_ctrl') rotatePoleCurveUp = rig.group(empty = True,n = prefixName+'_RotatePole_Up') rotatePoleCurveGrp = rig.group(rotatePoleCurveUp,n = prefixName+'_RotatePole_Aim') rotatePoleCurveAimGrp = rig.group(rotatePoleCurveGrp,n = rotatePoleCurveGrp+'_Grp') SK_snapToObj(prefix,rotatePoleCurveAimGrp) matrixLoc = rig.spaceLocator(n = prefixName+'_Matrixlocate')[0] rig.setAttr(matrixLoc+'.visibility',0) if(AxisValue < 0 ): rig.moveVertexAlongDirection(poleCurve+'.cv[2]', v = poleVecPos/12 ) else: rig.moveVertexAlongDirection(poleCurve+'.cv[2]', v = -poleVecPos/12 ) matrixLocPos = rig.pointPosition(poleCurve+'.cv[2]') rig.setAttr(matrixLoc+'.translate',matrixLocPos[0],matrixLocPos[1],matrixLocPos[2]) # 如果是腿,将Locater移到heel位置 rig.parent(matrixLoc,skJoints[2]) if not ('Arm_' in leg): heelName = origeJoints[0].split('_')[0]+'_heel_drv' heelPos = rig.xform(heelName,q = True,t = True,ws = False) rig.setAttr(matrixLoc +'.tx',heelPos[0]) rig.setAttr(matrixLoc+'.tz',heelPos[2]) rig.parent(matrixLoc,ikanklecon) SK_hideLockAll(matrixLoc) rig.delete(poleCurve) poleVectorControl = SK_b12(13) rig.addAttr(poleVectorControl,ln = 'LockKnee',at = 'bool',dv = 0,k = False) rig.addAttr(poleVectorControl,ln = 'aimRotate',at = 'enum',en = 'off:on:', dv = 1,k = False) rig.addAttr(poleVectorControl,ln = 'world',at = 'enum',en = 'off:on:', dv = 0,k = False) rig.addAttr(poleVectorControl,ln = 'follow',at = 'enum',en = 'auto:lock:world:normal:', dv = 0,k = True) # 如果是胳膊,将此属性的初始值设为3 if('Arm_' in leg): rig.setAttr(poleVectorControl+'.follow',3) # 将胳膊上的极向量控制器放大一点 rig.setAttr(poleVectorControl+'.scale',1.8,1.8,1.8) SK_freezeObj(poleVectorControl) rig.connectAttr(conIkBlendGrp+'.ctrl',poleVectorControl+'.ctrl') poleVectorControl = rig.rename(poleVectorControl,prefixName+'_Pole_ctrl') rig.setAttr(poleVectorControl+'.scale',scaleVal*0.5,scaleVal*0.5,scaleVal*0.5) SK_freezeObj(poleVectorControl) poleVectorControlGrp = rig.group(poleVectorControl,n = poleVectorControl+'_GRP') rig.move(poleVtxPos[0],poleVtxPos[1],poleVtxPos[2],poleVectorControlGrp) rig.parent(poleVectorControlGrp,rotatePoleCurveUp) # aim constraint upAim = 1 if((AxisValue < 0 and 'Arm_' in leg) or (AxisValue > 0 and '_leg_' in leg)): upAim = -1 poleAimConstraint = rig.aimConstraint(ikanklecon,rotatePoleCurveGrp,mo = True,aimVector = (1,0,0),upVector = (0,upAim,0),worldUpType = 'object',worldUpObject = matrixLoc)[0] # ploe切换 poleReverse = rig.createNode('reverse',n = prefixName+'_RV',ss = True) rig.pointConstraint(poleVectorControl,locPoleVector,mo = True) # connect IK_FK translate rig.connectAttr(ikJoints[1]+'.'+XYZ,fkKneeConGRP+'.'+XYZ) rig.connectAttr(ikJoints[2]+'.'+XYZ,fkAnkleConGRP+'.'+XYZ) # connect IKFK attribute controlAllGrp = rig.group(empty = True,n = prefixName+'_ALL_CTRL_GRP') rig.move(legPos[0][0],legPos[0][1],legPos[0][2],controlAllGrp) rig.parent(controlAllGrp,fkJoints[0]) SK_freezeObj(controlAllGrp) rig.parent(controlAllGrp,w = True) rig.parent(skJoints[0],ikJoints[0],fkJoints[0],conIkBlendGrp,rotatePoleCurveAimGrp,locatorDistaneceGrp,ikankleconGRP,rotatePoleCurveAimGrp,fkLegConGRP,controlAllGrp) # IKFK切换隐藏 ctrlsReverseNode = rig.createNode('reverse',n = prefixName+'_RV',ss = True) rig.connectAttr(conIkBlendGrp+'.IKFK_vis',ctrlsReverseNode+'.inputX') rig.connectAttr(ctrlsReverseNode+'.outputX',fkLegConGRP +'.visibility') rig.connectAttr(conIkBlendGrp+'.IKFK_vis',ikankleconConstraint +'.visibility') rig.connectAttr(conIkBlendGrp+'.IKFK_vis',rotatePoleCurveAimGrp +'.visibility') kneeMD = rig.createNode('multiplyDivide',n = prefixName+'_MD',ss = True) rig.connectAttr(poleVectorControl+'.LockKnee',kneeMD+'.input1X') rig.connectAttr(poleReverse+'.outputX',kneeMD+'.input2X') rig.connectAttr(kneeMD+'.outputX',ikanklecon+'.LockKnee') rig.setAttr(ikanklecon+'.LockKnee',cb = False,k = False) # 极向量旋转控制器自动向上 poleSetRange = rig.createNode('setRange',n = prefixName+'_SR',ss = True) poleDistance = rig.getAttr(ankleLegDis+'.distance') poleDistanceMin = poleDistance/4 poleRoMD = rig.createNode('multiplyDivide',n = prefixName+'_MD',ss = True) rig.setAttr(poleRoMD+'.input1X',-70) if('Arm_' in leg): rig.setAttr(poleVectorControl+'.aimRotate',0) rig.setAttr(poleRoMD+'.input1X',70) rig.connectAttr(poleVectorControl+'.aimRotate',poleRoMD+'.input2X') rig.connectAttr(poleRoMD+'.input2X',poleAimConstraint+'.'+ikanklecon+'W0') rig.connectAttr(poleRoMD+'.outputX',poleSetRange+'.minX',) rig.connectAttr(ankleLegDis+'.distance',poleSetRange+'.valueX') rig.setAttr(poleSetRange+'.oldMinX',poleDistanceMin) rig.setAttr(poleSetRange+'.oldMaxX',poleDistance) rig.connectAttr(poleSetRange+'.outValueX',rotatePoleCurveUp+'.ry') # 增加过渡骨骼 MidJnt = rig.duplicate(skJoints[1],parentOnly = True,n = prefixName+'_MidJoint_jnt')[0] skMidJntRadius = rig.getAttr(skJoints[1]+'.radius') rig.setAttr(MidJnt+'.radius',skMidJntRadius*2) rig.setAttr(MidJnt+'.overrideEnabled',1) rig.setAttr(MidJnt+'.overrideColor',20) skMidMD = rig.createNode('multiplyDivide',n = prefixName+'_MD',ss = True) rig.setAttr(skMidMD+'.input2X',0.5) rig.connectAttr(skJoints[1]+'.ry',skMidMD+'.input1X') rig.connectAttr(skMidMD+'.outputX',MidJnt+'.ry') rig.connectAttr(skJoints[1]+'.tx',MidJnt+'.tx') # hide ctrl attribute SK_hideLockAll(fkLegCon,1,0) SK_hideLockAll(fkKneeCon) rig.setAttr(fkKneeCon+'.ry',k = True,l = False) rig.setAttr(fkAnkleCon+'.tx',cb = False,k = False,l = True) rig.setAttr(fkAnkleCon+'.ty',cb = False,k = False,l = True) rig.setAttr(fkAnkleCon+'.tz',cb = False,k = False,l = True) rig.setAttr(fkAnkleCon+'.sx',cb = False,k = False) rig.setAttr(fkAnkleCon+'.sy',cb = False,k = False) rig.setAttr(fkAnkleCon+'.sz',cb = False,k = False) rig.setAttr(fkAnkleCon+'.ctrl',cb = False,k = False,l = True) SK_hideLockAll(poleVectorControl,0) rig.setAttr(poleVectorControl+'.follow ',k = True,l = False) rig.setAttr(ikJoints[0]+'.visibility',0) rig.setAttr(fkJoints[0]+'.visibility',0) rig.setAttr(locatorDistaneceGrp+'.visibility',0) SK_hideLockAll(locatorDistaneceGrp) # 增加极向量指向 SK_addAnnotation(prefixName,poleVectorControl,skJoints[1],conIkBlendGrp)
def move_vtx_positions(vals, pObject, axis='y', reverse=False, seprAxisMv=False, refresh=True, queue=None): '''Used to move the vertex positions of an object 'pObject' in an axis direction. Parameters: vals [list] : A list of float values for the relative move positions. pObject [str] : The name of the polygonal object in the scene. axis [str] : The direction for the moved vertex for the value. Valid values are x,y,z,n with 'n' being normals. reverse [bool] : If True, the values in the list 'vals' will be reversed. seprAxisMv [bool] : If True, each of the move axis values will be moved separately instead of in one move command apart from 'n' which is always done separately. On Exit: Moves each of the vertexes of of 'pObject' with relative values from 'vals' in the direction(s) of 'axis'. ''' nVtx = cmds.polyEvaluate(pObject, vertex=True) nAxis = axis.lower() if not(isinstance(vals, (list,tuple))): raise ValueError('vals is not a list or tuple. Got %s' % vals) if not(cmds.objExists(pObject)): raise ValueError('%s is not an object that exists in the scene' % pObject) if not(mf.poly_check(pObject)): raise ValueError('MTG only works with poly objects. %s is not' % pObject) if not(all([True if l in ('x','y','z','n') and \ nAxis.count(l) == 1 else False for l in axis])): raise ValueError('%s is an invalid axis. Must contain (x,y,z,n)' ' and only one of each' % axis) if isinstance(vals, tuple): vals = list(vals) if reverse: vals.reverse() if 'n' in nAxis: if queue: queue.put(('Moving Terrain in Normal direction', nVtx)) normalDirs = mf.get_vertex_normals(pObject) for i,val in enumerate(vals[:nVtx]): if queue: queue.put(i) cmds.select('%s.vtx[%d]' % (pObject, i), replace=True) dir_ = normalDirs[i] nOfVerts = len(mf.soft_selection()) cmds.moveVertexAlongDirection(direction=[dir_]*nOfVerts, magnitude=[val]*nOfVerts) if refresh: cmds.refresh(cv=True) if any([True if l in ('x','y','z') else False for l in nAxis]): tmpAxis = nAxis.replace('n', '') if seprAxisMv: for a in tmpAxis: if queue: queue.put(('Moving Terrain in %s axis' % a, nVtx)) move = {'move'+a.upper(): True} for i,val in enumerate(vals[:nVtx]): queue.put(i) cmds.select('%s.vtx[%d]' % (pObject, i), replace=True) cmds.move(val, relative=True, **move) if refresh: cmds.refresh(cv=True) else: if queue: queue.put(('Moving Terrain in %s axis' % tmpAxis.upper(), nVtx)) move = {'move'+tmpAxis.upper(): True} for i,val in enumerate(vals[:nVtx]): if queue: queue.put(i) val = (val,)*len(tmpAxis) cmds.select('%s.vtx[%d]' % (pObject, i), replace=True) cmds.move(*val, relative=True, **move) if refresh: cmds.refresh(cv=True)
def IKFK(*args): for X in range(1, jointsNum + 1): cmds.setAttr("L_arm_" + str(X) + ".displayLocalAxis", 0) cmds.setAttr("R_arm_" + str(X) + ".displayLocalAxis", 0) cmds.duplicate("L_arm_2", rc=True) cmds.duplicate("L_arm_2", rc=True) cmds.rename("L_arm_5", "L_arm_01_IK") cmds.rename("L_arm_6", "L_arm_02_IK") cmds.rename("L_arm_7", "L_arm_03_IK") cmds.rename("L_arm_8", "L_arm_01_FK") cmds.rename("L_arm_9", "L_arm_02_FK") cmds.rename("L_arm_10", "L_arm_03_FK") if cmds.objExists('R_arm_1'): print 'Mirror already aplied' cmds.duplicate("R_arm_2", rc=True) cmds.duplicate("R_arm_2", rc=True) cmds.rename("R_arm_5", "R_arm_01_IK") cmds.rename("R_arm_6", "R_arm_02_IK") cmds.rename("R_arm_7", "R_arm_03_IK") cmds.rename("R_arm_8", "R_arm_01_FK") cmds.rename("R_arm_9", "R_arm_02_FK") cmds.rename("R_arm_10", "R_arm_03_FK") else: cmds.select("L_arm_1") cmds.mirrorJoint(mirrorYZ=True, mirrorBehavior=True, searchReplace=('L_', 'R_')) cmds.ikHandle(n="L_ArmIKrp", sj="L_arm_01_IK", ee="L_arm_03_IK") cmds.ikHandle(n="R_ArmIKrp", sj="R_arm_01_IK", ee="R_arm_03_IK") #Controladores ############################ GlobalMult = cmds.floatSliderGrp(RadioControlador, q=True, value=2) ############################ #Clavicule cmds.circle(r=3 * GlobalMult, nr=(1, 0, 0), n="L_clavicule_01_CC", ch=0) cmds.group("L_clavicule_01_CC", n="L_clavicule_01_GRP") cmds.parentConstraint("L_arm_1", "L_clavicule_01_GRP") cmds.delete("L_clavicule_01_GRP_parentConstraint1") cmds.makeIdentity("L_clavicule_01_CC", apply=True, t=True) cmds.setAttr("L_clavicule_01_CC" + "Shape.overrideEnabled", True) cmds.setAttr("L_clavicule_01_CC" + "Shape.overrideColor", 6) cmds.duplicate('L_clavicule_01_CC', n="R_clavicule_01_CC") cmds.group("R_clavicule_01_CC", n="R_clavicule_01_GRP") cmds.parentConstraint("R_arm_1", "R_clavicule_01_GRP") cmds.delete("R_clavicule_01_GRP_parentConstraint1") cmds.makeIdentity("R_clavicule_01_CC", apply=True, t=True) cmds.setAttr("R_clavicule_01_CC" + "Shape.overrideEnabled", True) cmds.setAttr("R_clavicule_01_CC" + "Shape.overrideColor", 13) #cmds.orientConstraint ('L_clavicule_01_CC','L_arm_1') #cmds.orientConstraint ('R_clavicule_01_CC','R_arm_1') #FK for P in range(1, jointsNum): cmds.circle(r=2 * GlobalMult, nr=(1, 0, 0), n="L_armFK_0" + str(P) + "_CC", ch=0) cmds.group("L_armFK_0" + str(P) + "_CC", n="L_armFK_0" + str(P) + "_GRP") cmds.parentConstraint("L_arm_0" + str(P) + "_FK", "L_armFK_0" + str(P) + "_GRP") cmds.delete("L_armFK_0" + str(P) + "_GRP_parentConstraint1") cmds.makeIdentity("L_armFK_0" + str(P) + "_CC", apply=True, t=True) cmds.setAttr("L_armFK_0" + str(P) + "_CCShape.overrideEnabled", True) cmds.setAttr("L_armFK_0" + str(P) + "_CCShape.overrideColor", 6) cmds.circle(r=2 * GlobalMult, nr=(1, 0, 0), n="R_armFK_0" + str(P) + "_CC", ch=0) cmds.group("R_armFK_0" + str(P) + "_CC", n="R_armFK_0" + str(P) + "_GRP") cmds.parentConstraint("R_arm_0" + str(P) + "_FK", "R_armFK_0" + str(P) + "_GRP") cmds.delete("R_armFK_0" + str(P) + "_GRP_parentConstraint1") cmds.makeIdentity("R_armFK_0" + str(P) + "_CC", apply=True, t=True) cmds.setAttr("R_armFK_0" + str(P) + "_CCShape.overrideEnabled", True) cmds.setAttr("R_armFK_0" + str(P) + "_CCShape.overrideColor", 13) cmds.parent("L_armFK_01_GRP", "L_clavicule_01_CC") cmds.parent("L_armFK_02_GRP", "L_armFK_01_CC") cmds.parent("L_armFK_03_GRP", "L_armFK_02_CC") cmds.parent("R_armFK_01_GRP", "R_clavicule_01_CC") cmds.parent("R_armFK_02_GRP", "R_armFK_01_CC") cmds.parent("R_armFK_03_GRP", "R_armFK_02_CC") cmds.parentConstraint("L_clavicule_01_CC", "L_arm_1") cmds.parentConstraint("L_armFK_01_CC", "L_arm_01_FK") cmds.parentConstraint("L_armFK_02_CC", "L_arm_02_FK") cmds.parentConstraint("L_armFK_03_CC", "L_arm_03_FK") cmds.parentConstraint("R_clavicule_01_CC", "R_arm_1") cmds.parentConstraint("R_armFK_01_CC", "R_arm_01_FK") cmds.parentConstraint("R_armFK_02_CC", "R_arm_02_FK") cmds.parentConstraint("R_armFK_03_CC", "R_arm_03_FK") #IK cmds.curve(n="L_armIK_CC", d=1, p=[(1, 1, 1), (1, 1, -1), (1, -1, -1), (1, -1, 1), (-1, -1, 1), (-1, 1, 1), (1, 1, 1), (1, -1, 1), (-1, -1, 1), (-1, -1, -1), (-1, 1, -1), (1, 1, -1), (1, -1, -1), (-1, -1, -1), (-1, 1, -1), (-1, 1, 1)], k=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) cmds.group("L_armIK_CC", n="L_armIK_GRP") cmds.pointConstraint("L_arm_03_IK", "L_armIK_GRP") cmds.delete("L_armIK_GRP_pointConstraint1") cmds.orientConstraint("L_arm_02_IK", "L_armIK_GRP") cmds.delete("L_armIK_GRP_orientConstraint1") cmds.curve(n="R_armIK_CC", d=1, p=[(1, 1, 1), (1, 1, -1), (1, -1, -1), (1, -1, 1), (-1, -1, 1), (-1, 1, 1), (1, 1, 1), (1, -1, 1), (-1, -1, 1), (-1, -1, -1), (-1, 1, -1), (1, 1, -1), (1, -1, -1), (-1, -1, -1), (-1, 1, -1), (-1, 1, 1)], k=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) cmds.group("R_armIK_CC", n="R_armIK_GRP") cmds.pointConstraint("R_arm_03_IK", "R_armIK_GRP") cmds.delete("R_armIK_GRP_pointConstraint1") cmds.orientConstraint("R_arm_02_IK", "R_armIK_GRP") cmds.delete("R_armIK_GRP_orientConstraint1") cmds.parent("L_ArmIKrp", "L_armIK_CC") cmds.parent("R_ArmIKrp", "R_armIK_CC") cmds.orientConstraint("L_armIK_CC", "L_arm_03_IK", mo=True) cmds.orientConstraint("R_armIK_CC", "R_arm_03_IK", mo=True) cmds.scale(GlobalMult, GlobalMult, GlobalMult, 'L_armIK_GRP', r=True) cmds.scale(GlobalMult, GlobalMult, GlobalMult, 'R_armIK_GRP', r=True) cmds.setAttr("L_armIK_CC.overrideEnabled", 1) cmds.setAttr("R_armIK_CC.overrideEnabled", 1) cmds.setAttr("L_armIK_CC.overrideColor", 6) cmds.setAttr("R_armIK_CC.overrideColor", 13) #Pole Vector cmds.polyPlane(n="L_PV_Plane", sh=1, sw=1) cmds.delete("L_PV_Plane.vtx[3]") cmds.cluster("L_PV_Plane.vtx[0]", n="ShoulderCluster") cmds.cluster("L_PV_Plane.vtx[1]", n="ElbowCluster") cmds.cluster("L_PV_Plane.vtx[2]", n="WristCluster") cmds.pointConstraint("L_arm_2", "ShoulderClusterHandle") cmds.pointConstraint("L_arm_3", "ElbowClusterHandle") cmds.pointConstraint("L_arm_4", "WristClusterHandle") P01X = cmds.getAttr("L_arm_1.translateX") P01Y = cmds.getAttr("L_arm_1.translateY") P01Z = cmds.getAttr("L_arm_1.translateZ") P02X = cmds.getAttr("L_arm_2.translateX") + P01X P02Y = cmds.getAttr("L_arm_2.translateY") + P01Y P02Z = cmds.getAttr("L_arm_2.translateZ") + P01Z P03X = cmds.getAttr("L_arm_3.translateX") + P02X P03Y = cmds.getAttr("L_arm_3.translateY") + P02Y P03Z = cmds.getAttr("L_arm_3.translateZ") + P02Z P04X = cmds.getAttr("L_arm_4.translateX") + P03X P04Y = cmds.getAttr("L_arm_4.translateY") + P03Y P04Z = cmds.getAttr("L_arm_4.translateZ") + P03Z cmds.moveVertexAlongDirection("L_PV_Plane.vtx[1]", u=P02X + (P02X / 2)) PVposition = cmds.pointPosition("L_PV_Plane.vtx[1]") cmds.circle(n="L_PV01", nr=(0, 0, 1), r=GlobalMult) cmds.circle(n="L_PV02", nr=(0, 1, 0), r=GlobalMult) cmds.circle(n="L_PV03", nr=(1, 0, 0), r=GlobalMult) cmds.parent("L_PV02Shape", "L_PV01", r=True, s=True) cmds.parent("L_PV03Shape", "L_PV01", r=True, s=True) cmds.delete("L_PV02", "L_PV03") cmds.select("L_PV01") cmds.group(n="L_PV01_GRP", r=True) cmds.xform(t=PVposition) cmds.duplicate("L_PV01_GRP", n="R_PV_GRP") cmds.rename("R_PV_GRP|L_PV01", "R_PV01") cmds.rename("L_PV01_GRP", "L_PV0_GRP") cmds.move(0, 0, 0, ".scalePivot", ".rotatePivot", absolute=True) cmds.setAttr("R_PV_GRP.scaleX", -1) cmds.xform('R_PV_GRP', cp=True) cmds.select("L_PV01", "L_ArmIKrp") cmds.PoleVectorConstraint() cmds.select("R_PV01", "R_ArmIKrp") cmds.PoleVectorConstraint() cmds.setAttr("R_PV01Shape.overrideEnabled", True) cmds.setAttr("R_PV01Shape.overrideColor", 13) cmds.setAttr("R_PV02Shape1.overrideEnabled", True) cmds.setAttr("R_PV02Shape1.overrideColor", 13) cmds.setAttr("R_PV03Shape1.overrideEnabled", True) cmds.setAttr("R_PV03Shape1.overrideColor", 13) cmds.setAttr("L_PV01Shape.overrideEnabled", True) cmds.setAttr("L_PV01Shape.overrideColor", 6) cmds.setAttr("L_PV02Shape.overrideEnabled", True) cmds.setAttr("L_PV02Shape.overrideColor", 6) cmds.setAttr("L_PV03Shape.overrideEnabled", True) cmds.setAttr("L_PV03Shape.overrideColor", 6) #SwitchIKFK if cmds.objExists("IK_FK_CC"): print "CurveControl IKFK Exists" else: if cmds.objExists('makeTextCurves1'): cmds.rename('makeTextCurves1', 'makeTextCurves1LOL') Texto = 'IK-FK' Color = 16 Text = cmds.textCurves(n=Texto, t=Texto, o=True) Lista = cmds.listRelatives(Text, ad=True) Shape = Lista[1] cmds.delete('makeTextCurves1') for Curva in Lista: if cmds.objectType(str(Curva), isType='nurbsCurve'): curvaPapa = cmds.listRelatives(Curva, p=True) curvaAbuelo = cmds.listRelatives(curvaPapa, p=True) DobleCurva = cmds.listRelatives(curvaAbuelo) if len(DobleCurva) == 2: LetrasDobles.append(Curva) else: if not Shape == curvaPapa[0]: cmds.makeIdentity(curvaAbuelo, a=True, t=True, r=True) cmds.parent(Curva, Shape, r=True, s=True) #Colores cmds.setAttr(Curva + '.overrideEnabled', 1) cmds.setAttr(Curva + '.overrideColor', Color) cmds.parent(Shape, w=True) cmds.rename(Shape, 'IK_FK_CC') cmds.setAttr("IK_FK_CC.overrideEnabled", 1) cmds.setAttr("IK_FK_CC.overrideColor", 16) cmds.setAttr('IK_FK_CC.rotateX', -90) cmds.xform(cp=True) cmds.setAttr('IK_FK_CC.scaleX', GlobalMult) cmds.setAttr('IK_FK_CC.scaleY', GlobalMult) cmds.setAttr('IK_FK_CC.scaleZ', GlobalMult) cmds.makeIdentity(a=True, t=True, r=True, s=True) if cmds.objExists("IK_FK_CC.LeftArmIKFK"): print 'existe Attr' else: cmds.select("IK_FK_CC") cmds.addAttr(ln="LeftArmIKFK", min=0, max=1) cmds.setAttr("IK_FK_CC.LeftArmIKFK", keyable=True) if cmds.objExists("IK_FK_CC.RightArmIKFK"): print 'existe Attr' else: cmds.select("IK_FK_CC") cmds.addAttr(ln="RightArmIKFK", min=0, max=1) cmds.setAttr("IK_FK_CC.RightArmIKFK", keyable=True) cmds.expression( n="L_Arms_Switch", s="L_arm_2.rotateX = (L_arm_01_FK.rotateX*IK_FK_CC.LeftArmIKFK)+(L_arm_01_IK.rotateX*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_2.rotateY = (L_arm_01_FK.rotateY*IK_FK_CC.LeftArmIKFK)+(L_arm_01_IK.rotateY*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_2.rotateZ = (L_arm_01_FK.rotateZ*IK_FK_CC.LeftArmIKFK)+(L_arm_01_IK.rotateZ*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_3.rotateX = (L_arm_02_FK.rotateX*IK_FK_CC.LeftArmIKFK)+(L_arm_02_IK.rotateX*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_3.rotateY = (L_arm_02_FK.rotateY*IK_FK_CC.LeftArmIKFK)+(L_arm_02_IK.rotateY*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_3.rotateZ = (L_arm_02_FK.rotateZ*IK_FK_CC.LeftArmIKFK)+(L_arm_02_IK.rotateZ*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_4.rotateX = (L_arm_03_FK.rotateX*IK_FK_CC.LeftArmIKFK)+(L_arm_03_IK.rotateX*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_4.rotateY = (L_arm_03_FK.rotateY*IK_FK_CC.LeftArmIKFK)+(L_arm_03_IK.rotateY*(1-IK_FK_CC.LeftArmIKFK));\nL_arm_4.rotateZ = (L_arm_03_FK.rotateZ*IK_FK_CC.LeftArmIKFK)+(L_arm_03_IK.rotateZ*(1-IK_FK_CC.LeftArmIKFK));\nL_armFK_03_CC.visibility = IK_FK_CC.LeftArmIKFK;\nL_armFK_02_CC.visibility = IK_FK_CC.LeftArmIKFK;\nL_armFK_01_CC.visibility = IK_FK_CC.LeftArmIKFK;\nL_armIK_CC.visibility = (1-IK_FK_CC.LeftArmIKFK);" ) cmds.expression( n="R_Arms_Switch", s="R_arm_2.rotateX = (R_arm_01_FK.rotateX*IK_FK_CC.RightArmIKFK)+(R_arm_01_IK.rotateX*(1-IK_FK_CC.RightArmIKFK));\nR_arm_2.rotateY = (R_arm_01_FK.rotateY*IK_FK_CC.RightArmIKFK)+(R_arm_01_IK.rotateY*(1-IK_FK_CC.RightArmIKFK));\nR_arm_2.rotateZ = (R_arm_01_FK.rotateZ*IK_FK_CC.RightArmIKFK)+(R_arm_01_IK.rotateZ*(1-IK_FK_CC.RightArmIKFK));\nR_arm_3.rotateX = (R_arm_02_FK.rotateX*IK_FK_CC.RightArmIKFK)+(R_arm_02_IK.rotateX*(1-IK_FK_CC.RightArmIKFK));\nR_arm_3.rotateY = (R_arm_02_FK.rotateY*IK_FK_CC.RightArmIKFK)+(R_arm_02_IK.rotateY*(1-IK_FK_CC.RightArmIKFK));\nR_arm_3.rotateZ = (R_arm_02_FK.rotateZ*IK_FK_CC.RightArmIKFK)+(R_arm_02_IK.rotateZ*(1-IK_FK_CC.RightArmIKFK));\nR_arm_4.rotateX = (R_arm_03_FK.rotateX*IK_FK_CC.RightArmIKFK)+(R_arm_03_IK.rotateX*(1-IK_FK_CC.RightArmIKFK));\nR_arm_4.rotateY = (R_arm_03_FK.rotateY*IK_FK_CC.RightArmIKFK)+(R_arm_03_IK.rotateY*(1-IK_FK_CC.RightArmIKFK));\nR_arm_4.rotateZ = (R_arm_03_FK.rotateZ*IK_FK_CC.RightArmIKFK)+(R_arm_03_IK.rotateZ*(1-IK_FK_CC.RightArmIKFK));\nR_armFK_03_CC.visibility = IK_FK_CC.RightArmIKFK;\nR_armFK_02_CC.visibility = IK_FK_CC.RightArmIKFK;\nR_armFK_01_CC.visibility = IK_FK_CC.RightArmIKFK;\nR_armIK_CC.visibility = (1-IK_FK_CC.RightArmIKFK);" ) cmds.setAttr("IK_FK_CC.overrideEnabled", 1) cmds.setAttr("IK_FK_CC.overrideColor", 18) #Organize the mess # Grouping and Organizing cmds.group("L_armIK_GRP", "L_PV0_GRP", n="L_IKArm_GRP") cmds.group("R_armIK_GRP", "R_PV_GRP", n="R_IKArm_GRP") cmds.group("L_IKArm_GRP", "R_IKArm_GRP", "L_clavicule_01_GRP", "R_clavicule_01_GRP", "L_arm_1", "R_arm_1", n="Connect this to the rest of the rig ARMS") cmds.group("Connect_this_to_the_rest_of_the_rig_ARMS", n="RdM_AutoARMS") cmds.delete('IK_FKShape', 'L_PV_Plane', 'ShoulderClusterHandle', 'ElbowClusterHandle', 'WristClusterHandle') cmds.select('IK_FK_CC') cmds.move(-1.195, 0, 10) #Lock and hide #FK cmds.select('L_armFK_03_CC', 'L_armFK_02_CC', 'L_armFK_01_CC', 'R_armFK_03_CC', 'R_armFK_02_CC', 'R_armFK_01_CC') FK = cmds.ls(sl=True) for T in FK: cmds.setAttr(str(T) + '.translateX', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.translateY', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.translateZ', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.scaleX', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.scaleY', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.scaleZ', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.visibility', lock=True, keyable=False, channelBox=False) #IK, Clavicule cmds.select('L_armIK_CC', 'R_armIK_CC', 'R_clavicule_01_CC ', 'L_clavicule_01_CC') IK = cmds.ls(sl=True) for T in IK: cmds.setAttr(str(T) + '.scaleX', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.scaleY', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.scaleZ', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.visibility', lock=True, keyable=False, channelBox=False) #Pole Vector cmds.select('L_PV01', 'R_PV01') PV = cmds.ls(sl=True) for T in PV: cmds.setAttr(str(T) + '.rotateX', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.rotateY', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.rotateZ', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.scaleX', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.scaleY', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.scaleZ', lock=True, keyable=False, channelBox=False) cmds.setAttr(str(T) + '.visibility', lock=True, keyable=False, channelBox=False) print 'DONE' Plane = cmds.nurbsPlane(ax=(0, 1, 0), w=2, lr=0.5, d=3, u=16, v=1, n='L_UpperPlane') cmds.move(-1, 0, 0, Plane[0] + ".scalePivot", Plane[0] + ".rotatePivot", absolute=True) Parent = cmds.pointConstraint('L_arm_2', Plane, mo=0) cmds.delete(Parent) cmds.setAttr("L_UpperPlane.rotateX", 90)
import maya.cmds as cmds cmds.duplicate('polySurface1') cmds.select('polySurface2') cmds.polyReduce(p=80, ch=False, kev=True) cmds.select('polySurface2') nor = [] nb = cmds.polyEvaluate(v=True) for i in range(nb): nor.append(0.367418) print(nor) cmds.select('polySurface2.vtx[:]') cmds.moveVertexAlongDirection(n=nor)