一段粗糙简单的自动绑定代码

import maya.cmds as mc
mc.select(all = True)
sel = mc.ls(sl=True)
if len(sel) > 0:
    mc.delete()
def createProxyRig():
    #createPelvis
    C_pelvis_LOC = createLoc('C_pelvis_LOC',(0,10,0))
    #CreateRightandLeftlegs
    L_hip_LOC = createLoc('L_hip_LOC',(2,10,0))
    R_hip_LOC = createLoc('R_hip_LOC',(-2,10,0))
    L_knee_LOC = createLoc('L_knee_LOC',(2,5,1))
    R_knee_LOC = createLoc('R_knee_LOC',(-2,5,1))
    L_ankle_LOC = createLoc('L_ankle_LOC',(2,1,0))
    R_ankle_LOC = createLoc('R_ankle_LOC',(-2,1,0))
    L_ballOfFoot_LOC = createLoc('L_ballOfFoot_LOC',(2,0,1))
    R_ballOfFoot_LOC = createLoc('R_ballOfFoot_LOC',(-2,0,1))
    L_toes_end_LOC = createLoc('L_toes_end_LOC',(2,0,2))
    R_toes_end_LOC = createLoc('R_toes_end_LOC',(-2,0,2))
    #CreateSpine
    C_waist_LOC = createLoc('C_waist_LOC',(0,11,0))
    C_lowerChest_LOC = createLoc('C_lowerChest_LOC',(0,12,0))
    C_sternum_LOC = createLoc('C_sternum_LOC',(0,13,0))
    C_upperChest_LOC = createLoc('C_upperChest_LOC',(0,14,0))
    C_neck_LOC = createLoc('C_neck_LOC',(0,15,0))
    C_midNeck_LOC = createLoc('C_midNeck_LOC',(0,16,0))
    C_head_LOC = createLoc('C_head_LOC',(0,17,0))
    C_headTop_end_LOC = createLoc('C_headTop_end_LOC',(0,19,0))
    #CreateArms
    L_clav_LOC = createLoc('L_clav_LOC',(1,14,0))
    R_clav_LOC = createLoc('R_clav_LOC',(-1,14,0))
    L_shoulder_LOC = createLoc('L_shoulder_LOC',(2,14,0))
    R_shoulder_LOC = createLoc('R_shoulder_LOC',(-2,14,0))
    L_elbow_LOC = createLoc('L_elbow_LOC',(6,14,-1))
    R_elbow_LOC = createLoc('R_elbow_LOC',(-6,14,-1))
    L_wrist_LOC = createLoc('L_wrist_LOC',(11,14,0))
    R_wrist_LOC = createLoc('R_wrist_LOC',(-11,14,0))
    #CreateHands
    L_palm_LOC = createLoc('L_palm_LOC',(12,14,0))
    R_palm_LOC = createLoc('R_palm_LOC',(-12,14,0))
    L_index01_LOC = createLoc('L_index01_LOC',(12.5,14,1))
    R_index01_LOC = createLoc('R_index01_LOC',(-12.5,14,1))
    L_index02_LOC = createLoc('L_index02_LOC',(13,14,1))
    R_index02_LOC = createLoc('R_index02_LOC',(-13,14,1))
    L_index03_LOC = createLoc('L_index03_LOC',(13.5,14,1))
    R_index03_LOC = createLoc('R_index03_LOC',(-13.5,14,1))
    L_index_end_LOC = createLoc('L_index_end_LOC',(14,14,1))
    R_index_end_LOC = createLoc('R_index_end_LOC',(-14,14,1))
    L_middle01_LOC = createLoc('L_middle01_LOC',(12.5,14,.5))
    R_middle01_LOC = createLoc('R_middle01_LOC',(-12.5,14,.5))
    L_middle02_LOC = createLoc('L_middle02_LOC',(13,14,.5))
    R_middle02_LOC = createLoc('R_middle02_LOC',(-13,14,.5))
    L_middle03_LOC = createLoc('L_middle03_LOC',(13.5,14,.5))
    R_middle03_LOC = createLoc('R_middle03_LOC',(-13.5,14,.5))
    L_middle_end_LOC = createLoc('L_middle_end_LOC',(14,14,.5))
    R_middle_end_LOC = createLoc('R_middle_end_LOC',(-14,14,.5))
    L_ring01_LOC = createLoc('L_ring01_LOC',(12.5,14,-.5))
    R_ring01_LOC = createLoc('R_ring01_LOC',(-12.5,14,-.5))
    L_ring02_LOC = createLoc('L_ring02_LOC',(13,14,-.5))
    R_ring02_LOC = createLoc('R_ring02_LOC',(-13,14,-.5))
    L_ring03_LOC = createLoc('L_ring03_LOC',(13.5,14,-.5))
    R_ring03_LOC = createLoc('R_ring03_LOC',(-13.5,14,-.5))
    L_ring_end_LOC = createLoc('L_ring_end_LOC',(14,14,-.5))
    R_ring_end_LOC = createLoc('R_ring_end_LOC',(-14,14,-.5))
    L_pinky01_LOC = createLoc('L_pinky01_LOC',(12.5,14,-1))
    R_pinky01_LOC = createLoc('R_pinky01_LOC',(-12.5,14,-1))
    L_pinky02_LOC = createLoc('L_pinky02_LOC',(13,14,-1))
    R_pinky02_LOC = createLoc('R_pinky02_LOC',(-13,14,-1))
    L_pinky03_LOC = createLoc('L_pinky03_LOC',(13.5,14,-1))
    R_pinky03_LOC = createLoc('R_pinky03_LOC',(-13.5,14,-1))
    L_pinky_end_LOC = createLoc('L_pinky_end_LOC',(14,14,-1))
    R_pinky_end_LOC = createLoc('R_pinky_end_LOC',(-14,14,-1))
    L_thumb01_LOC = createLoc('L_thumb01_LOC',(12,13.5,.5))
    R_thumb01_LOC = createLoc('R_thumb01_LOC',(-12,13.5,.5))
    L_thumb02_LOC = createLoc('L_thumb02_LOC',(12,13,1))
    R_thumb02_LOC = createLoc('R_thumb02_LOC',(-12,13,1))
    L_thumb03_LOC = createLoc('L_thumb03_LOC',(12,12.5,1.5))
    R_thumb03_LOC = createLoc('R_thumb03_LOC',(-12,12.5,1.5))
    L_thumb_end_LOC = createLoc('L_thumb_end_LOC',(12,12,2))
    R_thumb_end_LOC = createLoc('R_thumb_end_LOC',(-12,12,2))
    #groupLocators
    mc.group('*_LOC',n='LOCATORS')
    mc.select(cl=True)
    createLineLink(C_pelvis_LOC,L_hip_LOC)
    createLineLink(C_pelvis_LOC,R_hip_LOC)
    createLineLink(L_hip_LOC,L_knee_LOC)
    createLineLink(L_knee_LOC,L_ankle_LOC)
    createLineLink(L_ankle_LOC,L_ballOfFoot_LOC)
    createLineLink(L_ballOfFoot_LOC,L_toes_end_LOC)
    createLineLink(C_pelvis_LOC,C_waist_LOC)
    createLineLink(C_waist_LOC,C_lowerChest_LOC)
    createLineLink(C_lowerChest_LOC,C_sternum_LOC)
    createLineLink(C_sternum_LOC,C_upperChest_LOC)
    createLineLink(C_upperChest_LOC,C_neck_LOC)
    createLineLink(C_neck_LOC,C_midNeck_LOC)
    createLineLink(C_midNeck_LOC,C_head_LOC)
    createLineLink(C_head_LOC,C_headTop_end_LOC)
    createLineLink(C_upperChest_LOC,L_clav_LOC)
    createLineLink(C_upperChest_LOC,R_clav_LOC)
    createLineLink(L_clav_LOC,L_shoulder_LOC)
    createLineLink(L_shoulder_LOC,L_elbow_LOC)
    createLineLink(L_elbow_LOC,L_wrist_LOC)
    createLineLink(L_wrist_LOC,L_palm_LOC)
    
    createLineLink(L_palm_LOC,L_index01_LOC)
    createLineLink(L_index01_LOC,L_index02_LOC)
    createLineLink(L_index02_LOC,L_index03_LOC)
    createLineLink(L_index03_LOC,L_index_end_LOC)
    
    createLineLink(L_palm_LOC,L_middle01_LOC)
    createLineLink(L_middle01_LOC,L_middle02_LOC)
    createLineLink(L_middle02_LOC,L_middle03_LOC)
    createLineLink(L_middle03_LOC,L_middle_end_LOC)
    
    createLineLink(L_palm_LOC,L_ring01_LOC)
    createLineLink(L_ring01_LOC,L_ring02_LOC)
    createLineLink(L_ring02_LOC,L_ring03_LOC)
    createLineLink(L_ring03_LOC,L_ring_end_LOC)
    
    createLineLink(L_palm_LOC,L_pinky01_LOC)
    createLineLink(L_pinky01_LOC,L_pinky02_LOC)
    createLineLink(L_pinky02_LOC,L_pinky03_LOC)
    createLineLink(L_pinky03_LOC,L_pinky_end_LOC)
    
    createLineLink(L_palm_LOC,L_thumb01_LOC)
    createLineLink(L_thumb01_LOC,L_thumb02_LOC)
    createLineLink(L_thumb02_LOC,L_thumb03_LOC)
    createLineLink(L_thumb03_LOC,L_thumb_end_LOC)
    
    mc.group('curve*', n='CURVES')
    mc.select(cl=True)

