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')
一段粗糙简单的自动绑定代码
最新推荐文章于 2024-07-20 17:12:48 发布