Beispiel #1
0
 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)
Beispiel #3
0
    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
Beispiel #6
0
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')
Beispiel #7
0
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'
Beispiel #8
0
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')
Beispiel #9
0
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)
Beispiel #10
0
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)
Beispiel #11
0
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)
Beispiel #12
0
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)
Beispiel #13
0
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)