def createLoc(locName, pos):
    myLoc = mc.spaceLocator( n = locName)
    myLoc = myLoc[0]
    mc.setAttr(myLoc+'.tx',pos[0])
    mc.setAttr(myLoc+'.ty',pos[1])
    mc.setAttr(myLoc+'.tz',pos[2])
    mc.setAttr(myLoc+'Shape.localScaleX',.2)
    mc.setAttr(myLoc+'Shape.localScaleY',.2)
    mc.setAttr(myLoc+'Shape.localScaleZ',.2)
    
    return(myLoc)
    
def createLineLink(locOne,locTwo):
    checkLOrC = locOne.split('_')
    checkLOrC = checkLOrC[0]
    
    myLine = mc.curve(d=1,p=[(0,0,0),(0,0,0)])
    mc.select(myLine+'.cv[0]')
    cOne = mc.cluster(n='cOne')
    cOne = cOne[1]
    mc.select(myLine+'.cv[1]')
    cTwo = mc.cluster(n='cTwo')
    cTwo = cTwo[1]
    mc.parent(cOne, locOne)
    mc.setAttr(cOne+'.tx',0)
    mc.setAttr(cOne+'.ty',0)
    mc.setAttr(cOne+'.tz',0)
    mc.setAttr(cOne+'.v',0)
    mc.parent(cTwo, locTwo)
    mc.setAttr(cTwo+'.tx',0)
    mc.setAttr(cTwo+'.ty',0)
    mc.setAttr(cTwo+'.tz',0)
    mc.setAttr(cTwo+'.v',0)
    mc.setAttr(myLine+'.template', True)
    mc.select(cl=True)
    if checkLOrC == "L":
        rLocOne = locOne.replace('L_','R_')
        rLocTwo = locTwo.replace('L_','R_')
        createLineLink(rLocOne, rLocTwo)

def mirrorTool(type):
    if type == 'selection':
        mirrorObjs = mc.ls(sl=True)
    elif type =='L':
        mc.select('L_*')
        mirrorObjs = mc.ls(sl=True,tr=True)
    elif type =='R':
        mc.select('R_*')
        mirrorObjs = mc.ls(sl=True,tr=True) 
    for object in mirrorObjs:
        side = object.split('_') 
        side = side[0]
        if side == 'L':
            mirroredSide = object.replace('L_','R_')
            mc.setAttr(mirroredSide+'.tx', -1*mc.getAttr(object+'.tx'))
            mc.setAttr(mirroredSide+'.ty', mc.getAttr(object+'.ty'))
            mc.setAttr(mirroredSide+'.tz', mc.getAttr(object+'.tz'))
        elif side == 'R':
            mirroredSide = object.replace('R_','L_')
            mc.setAttr(mirroredSide+'.tx', -1*mc.getAttr(object+'.tx'))
            mc.setAttr(mirroredSide+'.ty', mc.getAttr(object+'.ty'))
            mc.setAttr(mirroredSide+'.tz', mc.getAttr(object+'.tz'))
def createJNTS():
    mc.select('*_LOC')
    LOCs = mc.ls(sl=True)
    for loc in LOCs:
        jntName = loc.replace('_LOC','_JNT')
        mc.select(cl=True)
        mc.joint(n=jntName, p=(mc.getAttr(loc+'.tx'),mc.getAttr(loc+'.ty'),mc.getAttr(loc+'.tz')))
    mc.parent('L_hip_JNT','R_hip_JNT','C_waist_JNT','C_pelvis_JNT')
    parentJNTs('L_hip_JNT','L_knee_JNT')
    parentJNTs('L_knee_JNT','L_ankle_JNT')
    parentJNTs('L_ankle_JNT','L_ballOfFoot_JNT')
    parentJNTs('L_ballOfFoot_JNT','L_toes_end_JNT')
#    mc.parent('C_waist_JNT','C_pelvis_JNT')
    mc.parent('C_lowerChest_JNT','C_waist_JNT')
    mc.parent('C_sternum_JNT','C_lowerChest_JNT')
    mc.parent('C_upperChest_JNT','C_sternum_JNT')
    mc.parent('C_neck_JNT','C_upperChest_JNT')
    mc.parent('C_midNeck_JNT','C_neck_JNT')
    mc.parent('C_head_JNT','C_midNeck_JNT')
    mc.parent('C_headTop_end_JNT','C_head_JNT')
    mc.parent('L_clav_JNT','C_upperChest_JNT')
    mc.parent('R_clav_JNT','C_upperChest_JNT')
    parentJNTs('L_clav_JNT','L_shoulder_JNT')
    parentJNTs('L_shoulder_JNT','L_elbow_JNT')
    parentJNTs('L_elbow_JNT','L_wrist_JNT')
    parentJNTs('L_wrist_JNT','L_palm_JNT')
    
    parentJNTs('L_palm_JNT','L_index01_JNT')
    parentJNTs('L_index01_JNT','L_index02_JNT')
    parentJNTs('L_index02_JNT','L_index03_JNT')
    parentJNTs('L_index03_JNT','L_index_end_JNT')
    
    parentJNTs('L_palm_JNT','L_middle01_JNT')
    parentJNTs('L_middle01_JNT','L_middle02_JNT')
    parentJNTs('L_middle02_JNT','L_middle03_JNT')
    parentJNTs('L_middle03_JNT','L_middle_end_JNT')
    
    parentJNTs('L_palm_JNT','L_ring01_JNT')
    parentJNTs('L_ring01_JNT','L_ring02_JNT')
    parentJNTs('L_ring02_JNT','L_ring03_JNT')
    parentJNTs('L_ring03_JNT','L_ring_end_JNT')
    
    parentJNTs('L_palm_JNT','L_pinky01_JNT')
    parentJNTs('L_pinky01_JNT','L_pinky02_JNT')
    parentJNTs('L_pinky02_JNT','L_pinky03_JNT')
    parentJNTs('L_pinky03_JNT','L_pinky_end_JNT')
    
    parentJNTs('L_palm_JNT','L_thumb01_JNT')
    parentJNTs('L_thumb01_JNT','L_thumb02_JNT')
    parentJNTs('L_thumb02_JNT','L_thumb03_JNT')
    parentJNTs('L_thumb03_JNT','L_thumb_end_JNT')
    mc.select('C_pelvis_JNT',hi=True)
    mc.joint(e=True, oj='xyz',sao ='yup' )
    mc.select('*_end_JNT')
    endJNTs = mc.ls(sl=True)
    alignEndJoints(endJNTs)
    mc.delete('LOCATORS','CURVES')
    mc.group(em = True, n = 'JNTs')
    mc.parent('C_pelvis_JNT', 'JNTs')
    mc.select(cl=True)
def alignEndJoints(endJNTs):
    for endJNT in endJNTs:
        parentJNT = mc.listRelatives(endJNT,p=True)
        print(parentJNT)
#        mc.parent(endJNT,w=True)
        myConst = mc.aimConstraint(parentJNT[0], endJNT, aim = (-1,0,0),u=(0,1,0))
        mc.delete(myConst)
        mc.parent(endJNT,w=True)
        mc.setAttr(endJNT+'.jointOrientX',mc.getAttr(endJNT+'.rx'))
        mc.setAttr(endJNT+'.rx',0)
        mc.setAttr(endJNT+'.jointOrientY',mc.getAttr(endJNT+'.ry'))
        mc.setAttr(endJNT+'.ry',0)
        mc.setAttr(endJNT+'.jointOrientZ',mc.getAttr(endJNT+'.rz'))
        mc.setAttr(endJNT+'.rz',0)
        mc.parent(endJNT, parentJNT)
    
def parentJNTs(parentJNT,childJNT):
    mc.parent(childJNT,parentJNT)
#    checkSide = childJNT.split('_')
#   if checkSide[0]=='L':
    rChildJNT = childJNT.replace('L_','R_')
    rParentJNT = parentJNT.replace('L_','R_')
    mc.parent(rChildJNT,rParentJNT)
    
def alignTool(aligned, target):
    mc.parent(aligned, target)
    mc.setAttr(aligned + '.tx',0)
    mc.setAttr(aligned + '.ty',0)
    mc.setAttr(aligned + '.tz',0)
    mc.setAttr(aligned + '.rx',0)
    mc.setAttr(aligned + '.ry',0)
    mc.setAttr(aligned + '.rz',0)
    mc.parent(aligned, w=True)
    
def createZereoGRP(ctrl):
    mc.group(ctrl, n= ctrl+'_OFFSET_GRP')
    mc.group(ctrl+'_OFFSET_GRP', n =ctrl+'_ZERO_GRP')
    return(ctrl+'_ZERO_GRP')
def createControlRig():
    dupSkeleton('C_pelvis_JNT','_JNT1','_IK_JNT')
    dupSkeleton('C_pelvis_JNT','_JNT1','_FK_JNT')
    mc.parent('C_pelvis_IK_JNT','L_hip_IK_JNT','R_hip_IK_JNT','L_shoulder_IK_JNT','R_shoulder_IK_JNT',w=True)
    mc.delete('L_clav_IK_JNT','R_clav_IK_JNT','L_palm_IK_JNT','R_palm_IK_JNT','L_ballOfFoot_IK_JNT','R_ballOfFoot_IK_JNT')
    mc.group('C_pelvis_IK_JNT','L_hip_IK_JNT','R_hip_IK_JNT','L_shoulder_IK_JNT','R_shoulder_IK_JNT',n='IKs')
    mc.group('C_pelvis_FK_JNT',n='FKs')
    mc.parent('IKs','JNTs')
    mc.select('C_pelvis_FK_JNT', hi=True)
    mc.select('*_end*',d=True)
    mc.select('*palm*',d=True)
    sel = mc.ls(sl=True)
    for item in sel:
        newName = item.replace('_JNT','_CTRL')
        myCtrl = mc.circle(n = newName, nr=(1,0,0))
        myCtrl = myCtrl[0]
        zero = createZereoGRP(myCtrl)
       # mc.setAttr('C_pelvis_FK_CTRL_ZERO_GRP' + '.rz',-90)
        alignTool(zero, item)
        mc.orientConstraint(myCtrl,item)
    mc.parent('C_waist_FK_CTRL_ZERO_GRP', 'R_hip_FK_CTRL_ZERO_GRP', 'L_hip_FK_CTRL_ZERO_GRP','C_pelvis_FK_CTRL')
    mc.parent('C_lowerChest_FK_CTRL_ZERO_GRP', 'C_waist_FK_CTRL')
    mc.parent('C_sternum_FK_CTRL_ZERO_GRP', 'C_lowerChest_FK_CTRL')
    mc.parent('C_upperChest_FK_CTRL_ZERO_GRP', 'C_sternum_FK_CTRL')
    mc.parent('C_neck_FK_CTRL_ZERO_GRP', 'L_clav_FK_CTRL_ZERO_GRP', 'R_clav_FK_CTRL_ZERO_GRP', 'C_upperChest_FK_CTRL')
    mc.parent('C_midNeck_FK_CTRL_ZERO_GRP', 'C_neck_FK_CTRL')        
    mc.parent('C_head_FK_CTRL_ZERO_GRP', 'C_midNeck_FK_CTRL')        
    mc.parent('L_shoulder_FK_CTRL_ZERO_GRP', 'L_clav_FK_CTRL')        
    mc.parent('L_elbow_FK_CTRL_ZERO_GRP','L_shoulder_FK_CTRL')       
    mc.parent('L_wrist_FK_CTRL_ZERO_GRP', 'L_elbow _FK_CTRL')              
    mc.parent('L_index01_FK_CTRL_ZERO_GRP', 'L_middle01_FK_CTRL_ZERO_GRP', 'L_ring01_FK_CTRL_ZERO_GRP', 'L_pinky01_FK_CTRL_ZERO_GRP','L_thumb01_FK_CTRL_ZERO_GRP', 'L_wrist_FK_CTRL')
    mc.parent('L_index02_FK_CTRL_ZERO_GRP', 'L_index01_FK_CTRL')        
    mc.parent('L_index03_FK_CTRL_ZERO_GRP', 'L_index02_FK_CTRL')      
    mc.parent('L_middle02_FK_CTRL_ZERO_GRP', 'L_middle01_FK_CTRL')        
    mc.parent('L_middle03_FK_CTRL_ZERO_GRP', 'L_middle02_FK _CTRL')        
    mc.parent('L_ring02_FK_CTRL_ZERO_GRP', 'L_ring01_FK_CTRL')       
    mc.parent('L_ring03_FK_CTRL_ZERO_GRP', 'L_ring02_FK_CTRL')        
    mc.parent('L_pinky02_FK_CTRL_ZERO_GRP', 'L_pinky01_FK_CTRL')        
    mc.parent('L_pinky03_FK_CTRL_ZERO_GRP', 'L_pinky02_FK_CTRL')        
    mc.parent('L_thumb02_FK_CTRL_ZERO_GRP', 'L_thumb01_FK_CTRL')        
    mc.parent('L_thumb03_FK_CTRL_ZERO_GRP', 'L_thumb02_FK_CTRL')        
    mc.parent('L_knee_FK_CTRL_ZERO_GRP', 'L_hip_FK_CTRL')        
    mc.parent('L_ankle_FK_CTRL_ZERO_GRP', 'L_knee_FK_CTRL_ZERO_GRP')        
    mc.parent('L_ballOfFoot_FK_CTRL_ZERO_GRP','L_ankle_FK_CTRL')        
    mc.parent('R_shoulder_FK_CTRL_ZERO_GRP', 'R_clav_FK_CTRL')        
    mc.parent('R_elbow_FK_CTRL_ZERO_GRP', 'R_shoulder_FK_CTRL')        
    mc.parent('R_wrist_FK_CTRL_ZERO_GRP', 'R_elbow_FK_CTRL')                
    mc.parent('R_index01_FK_CTRL_ZERO_GRP', 'R_middle01_FK_CTRL_ZERO_GRP', 'R_ring01_FK_CTRL_ZERO_GRP', 'R_pinky01_FK_CTRL_ZERO_GRP','R_thumb01_FK_CTRL_ZERO_GRP', 'R_wrist_FK_CTRL')
    mc.parent('R_index02_FK_CTRL_ZERO_GRP', 'R_index01_FK_CTRL')        
    mc.parent('R_index03_FK_CTRL_ZERO_GRP', 'R_index02_FK_CTRL')        
    mc.parent('R_middle02_FK_CTRL_ZERO_GRP', 'R_middle01_FK_CTRL')        
    mc.parent('R_middle03_FK_CTRL_ZERO_GRP', 'R_middle02_FK_CTRL')        
    mc.parent('R_ring02_FK_CTRL_ZERO_GRP', 'R_ring01_FK_CTRL')       
    mc.parent('R_ring03_FK_CTRL_ZERO_GRP', 'R_ring02_FK_CTRL')        
    mc.parent('R_pinky02_FK_CTRL_ZERO_GRP', 'R_pinky01_FK_CTRL')        
    mc.parent('R_pinky03_FK_CTRL_ZERO_GRP', 'R_pinky02_FK_CTRL')       
    mc.parent('R_thumb02_FK_CTRL_ZERO_GRP', 'R_thumb01_FK_CTRL')        
    mc.parent('R_thumb03_FK_CTRL_ZERO_GRP', 'R_thumb02_FK_CTRL')       
    mc.parent('R_knee_FK_CTRL_ZERO_GRP', 'R_hip_FK_CTRL')        
    mc.parent('R_ankle_FK_CTRL_ZERO_GRP', 'R_knee_FK_CTRL_ZERO_GRP')        
    mc.parent ('R_ballOfFoot_FK_CTRL_ZERO_GRP', 'R_ankle_FK_CTRL')
    mc.group('C_pelvis_FK_CTRL_ZERO_GRP', n = 'CTRLs')
    
    mc.select(cl=True)
    mc.ikHandle(ee= 'L_ankle_IK_JNT',sj = 'L_hip_IK_JNT', n = 'L_leg_IK')
    mc.ikHandle(ee= 'R_ankle_IK_JNT',sj = 'R_hip_IK_JNT', n = 'R_leg_IK')
    mc.ikHandle(ee= 'L_wrist_IK_JNT',sj = 'L_shoulder_IK_JNT', n = 'L_arm_IK')
    mc.ikHandle(ee= 'R_wrist_IK_JNT',sj = 'R_shoulder_IK_JNT', n = 'R_arm_IK')
    mc.circle(n='L_leg_IK_CTRL', nr= (0,1,0))
    mc.circle(n='R_leg_IK_CTRL', nr= (0,1,0))
    mc.circle(n='L_arm_IK_CTRL', nr= (1,0,0))
    mc.circle(n='R_arm_IK_CTRL', nr= (1,0,0))
    lLegZero = createZereoGRP('L_leg_IK_CTRL')
    rLegZero = createZereoGRP('R_leg_IK_CTRL')
    lArmZero = createZereoGRP('L_arm_IK_CTRL')
    rArmZero = createZereoGRP('R_arm_IK_CTRL')
    alignTool(lLegZero, 'L_leg_IK')
    alignTool(rLegZero, 'R_leg_IK')
    alignTool(lArmZero, 'L_arm_IK')
    alignTool(rArmZero, 'R_arm_IK')
    mc.pointConstraint('L_leg_IK_CTRL','L_leg_IK')
    mc.pointConstraint('R_leg_IK_CTRL','R_leg_IK')
    mc.pointConstraint('L_arm_IK_CTRL','L_arm_IK')
    mc.pointConstraint('R_arm_IK_CTRL','R_arm_IK')
    mc.parent(lLegZero,rLegZero,lArmZero,rArmZero, 'CTRLs')
    mc.group('L_leg_IK','R_leg_IK','L_arm_IK','R_arm_IK',n='EXTRAS')
    createPoleVector('L_elbow_PV_CTRL','L_shoulder_IK_JNT','L_elbow_IK_JNT','L_wrist_IK_JNT','L_arm_IK')
    createPoleVector('R_elbow_PV_CTRL','R_shoulder_IK_JNT','R_elbow_IK_JNT','R_wrist_IK_JNT','R_arm_IK')
    createPoleVector('L_knee_PV_CTRL','L_hip_IK_JNT','L_knee_IK_JNT','L_ankle_IK_JNT','L_leg_IK')
    createPoleVector('R_knee_PV_CTRL','R_hip_IK_JNT','R_knee_IK_JNT','R_ankle_IK_JNT','R_leg_IK')
    '''mc.setAttr('CTRLs.v',0)
    mc.setAttr('EXTRAS.v',0)'''
    mc.select(cl=True)
    
def createPoleVector(locName, jnt1, jnt2, jnt3, ik):
    mc.spaceLocator(n =locName) 
    zero = createZereoGRP(locName) 
    pc = mc.pointConstraint( jnt1, jnt2, jnt3, zero, mo =False)  
    mc.delete(pc)
    aim = mc.aimConstraint(jnt2, zero, aim = (1,0,0))
    mc.delete(aim)
    mc.move(4,r=True,wd= True, os = True, x=True)
    mc.poleVectorConstraint(locName, ik)
    mc.parent(zero,'CTRLs')
    


def dupSkeleton(dup, search, replace):
    mc.duplicate(dup, rc = True)
    mc.select(dup+'1', hi=True)
    sel = mc.ls(sl=True)
    for item in sel:
        newName = item.replace(search, replace)
        mc.select(item)
        mc.rename(newName)
def win(myWin):
    if mc.window(myWin,exists=True):
        mc.deleteUI(myWin)
    mc.window(myWin)
    mc.columnLayout()
    mc.button(l='Create Proxy Rig', c='createProxyRig()')
    #mc.button(l='Mirro Selection'), c='mirrorTool("selection")')
    mc.button(l='Mirro Selection', c='mirrorTool("selection")')
    mc.button(l='Mirro Left --> Right', c='mirrorTool("L")')
    mc.button(l='Mirro Right --> Left', c='mirrorTool("R")')
    mc.button(l='Create Skeleton from Proxy Rig', c='createJNTS()')
    mc.button(l='Create Control Rig', c='createControlRig()' )

    mc.showWindow(myWin)
win('mySkeletonWindow')



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三七3333333

少年我觉得你骨骼惊奇打赏一下~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值