list = [('tail_01_setup_jnt','tail_01_IK_ctrl_grp'),('tail_03_setup_jnt','tail_02_IK_ctrl_grp'),('tail_05_setup_jnt','tail_03_IK_ctrl_grp'),('tail_01_setup_jnt','tail_01_IK_jnt'),('tail_02_setup_jnt','tail_02_IK_jnt'),('tail_03_setup_jnt','tail_03_IK_jnt'),('tail_04_setup_jnt','tail_04_IK_jnt'),('tail_05_setup_jnt','tail_05_IK_jnt'),('tail_01_setup_jnt','tail_01_length_jnt'),('tail_02_setup_jnt','tail_02_length_jnt'),('tail_03_setup_jnt','tail_03_length_jnt'),('tail_04_setup_jnt','tail_04_length_jnt'),('tail_05_setup_jnt','tail_05_length_jnt'),('tail_01_setup_jnt','tail_start_length_jnt'),('tail_05_setup_jnt','tail_end_length_jnt')] for each in list: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)]) cmds.rename('tail_crv') nameOfLoc = ['tail_01_loc','tail_02_loc','tail_03_loc','tail_04_loc','tail_05_loc'] for each in nameOfLoc: cmds.spaceLocator(n=each) toGetLocPos = [('tail_01_loc.translateY',0),('tail_02_loc.translateY',2.5),('tail_03_loc.translateY',5),('tail_04_loc.translateY',7.5),('tail_05_loc.translateY',10)] for each in toGetLocPos: cmds.setAttr(each[0],each[1]) toConnectLoc = [('tail_01_loc.worldPosition[0]','tail_crv.controlPoints[0]'),('tail_02_loc.worldPosition[0]','tail_crv.controlPoints[1]'),('tail_03_loc.worldPosition[0]','tail_crv.controlPoints[2]'),('tail_04_loc.worldPosition[0]','tail_crv.controlPoints[3]'),('tail_05_loc.worldPosition[0]','tail_crv.controlPoints[4]')] for each in toConnectLoc: cmds.connectAttr(each[0],each[1]) list = [('tail_01_setup_jnt','tail_01_loc'),('tail_02_setup_jnt','tail_02_loc'),('tail_03_setup_jnt','tail_03_loc'),('tail_04_setup_jnt','tail_04_loc'),('tail_05_setup_jnt','tail_05_loc')] for each in list: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) list = [('tail_01_IK_ctrl','tail_01_loc'),('tail_01_IK_ctrl','tail_02_loc'),('tail_02_IK_ctrl','tail_02_loc'),('tail_02_IK_ctrl','tail_03_loc'),('tail_02_IK_ctrl','tail_04_loc'),('tail_03_IK_ctrl','tail_04_loc'),('tail_03_IK_ctrl','tail_05_loc')] for each in list: cmds.parentConstraint(each[0],each[1],mo=True) cmds.select('tail_01_IK_jnt','tail_05_IK_jnt','tail_crv') cmds.ikHandle(n='tail_ikh',sol='ikSplineSolver',ccv=0,pcv =0) list = [('multiplyDivide','tail_stretch_01_mult'),('multiplyDivide','tail_stretch_02_mult')] for each in list: cmds.shadingNode(each[0],n=each[1],asUtility=1) cmds.setAttr('tail_stretch_01_mult.operation',2) cmds.arclen('tail_crv',ch = True) toConnectAttr = [('tail_03_IK_ctrl.rotateX','tail_ikh.twist'),('curveInfo1.arcLength','tail_stretch_01_mult.input1X'),('tail_stretch_01_mult.outputX','tail_stretch_02_mult.input1X'),('tail_02_length_jnt.translateX','tail_stretch_02_mult.input2X'),('tail_stretch_02_mult.outputX','tail_02_IK_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_03_IK_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_04_IK_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_05_IK_jnt.translateX'),('tail_end_length_jnt.translateX','tail_stretch_01_mult.input2X')] for each in toConnectAttr: cmds.connectAttr(each[0],each[1]) #create IKFK tail list = ['tail_01_bln_jnt','tail_02_bln_jnt','tail_03_bln_jnt','tail_04_bln_jnt','tail_05_bln_jnt'] for each in list: cmds.joint(n=each) list = [('tail_01_setup_jnt','tail_01_bln_jnt'),('tail_02_setup_jnt','tail_02_bln_jnt'),('tail_03_setup_jnt','tail_03_bln_jnt'),('tail_04_setup_jnt','tail_04_bln_jnt'),('tail_05_setup_jnt','tail_05_bln_jnt')] for each in list: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) list = [('tail_01_FK_jnt','tail_01_bln_jnt'),('tail_02_FK_jnt','tail_02_bln_jnt'),('tail_03_FK_jnt','tail_03_bln_jnt'),('tail_04_FK_jnt','tail_04_bln_jnt'),('tail_05_FK_jnt','tail_05_bln_jnt'),('tail_01_IK_jnt','tail_01_bln_jnt'),('tail_02_IK_jnt','tail_02_bln_jnt'),('tail_03_IK_jnt','tail_03_bln_jnt'),('tail_04_IK_jnt','tail_04_bln_jnt'),('tail_05_IK_jnt','tail_05_bln_jnt')] for each in list: cmds.parentConstraint(each[0],each[1],mo=True) cmds.curve(n='tail_ik_fk_switch',d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)]) cmds.group(n='tail_ik_fk_switch_grp') cmds.setAttr('tail_ik_fk_switch.visibility',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.translateX',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.translateY',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.translateZ',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.rotateX',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.rotateY',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.rotateZ',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.overrideEnabled' ,True) cmds.setAttr('tail_ik_fk_switch.overrideColor' ,15) cmds.addAttr('tail_ik_fk_switch',sn='IKFK', min = 0, max=1 ,k=1) cmds.parentConstraint('tail_01_bln_jnt','tail_ik_fk_switch_grp') cmds.shadingNode('reverse',n='tail_ik_rev',asUtility=1) toConnectAttr = [('tail_ik_fk_switch.IKFK','tail_01_bln_jnt_parentConstraint1.tail_01_FK_jntW0'),('tail_ik_fk_switch.IKFK','tail_ik_rev.inputX'),('tail_ik_rev.outputX','tail_01_bln_jnt_parentConstraint1.tail_01_IK_jntW1'),('tail_ik_fk_switch.IKFK','tail_02_bln_jnt_parentConstraint1.tail_02_FK_jntW0'),('tail_ik_rev.outputX','tail_02_bln_jnt_parentConstraint1.tail_02_IK_jntW1'),('tail_ik_fk_switch.IKFK','tail_03_bln_jnt_parentConstraint1.tail_03_FK_jntW0'),('tail_ik_rev.outputX','tail_03_bln_jnt_parentConstraint1.tail_03_IK_jntW1'),('tail_ik_fk_switch.IKFK','tail_04_bln_jnt_parentConstraint1.tail_04_FK_jntW0'),('tail_ik_rev.outputX','tail_04_bln_jnt_parentConstraint1.tail_04_IK_jntW1'),('tail_ik_fk_switch.IKFK','tail_05_bln_jnt_parentConstraint1.tail_05_FK_jntW0'),('tail_ik_rev.outputX','tail_05_bln_jnt_parentConstraint1.tail_05_IK_jntW1'),('tail_ik_rev.outputX','tail_01_IK_ctrl_grp.visibility'),('tail_ik_rev.outputX','tail_02_IK_ctrl_grp.visibility'),('tail_ik_rev.outputX','tail_03_IK_ctrl_grp.visibility'),('tail_ik_fk_switch.IKFK','tail_01_FK_ctrl_grp.visibility')] for each in toConnectAttr: cmds.connectAttr(each[0],each[1]) #create group list = ['jnt_grp','extra','ctrl_grp','rename'] for each in list: cmds.group(n=each,em=True) list = [('tail_01_setup_jnt','extra'),('tail_01_FK_ctrl_grp','ctrl_grp'),('tail_01_FK_jnt','jnt_grp'),('tail_01_IK_ctrl_grp','ctrl_grp'),('tail_02_IK_ctrl_grp','ctrl_grp'),('tail_03_IK_ctrl_grp','ctrl_grp'),('tail_01_IK_jnt','jnt_grp'),('tail_start_length_jnt','extra'),('tail_01_length_jnt','extra'),('tail_crv','extra'),('tail_01_loc','extra'),('tail_02_loc','extra'),('tail_03_loc','extra'),('tail_04_loc','extra'),('tail_05_loc','extra'),('tail_ikh','extra'),('extra','rename'),('jnt_grp','rename'),('ctrl_grp','rename')] for each in list: cmds.parent(each[0],each[1]) cmds.setAttr('extra.visibility',0) def createLocator(): list = ['start_loc','end_loc'] for each in list: cmds.spaceLocator(n=each) cmds.setAttr (each +'.rotateX',keyable = False, cb = False, lock = True) cmds.setAttr (each +'.rotateY',keyable = False, cb = False, lock = True) cmds.setAttr (each +'.rotateZ',keyable = False, cb = False, lock = True) cmds.setAttr (each +'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr (each +'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr (each +'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr('start_loc.translateX',-5) cmds.setAttr('end_loc.translateX',10) def createMotionPath(): def progressBarWindow(): # this command opens the window window = cmds.window('MotionPathSetupProgress',title='Building') cmds.columnLayout() cmds.progressBar('MotionPathSetupProgress',maxValue=10, width=300) cmds.showWindow( window ) progressBarWindow() # the command to find value list = ['start_loc','end_loc'] for each in list: cmds.setAttr(each + '.visibility',0) def vector_sub(p1,p2): x = p1[0] - p2[0] y = p1[1] - p2[1] z = p1[2] - p2[2] return [x,y,z] def vector_add(p1,p2): x = p1[0] + p2[0] y = p1[1] + p2[1] z = p1[2] + p2[2] return [x,y,z] def vector_div(p,f): x = p[0] / f y = p[1] / f z = p[2] / f return [x,y,z] def vector_mult(p,f): x = p[0] * f y = p[1] * f z = p[2] * f return [x,y,z] p1 = cmds.xform(list[0], q=1, ws=1, t=1) p2 = cmds.xform(list[1], q=1, ws=1, t=1) print(p2) n = cmds.intField('numbersOfLocator',q=1,value=1) direction = vector_sub(p2,p1) direction = vector_div(direction,n) points = [] for i in range(n): p = vector_add(p1,vector_mult(direction,i)) points.append(p) points.append(p2) # the command to change the progress bar cmds.progressBar('MotionPathSetupProgress', edit=True, step=1) # the command to find motion path in between value plus = n mpInBetween = 1/plus # the command to create curve crv = cmds.curve(d=1, p=[p1,p2]) cmds.rename('mp_crv') cmds.setAttr('.template',1) cmds.rebuildCurve('mp_crv',d=2, rt=0, s=n-1) # the command to change the progress bar cmds.progressBar('MotionPathSetupProgress', edit=True, step=1) # the command to create joints cmds.joint(n='main_mp_0_jnt',p=[0,0,0]) number = len(points) for each in range(number): cmds.joint(n='main_mp_%s_jnt'%(each+1),p=points[each]) cmds.parent(w=True) forDel = cmds.aimConstraint('end_loc','main_mp_%s_jnt'%(each+1),mo=False) cmds.delete(forDel) m=n+1 for each in range(number): cmds.parent('main_mp_%s_jnt'%(m-each),'main_mp_%s_jnt'%(n-each)) cmds.parent('main_mp_1_jnt',w=True) cmds.delete('main_mp_0_jnt') forDel = cmds.orientConstraint('main_mp_1_jnt','main_mp_%s_jnt'%(n+1)) cmds.delete(forDel) cmds.makeIdentity('main_mp_1_jnt',apply=True,translate=True,rotate=True) # the command to change the progress bar cmds.progressBar('MotionPathSetupProgress', edit=True, step=1) # the command to create controllers number = len(points) for each in range(number): ctrl = cmds.curve(n='mp_%s_ctrl'%(each+1),d=1, p=[(0, 0.5, 0.5),(0, -0.5, 0.5),(0, -0.5, -0.5),(0, 0.5, -0.5),(0, 0.5, 0.5)]) cmds.setAttr (ctrl +'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr (ctrl +'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr (ctrl +'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr (ctrl + ".overrideEnabled" ,True) cmds.setAttr (ctrl + ".overrideColor" ,18) cmds.setAttr (ctrl +'.visibility',keyable = False, cb = False, lock = True) grp = cmds.group(n='mp_%s_ctrl_grp'%(each+1)) forDel = cmds.parentConstraint('main_mp_%s_jnt'%(each+1),grp,mo=False) cmds.delete(forDel) # the command to change the progress bar cmds.progressBar('MotionPathSetupProgress', edit=True, step=1) # the command to create locator number = len(points) for each in range(number): cmds.spaceLocator(n='aim_up_%s_loc'%(each+1)) cmds.setAttr('.visibility',0) forDel = cmds.parentConstraint('main_mp_%s_jnt'%(each+1),'aim_up_%s_loc'%(each+1),mo=False) cmds.delete(forDel) cmds.setAttr('aim_up_%s_loc.translateY'%(each+1),2.5) cmds.parent('aim_up_%s_loc'%(each+1),'mp_%s_ctrl'%(each+1)) # the command to change the progress bar cmds.progressBar('MotionPathSetupProgress', edit=True, step=2) # the command to create node and motion path number = len(points) for each in range(number): jnt = cmds.joint(n='mp_%s_jnt'%(each+1),p=points[each]) cmds.setAttr('.visibility',0) cmds.shadingNode('plusMinusAverage',n = 'mp_%s_plm'%(each+1),asUtility=1) cmds.shadingNode('plusMinusAverage',n = 'mp_sec_%s_plm'%(each+1),asUtility=1) cmds.pathAnimation('mp_%s_jnt'%(each+1), c='mp_crv',fm=True,wut='objectrotation',wuo='aim_up_%s_loc'%(each+1),f=True,fa='x',ua='y') cmds.cutKey('motionPath%s'%(each+1), attribute='uValue', clear = True) cmds.connectAttr('mp_%s_ctrl.rotateY'%(each+1),'motionPath%s.upTwist'%(each+1)) cmds.connectAttr('mp_%s_ctrl.rotateZ'%(each+1),'motionPath%s.sideTwist'%(each+1)) cmds.parent('mp_1_jnt',w=True) # the command to change the progress bar cmds.progressBar('MotionPathSetupProgress', edit=True, step=1) # the command to set value on each motion path number = len(points) for each in range(number): cmds.setAttr('motionPath%s.uValue'%(each+1),mpInBetween*each) # the command to create extra controller cmds.curve(d=1, p=[(0.25, 0, 1.5),(-0.25, 0, 1.5),(-0.25, 0, 0.25),(-1.5, 0, 0.25),(-1.5, 0, -0.25),(-0.25, 0, -0.25),(-0.25, 0, -1.5),(0.25, 0 ,-1.5),(0.25, 0, -0.25),(1.5, 0, -0.25),(1.5, 0, 0.25,),(0.25, 0 ,0.25),(0.25, 0, 1.5)]) cmds.rename('mp_extra_ctrl') cmds.setAttr ('mp_extra_ctrl'+'.translateX',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_extra_ctrl'+'.translateY',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_extra_ctrl'+'.translateZ',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_extra_ctrl'+'.rotateX',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_extra_ctrl'+'.rotateY',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_extra_ctrl'+'.rotateZ',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_extra_ctrl'+'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_extra_ctrl'+'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_extra_ctrl'+'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_extra_ctrl'+ ".overrideEnabled" ,True) cmds.setAttr ('mp_extra_ctrl'+ ".overrideColor" ,29) cmds.setAttr ('mp_extra_ctrl'+'.visibility',keyable = False, cb = False, lock = True) cmds.addAttr('mp_extra_ctrl',sn='motionPath', min = 0, max=10 , k=1, dv=10) cmds.group(n='mp_extra_ctrl_grp') forDel = cmds.parentConstraint('main_mp_2_jnt','mp_extra_ctrl_grp') cmds.delete(forDel) # the command to search CV and create cluster targetCurve = 'mp_crv' curveCVs = cmds.ls('{0}.cv[:]'.format(targetCurve), fl = True) for cv in curveCVs: cmds.cluster(cv,n='cl1') cmds.setAttr('.visibility',0) cmds.shadingNode('multiplyDivide',n = 'mp_mult',asUtility=1) cmds.setAttr('mp_mult.input2X',10) cmds.setAttr('mp_mult.operation',2) cmds.connectAttr('mp_extra_ctrl.motionPath','mp_mult.input1X') # the command to change the progress bar cmds.progressBar('MotionPathSetupProgress', edit=True, step=2) # the command to set and connect node number = len(curveCVs) for each in range(number): cmds.setAttr('mp_%s_plm.operation'%(each+1), 2) cmds.connectAttr('mp_mult.outputX','mp_%s_plm.input1D[0]'%(each+1)) cmds.setAttr('mp_%s_plm.input1D[1]'%(each+1),1) cmds.connectAttr('mp_%s_plm.output1D'%(each+1),'mp_sec_%s_plm.input1D[0]'%(each+1)) cmds.connectAttr('motionPath%s.uValue'%(each+1),'mp_sec_%s_plm.input1D[1]'%(each+1)) forDel = cmds.parentConstraint('main_mp_%s_jnt'%(each+1),'cl%sHandle'%(each+1),mo=False) cmds.delete(forDel) cmds.parent('cl%sHandle'%(each+1),'mp_%s_ctrl'%(each+1)) cmds.cutKey('mp_%s_plm'%(each+1), attribute='input1D[1]',clear = True) # the command to change the progress bar cmds.progressBar('MotionPathSetupProgress', edit=True, step=1) # the command to connect node number = len(curveCVs) for each in range(number): cmds.disconnectAttr('motionPath%s.uValue'%(each+1),'mp_sec_%s_plm.input1D[1]'%(each+1)) cmds.connectAttr('mp_sec_%s_plm.output1D'%(each+1),'motionPath%s.uValue'%(each+1)) forDel = cmds.parentConstraint('mp_%s_jnt'%(each+1),'main_mp_%s_jnt'%(each+1),mo=True) cmds.delete(forDel) cmds.makeIdentity('main_mp_1_jnt',apply=True,translate=True,rotate=True) number = len(curveCVs) for each in range(number): cmds.parentConstraint('mp_%s_jnt'%(each+1),'main_mp_%s_jnt'%(each+1),mo=True) # the command to create group list = ['ctrl_grp','jnt_grp','setup_grp','mp_grp','setup_jnt_grp'] for each in list: cmds.group(n=each,em=True) # the command to create main controller cmds.circle(n='mp_main_ctrl',r=1,nrx = 90) cmds.setAttr ('mp_main_ctrl'+'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_main_ctrl'+'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_main_ctrl'+'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr ('mp_main_ctrl'+ ".overrideEnabled" ,True) cmds.setAttr ('mp_main_ctrl'+ ".overrideColor" ,29) cmds.setAttr ('mp_main_ctrl'+'.visibility',keyable = False, cb = False, lock = True) cmds.group(n='mp_main_ctrl_grp') forDel = cmds.parentConstraint('main_mp_1_jnt','mp_main_ctrl_grp') cmds.delete(forDel) cmds.parent('ctrl_grp','mp_main_ctrl') cmds.parent('mp_extra_ctrl_grp','mp_main_ctrl') # the command to change the progress bar cmds.progressBar('MotionPathSetupProgress', edit=True, step=1) # the command to group controllers and joints number = len(curveCVs) for each in range(number): cmds.parent('mp_%s_ctrl_grp'%(each+1),'ctrl_grp') cmds.parent('mp_%s_jnt'%(each+1),'setup_jnt_grp') # the command to group everything list = [('start_loc','setup_grp'),('end_loc','setup_grp'),('mp_crv','setup_grp'),('setup_jnt_grp','setup_grp'),('main_mp_1_jnt','jnt_grp'),('setup_grp','mp_grp'),('jnt_grp','mp_grp'),('mp_main_ctrl_grp','mp_grp')] for each in list: cmds.parent(each[0],each[1]) # the command to change the progress bar cmds.progressBar('MotionPathSetupProgress', edit=True, step=2) def progressBarWindowClose(): # the command to close the progress bar cmds.deleteUI('MotionPathSetupProgress',window=True) progressBarWindowClose() #create quadruped setup joint function# def BuildQuadrupedSetupJoint(): nameOfJoint = [('spine_01_setup_jnt',(0, 95, -25),(0,0,0)),('spine_02_setup_jnt',(0, 95, 0),(0,0,0)),('spine_03_setup_jnt',(0, 95, 25),(0,0,0)),('l_leg_01_setup_jnt',(10, 85, -35),(0,0,-90)),('l_leg_02_setup_jnt',(10, 60, -35),(0,0,0)),('l_leg_03_setup_jnt',(10, 30, -35),(0,0,0)),('l_leg_04_setup_jnt',(10, 10, -35),(0,0,0)),('l_leg_05_setup_jnt',(10, 0, -35),(0,0,0)),('l_leg_rock_out_setup_jnt',(15, 0, -35),(0,0,0)),('l_leg_rock_in_setup_jnt',(5, 0, -35),(0,0,0)),('l_leg_heel_setup_jnt',(10, 0, -45),(0,0,0)),('r_leg_01_setup_jnt',(-10, 85, -35),(0,0,0)),('r_leg_02_setup_jnt',(-10, 60, -35),(0,0,0)),('r_leg_03_setup_jnt',(-10, 30, -35),(0,0,0)),('r_leg_04_setup_jnt',(-10, 10, -35),(0,0,0)),('r_leg_05_setup_jnt',(-10, 0, -35),(0,180,0)),('r_leg_rock_out_setup_jnt',(-15, 0, -35),(0,0,0)),('r_leg_rock_in_setup_jnt',(-5, 0, -35),(0,0,0)),('r_leg_heel_setup_jnt',(-10, 0, -45),(0,0,0)),('l_shoulder_setup_jnt',(10, 90, 35),(0,-180,0)),('l_arm_01_setup_jnt',(10, 70, 35),(0,0,0)),('l_arm_02_setup_jnt',(10, 50, 35),(0,0,0)),('l_arm_03_setup_jnt',(10, 25, 35),(0,0,0)),('l_arm_04_setup_jnt',(10, 5, 35),(0,0,0)),('l_arm_05_setup_jnt',(10, 0, 35),(0,0,0)),('l_arm_rock_in_setup_jnt',(5, 0, 35),(0,0,0)),('l_arm_rock_out_setup_jnt',(15, 0, 35),(0,0,0)),('l_arm_heel_setup_jnt',(10, 0, 25),(0,0,0)),('r_shoulder_setup_jnt',(-10, 90, 35),(0,0,0)),('r_arm_01_setup_jnt',(-10, 70, 35),(0,0,0)),('r_arm_02_setup_jnt',(-10, 50, 35),(0,0,0)),('r_arm_03_setup_jnt',(-10, 25, 35),(0,0,0)),('r_arm_04_setup_jnt',(-10, 5, 35),(0,0,0)),('r_arm_05_setup_jnt',(-10, 0, 35),(0,180,0)),('r_arm_rock_in_setup_jnt',(-5, 0, 35),(0,0,0)),('r_arm_rock_out_setup_jnt',(-15, 0, 35),(0,0,0)),('r_arm_heel_setup_jnt',(-10, 0, 25),(0,0,0)),('neck_01_setup_jnt',(0, 105, 35),(0,-180,0)),('neck_02_setup_jnt',(0, 105, 45),(0,0,0)),('head_setup_jnt',(0, 105, 55),(0,0,0)),('head_setup_end_jnt',(0, 105, 75),(0,0,0)),('tail_01_setup_jnt',(0, 95, -35),(0,90,90)),('tail_02_setup_jnt',(0, 95, -45),(0,0,0)),('tail_03_setup_jnt',(0, 95, -55),(0,0,0)),('tail_04_setup_jnt',(0, 95, -65),(0,0,0)),('tail_05_setup_jnt',(0, 95, -75),(0,0,0))] for each in nameOfJoint: cmds.joint(n=each[0],p=each[1],o=each[2]) toParentJoint = [('l_leg_01_setup_jnt','spine_01_setup_jnt'),('r_leg_01_setup_jnt','spine_01_setup_jnt'),('l_leg_rock_out_setup_jnt','l_leg_04_setup_jnt'),('l_leg_rock_in_setup_jnt','l_leg_04_setup_jnt'),('l_leg_heel_setup_jnt','l_leg_04_setup_jnt'),('r_leg_rock_out_setup_jnt','r_leg_04_setup_jnt'),('r_leg_rock_in_setup_jnt','r_leg_04_setup_jnt'),('r_leg_heel_setup_jnt','r_leg_04_setup_jnt'),('l_shoulder_setup_jnt','spine_03_setup_jnt'),('l_arm_rock_out_setup_jnt','l_arm_04_setup_jnt'),('l_arm_rock_in_setup_jnt','l_arm_04_setup_jnt'),('l_arm_heel_setup_jnt','l_arm_04_setup_jnt'),('r_shoulder_setup_jnt','spine_03_setup_jnt'),('r_arm_rock_out_setup_jnt','r_arm_04_setup_jnt'),('r_arm_rock_in_setup_jnt','r_arm_04_setup_jnt'),('r_arm_heel_setup_jnt','r_arm_04_setup_jnt'),('neck_01_setup_jnt','spine_03_setup_jnt'),('tail_01_setup_jnt','spine_01_setup_jnt')] for each in toParentJoint: cmds.parent(each[0],each[1]) toSetJointRotation = [('l_leg_01_setup_jnt.rotateY',-15),('l_leg_02_setup_jnt.rotateY',30),('l_leg_03_setup_jnt.rotateY',-30),('r_leg_01_setup_jnt.rotateY',-15),('r_leg_02_setup_jnt.rotateY',30),('r_leg_03_setup_jnt.rotateY',-30),('l_shoulder_setup_jnt.rotateY',-30),('l_arm_01_setup_jnt.rotateY',70),('l_arm_02_setup_jnt.rotateY',-45),('l_arm_03_setup_jnt.rotateY',10),('r_shoulder_setup_jnt.rotateY',-30),('r_arm_01_setup_jnt.rotateY',70),('r_arm_02_setup_jnt.rotateY',-45),('r_arm_03_setup_jnt.rotateY',10),('neck_01_setup_jnt.rotateY',-50),('neck_02_setup_jnt.rotateY',-20),('head_setup_jnt.rotateY',-10)] for each in toSetJointRotation: cmds.setAttr(each[0],each[1]) nameOfLoc = [('l_leg_PV_setup_loc'),('r_leg_PV_setup_loc'),('l_arm_PV_setup_loc'),('r_arm_PV_setup_loc')] for each in nameOfLoc: cmds.spaceLocator(n=each) toParentLoc = [('l_leg_PV_setup_loc','l_leg_02_setup_jnt'),('r_leg_PV_setup_loc','r_leg_02_setup_jnt'),('l_arm_PV_setup_loc','l_arm_02_setup_jnt'),('r_arm_PV_setup_loc','r_arm_02_setup_jnt')] for each in toParentLoc: cmds.parent(each[0],each[1]) toGetLocPos = [('l_leg_PV_setup_loc'),('r_leg_PV_setup_loc'),('l_arm_PV_setup_loc'),('r_arm_PV_setup_loc')] for each in toGetLocPos: cmds.setAttr(each+'.translateX',0) cmds.setAttr(each+'.translateY',0) cmds.setAttr(each+'.translateZ',0) cmds.setAttr(each+'.rotateX',0) cmds.setAttr(each+'.rotateZ',0) cmds.setAttr('l_leg_PV_setup_loc'+'.translateZ',25) cmds.setAttr('r_leg_PV_setup_loc'+'.translateZ',25) cmds.setAttr('l_arm_PV_setup_loc'+'.translateZ',-20) cmds.setAttr('r_arm_PV_setup_loc'+'.translateZ',-20) #mirror quadruped setup joint# def MirrorQuadrupedSetupJoint(): cmds.mirrorJoint('l_leg_01_setup_jnt',mb = True,myz = True,sr = ('l_','r_mirror_')) forDel = cmds.parentConstraint('r_mirror_leg_01_setup_jnt','r_leg_01_setup_jnt') cmds.delete(forDel) cmds.makeIdentity('r_leg_01_setup_jnt',apply=True,translate=True,rotate=True) cmds.setAttr('r_leg_01_setup_jnt.rotateY',180) forDel = cmds.parentConstraint('r_mirror_leg_02_setup_jnt','r_leg_02_setup_jnt') cmds.delete(forDel) cmds.makeIdentity('r_leg_02_setup_jnt',apply=True,translate=True,rotate=True) cmds.setAttr('r_leg_02_setup_jnt.rotateY',180) forDel = cmds.parentConstraint('r_mirror_leg_03_setup_jnt','r_leg_03_setup_jnt') cmds.delete(forDel) cmds.makeIdentity('r_leg_03_setup_jnt',apply=True,translate=True,rotate=True) cmds.setAttr('r_leg_03_setup_jnt.rotateY',180) forDel = cmds.parentConstraint('r_mirror_leg_04_setup_jnt','r_leg_04_setup_jnt') cmds.delete(forDel) cmds.makeIdentity('r_leg_04_setup_jnt',apply=True,translate=True,rotate=True) cmds.setAttr('r_leg_04_setup_jnt.rotateY',180) cmds.mirrorJoint('l_shoulder_setup_jnt',mb = True,myz = True,sr = ('l_','r_mirror_')) forDel = cmds.parentConstraint('r_mirror_shoulder_setup_jnt','r_shoulder_setup_jnt') cmds.delete(forDel) cmds.makeIdentity('r_shoulder_setup_jnt',apply=True,translate=True,rotate=True) cmds.setAttr('r_shoulder_setup_jnt.rotateY',180) forDel = cmds.parentConstraint('r_mirror_arm_01_setup_jnt','r_arm_01_setup_jnt') cmds.delete(forDel) cmds.makeIdentity('r_arm_01_setup_jnt',apply=True,translate=True,rotate=True) cmds.setAttr('r_arm_01_setup_jnt.rotateY',180) forDel = cmds.parentConstraint('r_mirror_arm_02_setup_jnt','r_arm_02_setup_jnt') cmds.delete(forDel) cmds.makeIdentity('r_arm_02_setup_jnt',apply=True,translate=True,rotate=True) cmds.setAttr('r_arm_02_setup_jnt.rotateY',180) forDel = cmds.parentConstraint('r_mirror_arm_03_setup_jnt','r_arm_03_setup_jnt') cmds.delete(forDel) cmds.makeIdentity('r_arm_03_setup_jnt',apply=True,translate=True,rotate=True) cmds.setAttr('r_arm_03_setup_jnt.rotateY',180) forDel = cmds.parentConstraint('r_mirror_arm_04_setup_jnt','r_arm_04_setup_jnt') cmds.delete(forDel) cmds.makeIdentity('r_arm_04_setup_jnt',apply=True,translate=True,rotate=True) cmds.setAttr('r_arm_04_setup_jnt.rotateY',180) list = [('r_mirror_leg_heer_mirror_setup_jnt','r_leg_heel_setup_jnt'),('r_mirror_leg_rock_in_setup_jnt','r_leg_rock_in_setup_jnt'),('r_mirror_leg_rock_out_setup_jnt','r_leg_rock_out_setup_jnt'),('r_mirror_leg_05_setup_jnt','r_leg_05_setup_jnt'),('r_mirror_arm_heer_mirror_setup_jnt','r_arm_heel_setup_jnt'),('r_mirror_arm_rock_in_setup_jnt','r_arm_rock_in_setup_jnt'),('r_mirror_arm_rock_out_setup_jnt','r_arm_rock_out_setup_jnt'),('r_mirror_arm_05_setup_jnt','r_arm_05_setup_jnt')] for each in list: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) cmds.delete('r_mirror_shoulder_setup_jnt','r_mirror_leg_01_setup_jnt') #create quadruped setup rig function# def BuildQuadrupedSetupRig(): def progressBarWindow(): # this command opens the window window = cmds.window('QuadrupedProgress',title='Building') cmds.columnLayout() cmds.progressBar('QuadrupedProgressBar',maxValue=10, width=300) cmds.showWindow( window ) progressBarWindow() cmds.setAttr('spine_01_setup_jnt.visibility',0) def spineSetup(): # FKspine # nameOfController = [('spine_01_FK_ctrl','spine_01_FK_ctrl_grp'),('spine_02_FK_ctrl','spine_02_FK_ctrl_grp'),('spine_03_FK_ctrl','spine_03_FK_ctrl_grp')] for each in nameOfController: cmds.curve(n=each[0],d=1, p=[(12.5, 12.5, 0),(-12.5, 12.5, 0),(-12.5, -12.5, 0),(12.5, -12.5, 0),(12.5, 12.5, 0)]) cmds.group(n=each[1]) cmds.circle(n='world_ctrl',r=50, nry = 90) cmds.setAttr('world_ctrl.overrideEnabled' ,True) cmds.setAttr('world_ctrl.overrideColor' ,29) cmds.setAttr ('world_ctrl.visibility',keyable = False, cb = False, lock = True) cmds.group(n='world_ctrl_grp') cmds.curve(n='cog_ctrl',d=1, p=[(-3, 0, 18),(-18, 0, 3),(-18, 0, 6),(-24, 0, 0),(-18, 0, -6),(-18, 0, -3),(-3, 0, -18),(-3, 0, -18),(-6, 0, -18),(0, 0, -24),(6, 0, -18),(3, 0, -18),(18, 0, -3),(18, 0, -3),(18, 0, -6),(24, 0, 0),(18, 0, 6),(18, 0, 3),(3, 0, 18),(3, 0, 18),(6, 0, 18),(0, 0, 24),(-6, 0, 18),(-3, 0, 18)]) cmds.group(n='cog_ctrl_grp',em=1) cmds.parent('cog_ctrl','cog_ctrl_grp') nameOfJoint = [('spine_01_FK_jnt'),('spine_02_FK_jnt'),('spine_03_FK_jnt')] for each in nameOfJoint: cmds.joint(n=each) cmds.parent(w=True) toGetPos = [('spine_01_setup_jnt','cog_ctrl_grp'),('spine_02_setup_jnt','spine_02_FK_ctrl_grp'),('spine_03_setup_jnt','spine_03_FK_ctrl_grp'),('spine_01_setup_jnt','spine_01_FK_ctrl_grp'),('spine_01_setup_jnt','spine_01_FK_jnt'),('spine_02_setup_jnt','spine_02_FK_jnt'),('spine_03_setup_jnt','spine_03_FK_jnt')] for each in toGetPos: forDel = cmds.parentConstraint(each[0],each[1],mo = False) cmds.delete(forDel) cmds.makeIdentity('spine_01_FK_jnt',apply=True,translate=True,rotate=True) toParentCon = [('spine_01_FK_ctrl','spine_01_FK_jnt'),('spine_02_FK_ctrl','spine_02_FK_jnt'),('spine_03_FK_ctrl','spine_03_FK_jnt'),('cog_ctrl','spine_01_FK_ctrl_grp')] for each in toParentCon: cmds.parentConstraint(each[0],each[1],mo = True) toParent = [('spine_03_FK_jnt','spine_02_FK_jnt'),('spine_02_FK_jnt','spine_01_FK_jnt'),('spine_03_FK_ctrl_grp','spine_02_FK_ctrl'),('spine_02_FK_ctrl_grp','spine_01_FK_ctrl'),('spine_01_FK_ctrl_grp','world_ctrl')] for each in toParent: cmds.parent(each[0],each[1]) toLockAttr = [('spine_01_FK_ctrl'),('spine_02_FK_ctrl'),('spine_03_FK_ctrl'),('cog_ctrl')] for each in toLockAttr: cmds.setAttr(each+'.visibility',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.overrideEnabled' ,True) cmds.setAttr (each+'.overrideColor' ,17) # IKspine # cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)]) cmds.rename('spine_crv') nameOfLoc = ['spine_01_loc','spine_02_loc','spine_03_loc','spine_04_loc','spine_05_loc'] for each in nameOfLoc: cmds.spaceLocator(n=each) toGetLocPos = [('spine_01_loc.translateY',0),('spine_02_loc.translateY',2.5),('spine_03_loc.translateY',5),('spine_04_loc.translateY',7.5),('spine_05_loc.translateY',10)] for each in toGetLocPos: cmds.setAttr(each[0],each[1]) toConnectLoc = [('spine_01_loc.worldPosition[0]','spine_crvShape.controlPoints[0]'),('spine_02_loc.worldPosition[0]','spine_crvShape.controlPoints[1]'),('spine_03_loc.worldPosition[0]','spine_crvShape.controlPoints[2]'),('spine_04_loc.worldPosition[0]','spine_crvShape.controlPoints[3]'),('spine_05_loc.worldPosition[0]','spine_crvShape.controlPoints[4]')] for each in toConnectLoc: cmds.connectAttr(each[0],each[1]) toCreateIKspineController = [('spine_01_IK_ctrl','spine_01_IK_ctrl_grp'),('spine_02_IK_ctrl','spine_02_IK_ctrl_grp'),('spine_03_IK_ctrl','spine_03_IK_ctrl_grp')] for each in toCreateIKspineController: cmds.circle(n=each[0],r=10,nrz = 90) cmds.group(n=each[1]) cmds.delete('world_ctrl','spine_01_IK_ctrl','spine_02_IK_ctrl','spine_03_IK_ctrl',constructionHistory = True) toCreateJoint = ['spine_IK_chest_jnt','spine_IK_root_jnt','spine_IK_01_jnt','spine_IK_02_jnt','spine_IK_03_jnt','spine_IK_04_jnt','spine_IK_05_jnt','spine_01_length_jnt','spine_02_length_jnt','spine_03_length_jnt','spine_04_length_jnt','spine_05_length_jnt','spine_start_length_jnt','spine_end_length_jnt'] for each in toCreateJoint: cmds.joint(n=each) cmds.group(n='spine_IK_jnt_grp',em=True) cmds.parent('spine_IK_01_jnt','spine_IK_jnt_grp') cmds.orientConstraint('cog_ctrl','spine_IK_jnt_grp') cmds.parent('spine_IK_root_jnt','spine_IK_chest_jnt','spine_01_length_jnt','spine_start_length_jnt',w=True) toGetPos = [('spine_01_setup_jnt','spine_IK_01_jnt'),('spine_01_setup_jnt','spine_IK_02_jnt'),('spine_02_setup_jnt','spine_IK_02_jnt'),('spine_02_setup_jnt','spine_IK_03_jnt'),('spine_02_setup_jnt','spine_IK_04_jnt'),('spine_03_setup_jnt','spine_IK_04_jnt'),('spine_03_setup_jnt','spine_IK_05_jnt'),('spine_01_setup_jnt','spine_01_IK_ctrl_grp'),('spine_02_setup_jnt','spine_02_IK_ctrl_grp'),('spine_03_setup_jnt','spine_03_IK_ctrl_grp'),('spine_01_setup_jnt','spine_start_length_jnt'),('spine_03_setup_jnt','spine_end_length_jnt'),('spine_01_setup_jnt','spine_01_length_jnt'),('spine_01_setup_jnt','spine_01_loc'),('spine_02_setup_jnt','spine_03_loc'),('spine_03_setup_jnt','spine_05_loc'),('spine_01_setup_jnt','spine_IK_root_jnt'),('spine_03_setup_jnt','spine_IK_chest_jnt')] for each in toGetPos: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) forDelspine_02_lenghtJntParentCon = cmds.parentConstraint('spine_01_setup_jnt','spine_02_length_jnt',mo=False) forDelspine_02_lenghtJntParentCon = cmds.parentConstraint('spine_02_setup_jnt','spine_02_length_jnt',mo=False) forDelspine_03_lenghtJntParentCon = cmds.parentConstraint('spine_02_setup_jnt','spine_03_length_jnt',mo=False) forDelspine_04_lenghtJntParentCon = cmds.parentConstraint('spine_02_setup_jnt','spine_04_length_jnt',mo=False) forDelspine_04_lenghtJntParentCon = cmds.parentConstraint('spine_03_setup_jnt','spine_04_length_jnt',mo=False) forDelspine_05_lenghtJntParentCon = cmds.parentConstraint('spine_03_setup_jnt','spine_05_length_jnt',mo=False) cmds.delete(forDelspine_02_lenghtJntParentCon) cmds.delete(forDelspine_03_lenghtJntParentCon) cmds.delete(forDelspine_04_lenghtJntParentCon) cmds.delete(forDelspine_05_lenghtJntParentCon) forDelspine_02_locParentCon = cmds.parentConstraint('spine_01_setup_jnt','spine_02_loc',mo=False) forDelspine_02_locParentCon = cmds.parentConstraint('spine_02_setup_jnt','spine_02_loc',mo=False) forDelspine_04_locParentCon = cmds.parentConstraint('spine_02_setup_jnt','spine_04_loc',mo=False) forDelspine_04_locParentCon = cmds.parentConstraint('spine_03_setup_jnt','spine_04_loc',mo=False) cmds.delete(forDelspine_02_locParentCon) cmds.delete(forDelspine_04_locParentCon) toParentCon = [('spine_03_IK_ctrl','spine_IK_chest_jnt'),('spine_01_IK_ctrl','spine_IK_root_jnt'),('spine_01_IK_ctrl','spine_01_loc'),('spine_02_IK_ctrl','spine_03_loc'),('spine_03_IK_ctrl','spine_05_loc'),('spine_01_IK_ctrl','spine_02_loc'),('spine_02_IK_ctrl','spine_02_loc'),('spine_02_IK_ctrl','spine_04_loc'),('spine_03_IK_ctrl','spine_04_loc'),('spine_03_IK_ctrl','spine_02_IK_ctrl_grp'),('spine_01_IK_ctrl','spine_02_IK_ctrl_grp'),('cog_ctrl','spine_01_IK_ctrl_grp'),('cog_ctrl','spine_03_IK_ctrl_grp')] for each in toParentCon: cmds.parentConstraint(each[0],each[1],mo=True) cmds.select('spine_IK_01_jnt','spine_IK_05_jnt','spine_crv') cmds.ikHandle(n='spine_ikh',sol='ikSplineSolver',ccv=0,pcv =0) createNode = [('multiplyDivide','spine_twist_mult'),('plusMinusAverage','spine_twist_pma'),('multiplyDivide','spine_stretch_01_mult'),('multiplyDivide','spine_stretch_02_mult')] for each in createNode: cmds.shadingNode(each[0],n=each[1],asUtility=1) toSetNode = [('spine_twist_mult.input2X',-1),('spine_stretch_01_mult.operation',2),('spine_stretch_01_mult.operation',2)] for each in toSetNode: cmds.setAttr(each[0],each[1]) cmds.arclen('spine_crv',ch = True) toConnectAttr = [('spine_01_IK_ctrl.rotateZ','spine_twist_mult.input1X'),('spine_03_IK_ctrl.rotateZ','spine_twist_pma.input1D[0]'),('spine_01_IK_ctrl.rotateZ','spine_ikh.roll'),('spine_twist_pma.output1D','spine_ikh.twist'),('spine_twist_mult.outputX','spine_twist_pma.input1D[1]'),('curveInfo1.arcLength','spine_stretch_01_mult.input1X'),('spine_stretch_01_mult.outputX','spine_stretch_02_mult.input1X'),('spine_02_length_jnt.translateZ','spine_stretch_02_mult.input2X'),('spine_stretch_02_mult.outputX','spine_IK_02_jnt.translateZ'),('spine_stretch_02_mult.outputX','spine_IK_03_jnt.translateZ'),('spine_stretch_02_mult.outputX','spine_IK_04_jnt.translateZ'),('spine_stretch_02_mult.outputX','spine_IK_05_jnt.translateZ'),('spine_end_length_jnt.translateZ','spine_stretch_01_mult.input2X')] for each in toConnectAttr: cmds.connectAttr(each[0],each[1]) toCreateGroup = ['spine_IK_setup_jnt_grp','spine_IK_ctrl_grp','spine_IK_loc_grp','spine_IK_setup_grp'] for each in toCreateGroup: cmds.group(n=each,em=True) toParent = [('spine_01_loc','spine_IK_loc_grp'),('spine_02_loc','spine_IK_loc_grp'),('spine_03_loc','spine_IK_loc_grp'),('spine_04_loc','spine_IK_loc_grp'),('spine_05_loc','spine_IK_loc_grp'),('spine_01_IK_ctrl_grp','spine_IK_ctrl_grp'),('spine_02_IK_ctrl_grp','spine_IK_ctrl_grp'),('spine_03_IK_ctrl_grp','spine_IK_ctrl_grp'),('spine_01_length_jnt','spine_IK_setup_jnt_grp'),('spine_start_length_jnt','spine_IK_setup_jnt_grp'),('spine_ikh','spine_IK_setup_grp'),('spine_crv','spine_IK_setup_grp'),('spine_IK_setup_jnt_grp','spine_IK_setup_grp'),('spine_IK_loc_grp','spine_IK_setup_grp'),('spine_IK_ctrl_grp','world_ctrl')] for each in toParent: cmds.parent(each[0],each[1]) cmds.scaleConstraint('world_ctrl','spine_IK_setup_jnt_grp',mo=True) #set IKFK spine controller attributes# listOfSpineController = ['cog_ctrl','spine_01_IK_ctrl','spine_02_IK_ctrl','spine_03_IK_ctrl','spine_01_FK_ctrl','spine_02_FK_ctrl','spine_03_FK_ctrl'] for each in listOfSpineController: cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.overrideEnabled' ,True) cmds.setAttr (each+'.overrideColor' ,17) #create IKFK spine bind joint# nameOfSpineBindJoint = ['spine_01_bln_jnt','spine_02_bln_jnt','spine_03_bln_jnt'] for each in nameOfSpineBindJoint: cmds.joint(n=each) cmds.parent('spine_01_bln_jnt',w=True) cmds.group(n='spine_01_bln_jnt_grp') cmds.scaleConstraint('world_ctrl','spine_01_bln_jnt_grp',mo=True) toGetSpineBindJointPos = [('spine_01_setup_jnt','spine_01_bln_jnt'),('spine_02_setup_jnt','spine_02_bln_jnt'),('spine_03_setup_jnt','spine_03_bln_jnt')] for each in toGetSpineBindJointPos: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) toParentConIKFKspine = [('spine_01_FK_jnt','spine_01_bln_jnt'),('spine_IK_root_jnt','spine_01_bln_jnt'),('spine_02_FK_jnt','spine_02_bln_jnt'),('spine_IK_03_jnt','spine_02_bln_jnt'),('spine_03_FK_jnt','spine_03_bln_jnt'),('spine_IK_chest_jnt','spine_03_bln_jnt')] for each in toParentConIKFKspine: cmds.parentConstraint(each[0],each[1],mo=True) cmds.curve(n='spine_ik_fk_switch',d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)]) cmds.group(n='spine_ik_fk_switch_grp') cmds.setAttr('spine_ik_fk_switch.visibility',keyable = False, cb = False, lock = True) cmds.setAttr('spine_ik_fk_switch.translateX',keyable = False, cb = False, lock = True) cmds.setAttr('spine_ik_fk_switch.translateY',keyable = False, cb = False, lock = True) cmds.setAttr('spine_ik_fk_switch.translateZ',keyable = False, cb = False, lock = True) cmds.setAttr('spine_ik_fk_switch.rotateX',keyable = False, cb = False, lock = True) cmds.setAttr('spine_ik_fk_switch.rotateY',keyable = False, cb = False, lock = True) cmds.setAttr('spine_ik_fk_switch.rotateZ',keyable = False, cb = False, lock = True) cmds.setAttr('spine_ik_fk_switch.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr('spine_ik_fk_switch.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr('spine_ik_fk_switch.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr('spine_ik_fk_switch.overrideEnabled' ,True) cmds.setAttr('spine_ik_fk_switch.overrideColor' ,15) cmds.parent('spine_ik_fk_switch_grp', 'world_ctrl') cmds.addAttr('spine_ik_fk_switch',sn='IKFK', min = 0, max=1 ,k=1) cmds.parentConstraint('spine_02_bln_jnt','spine_ik_fk_switch_grp') cmds.shadingNode('reverse',n='spine_ik_rev',asUtility=1) toConnectAttr = [('spine_ik_fk_switch.IKFK','spine_01_bln_jnt_parentConstraint1.spine_01_FK_jntW0'),('spine_ik_fk_switch.IKFK','spine_ik_rev.inputX'),('spine_ik_rev.outputX','spine_01_bln_jnt_parentConstraint1.spine_IK_root_jntW1'),('spine_ik_fk_switch.IKFK','spine_02_bln_jnt_parentConstraint1.spine_02_FK_jntW0'),('spine_ik_rev.outputX','spine_02_bln_jnt_parentConstraint1.spine_IK_03_jntW1'),('spine_ik_fk_switch.IKFK','spine_03_bln_jnt_parentConstraint1.spine_03_FK_jntW0'),('spine_ik_rev.outputX','spine_03_bln_jnt_parentConstraint1.spine_IK_chest_jntW1'),('spine_ik_rev.outputX','spine_IK_ctrl_grp.visibility'),('spine_ik_fk_switch.IKFK','spine_01_FK_ctrl_grp.visibility')] for each in toConnectAttr: cmds.connectAttr(each[0],each[1]) # the command to change the progress bar cmds.progressBar('QuadrupedProgressBar', edit=True, step=1) spineSetup() def leftRightFKsetup(side): nameOfFKcontroller = [('%s_FK_leg_01_ctrl'%(side),'%s_FK_leg_01_ctrl_grp'%(side)),('%s_FK_leg_02_ctrl'%(side),'%s_FK_leg_02_ctrl_grp'%(side)),('%s_FK_leg_03_ctrl'%(side),'%s_FK_leg_03_ctrl_grp'%(side)),('%s_FK_leg_04_ctrl'%(side),'%s_FK_leg_04_ctrl_grp'%(side)),('%s_FK_arm_01_ctrl'%(side),'%s_FK_arm_01_ctrl_grp'%(side)),('%s_FK_arm_02_ctrl'%(side),'%s_FK_arm_02_ctrl_grp'%(side)),('%s_FK_arm_03_ctrl'%(side),'%s_FK_arm_03_ctrl_grp'%(side)),('%s_FK_arm_04_ctrl'%(side),'%s_FK_arm_04_ctrl_grp'%(side)),('%s_shoulder_ctrl'%(side),'%s_shoulder_ctrl_grp'%(side))] for each in nameOfFKcontroller: ctrl = cmds.circle(n=each[0],r=5,nrx = 90) cmds.delete(ctrl,constructionHistory = True) cmds.group(n=each[1]) nameOfJoint = [('%s_FK_leg_01_jnt'%(side)),('%s_FK_leg_02_jnt'%(side)),('%s_FK_leg_03_jnt'%(side)),('%s_FK_leg_04_jnt'%(side)),('%s_FK_arm_01_jnt'%(side)),('%s_FK_arm_02_jnt'%(side)),('%s_FK_arm_03_jnt'%(side)),('%s_FK_arm_04_jnt'%(side)),('%s_shoulder_jnt'%(side))] for each in nameOfJoint: cmds.joint(n=each) cmds.parent(w = True) togetPos = [('%s_leg_01_setup_jnt'%(side),'%s_FK_leg_01_jnt'%(side)),('%s_leg_02_setup_jnt'%(side),'%s_FK_leg_02_jnt'%(side)),('%s_leg_03_setup_jnt'%(side),'%s_FK_leg_03_jnt'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_FK_leg_04_jnt'%(side)),('%s_leg_01_setup_jnt'%(side),'%s_FK_leg_01_ctrl_grp'%(side)),('%s_leg_02_setup_jnt'%(side),'%s_FK_leg_02_ctrl_grp'%(side)),('%s_leg_03_setup_jnt'%(side),'%s_FK_leg_03_ctrl_grp'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_FK_leg_04_ctrl_grp'%(side)),('%s_arm_01_setup_jnt'%(side),'%s_FK_arm_01_jnt'%(side)),('%s_arm_02_setup_jnt'%(side),'%s_FK_arm_02_jnt'%(side)),('%s_arm_03_setup_jnt'%(side),'%s_FK_arm_03_jnt'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_FK_arm_04_jnt'%(side)),('%s_arm_01_setup_jnt'%(side),'%s_FK_arm_01_ctrl_grp'%(side)),('%s_arm_02_setup_jnt'%(side),'%s_FK_arm_02_ctrl_grp'%(side)),('%s_arm_03_setup_jnt'%(side),'%s_FK_arm_03_ctrl_grp'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_FK_arm_04_ctrl_grp'%(side)),('%s_shoulder_setup_jnt'%(side),'%s_shoulder_jnt'%(side)),('%s_shoulder_setup_jnt'%(side),'%s_shoulder_ctrl_grp'%(side))] for each in togetPos: forDel = cmds.parentConstraint(each[0],each[1],mo = False) cmds.delete(forDel) toParent = [('%s_FK_leg_04_ctrl_grp'%(side),'%s_FK_leg_03_ctrl'%(side)),('%s_FK_leg_03_ctrl_grp'%(side),'%s_FK_leg_02_ctrl'%(side)),('%s_FK_leg_02_ctrl_grp'%(side),'%s_FK_leg_01_ctrl'%(side)),('%s_FK_leg_04_jnt'%(side),'%s_FK_leg_03_jnt'%(side)),('%s_FK_leg_03_jnt'%(side),'%s_FK_leg_02_jnt'%(side)),('%s_FK_leg_02_jnt'%(side),'%s_FK_leg_01_jnt'%(side)),('%s_FK_arm_04_ctrl_grp'%(side),'%s_FK_arm_03_ctrl'%(side)),('%s_FK_arm_03_ctrl_grp'%(side),'%s_FK_arm_02_ctrl'%(side)),('%s_FK_arm_02_ctrl_grp'%(side),'%s_FK_arm_01_ctrl'%(side)),('%s_FK_arm_04_jnt'%(side),'%s_FK_arm_03_jnt'%(side)),('%s_FK_arm_03_jnt'%(side),'%s_FK_arm_02_jnt'%(side)),('%s_FK_arm_02_jnt'%(side),'%s_FK_arm_01_jnt'%(side)),('%s_FK_arm_01_ctrl_grp'%(side),'%s_shoulder_ctrl'%(side))] for each in toParent: cmds.parent(each[0],each[1]) cmds.makeIdentity('%s_FK_leg_01_jnt'%(side),'%s_FK_arm_01_jnt'%(side),'%s_shoulder_jnt'%(side),apply=True,translate=True,rotate=True) toParentCon = [('%s_FK_leg_01_ctrl'%(side),'%s_FK_leg_01_jnt'%(side)),('%s_FK_leg_02_ctrl'%(side),'%s_FK_leg_02_jnt'%(side)),('%s_FK_leg_03_ctrl'%(side),'%s_FK_leg_03_jnt'%(side)),('%s_FK_leg_04_ctrl'%(side),'%s_FK_leg_04_jnt'%(side)),('%s_FK_arm_01_ctrl'%(side),'%s_FK_arm_01_jnt'%(side)),('%s_FK_arm_02_ctrl'%(side),'%s_FK_arm_02_jnt'%(side)),('%s_FK_arm_03_ctrl'%(side),'%s_FK_arm_03_jnt'%(side)),('%s_FK_arm_04_ctrl'%(side),'%s_FK_arm_04_jnt'%(side)),('%s_shoulder_ctrl'%(side),'%s_shoulder_jnt'%(side)),('spine_03_bln_jnt','%s_shoulder_ctrl_grp'%(side)),('spine_01_bln_jnt','%s_FK_leg_01_ctrl_grp'%(side))] for each in toParentCon: cmds.parentConstraint(each[0],each[1],mo = True) toLockAttr = [('%s_FK_leg_01_ctrl'%(side)),('%s_FK_leg_02_ctrl'%(side)),('%s_FK_leg_03_ctrl'%(side)),('%s_FK_leg_04_ctrl'%(side)),('%s_shoulder_ctrl'%(side)),('%s_FK_arm_01_ctrl'%(side)),('%s_FK_arm_02_ctrl'%(side)),('%s_FK_arm_03_ctrl'%(side)),('%s_FK_arm_04_ctrl'%(side))] for each in toLockAttr: cmds.setAttr(each+'.visibility',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.overrideEnabled' ,True) cmds.setAttr (each+'.overrideColor' ,6) # the command to change the progress bar cmds.progressBar('QuadrupedProgressBar', edit=True, step=1) leftRightFKsetup('l') leftRightFKsetup('r') def tailSetup(): # FK tail nameOfController = [('tail_FK_01_ctrl','tail_FK_01_ctrl_grp'),('tail_FK_02_ctrl','tail_FK_02_ctrl_grp'),('tail_FK_03_ctrl','tail_FK_03_ctrl_grp'),('tail_FK_04_ctrl','tail_FK_04_ctrl_grp'),('tail_FK_05_ctrl','tail_FK_05_ctrl_grp')] for each in nameOfController: ctrl = cmds.circle(n=each[0],r=5,nrx = 90) cmds.delete(ctrl,constructionHistory = True) cmds.group(n = each[1]) nameOfJoint = [('tail_FK_01_jnt'),('tail_FK_02_jnt'),('tail_FK_03_jnt'),('tail_FK_04_jnt'),('tail_FK_05_jnt')] for each in nameOfJoint: cmds.joint(n = each) cmds.parent(w = True) toGetPos = [('tail_01_setup_jnt','tail_FK_01_ctrl_grp'),('tail_02_setup_jnt','tail_FK_02_ctrl_grp'),('tail_03_setup_jnt','tail_FK_03_ctrl_grp'),('tail_04_setup_jnt','tail_FK_04_ctrl_grp'),('tail_05_setup_jnt','tail_FK_05_ctrl_grp'),('tail_01_setup_jnt','tail_FK_01_jnt'),('tail_02_setup_jnt','tail_FK_02_jnt'),('tail_03_setup_jnt','tail_FK_03_jnt'),('tail_04_setup_jnt','tail_FK_04_jnt'),('tail_05_setup_jnt','tail_FK_05_jnt')] for each in toGetPos: forDel = cmds.parentConstraint(each[0],each[1],mo = False) cmds.delete(forDel) toParent = [('tail_FK_05_ctrl_grp','tail_FK_04_ctrl'),('tail_FK_04_ctrl_grp','tail_FK_03_ctrl'),('tail_FK_03_ctrl_grp','tail_FK_02_ctrl'),('tail_FK_02_ctrl_grp','tail_FK_01_ctrl'),('tail_FK_05_jnt','tail_FK_04_jnt'),('tail_FK_04_jnt','tail_FK_03_jnt'),('tail_FK_03_jnt','tail_FK_02_jnt'),('tail_FK_02_jnt','tail_FK_01_jnt')] for each in toParent: cmds.parent(each[0],each[1]) cmds.makeIdentity('tail_FK_01_jnt',apply=True,translate=True,rotate=True) toParentCon = [('tail_FK_01_ctrl','tail_FK_01_jnt'),('tail_FK_02_ctrl','tail_FK_02_jnt'),('tail_FK_03_ctrl','tail_FK_03_jnt'),('tail_FK_04_ctrl','tail_FK_04_jnt'),('tail_FK_05_ctrl','tail_FK_05_jnt'),('spine_01_bln_jnt','tail_FK_01_ctrl_grp')] for each in toParentCon: cmds.parentConstraint(each[0],each[1],mo = True) toLockAttr = [('tail_FK_01_ctrl'),('tail_FK_02_ctrl'),('tail_FK_03_ctrl'),('tail_FK_04_ctrl'),('tail_FK_05_ctrl')] for each in toLockAttr: cmds.setAttr(each+'.visibility',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.overrideEnabled' ,True) cmds.setAttr (each+'.overrideColor' ,6) # IK tail list = ['tail_IK_01_jnt','tail_IK_02_jnt','tail_IK_03_jnt','tail_IK_04_jnt','tail_IK_05_jnt','tail_start_length_jnt','tail_end_length_jnt','tail_01_length_jnt','tail_02_length_jnt','tail_03_length_jnt','tail_04_length_jnt','tail_05_length_jnt'] for each in list: cmds.joint(n=each) list = [('tail_IK_01_ctrl','tail_IK_01_ctrl_grp'),('tail_IK_02_ctrl','tail_IK_02_ctrl_grp'),('tail_IK_03_ctrl','tail_IK_03_ctrl_grp')] for each in list: cmds.curve(n=each[0],d=1, p=[(-2.5, -5, 5),(-2.5, 5, 5),(2.5, 5, 5),(2.5, -5, 5),(2.5, -5, -5),(2.5, 5, -5),(-2.5, 5, -5),(-2.5, -5, -5),(-2.5, -5, 5),(2.5, -5, 5),(2.5, 5, 5),(2.5, 5, -5),(2.5, -5, -5),(-2.5, -5, -5),(-2.5, 5, -5),(-2.5, 5, 5)]) cmds.group(n=each[1]) list = [('tail_01_setup_jnt','tail_IK_01_jnt'),('tail_02_setup_jnt','tail_IK_02_jnt'),('tail_03_setup_jnt','tail_IK_03_jnt'),('tail_04_setup_jnt','tail_IK_04_jnt'),('tail_05_setup_jnt','tail_IK_05_jnt'),('tail_01_setup_jnt','tail_IK_01_ctrl_grp'),('tail_03_setup_jnt','tail_IK_02_ctrl_grp'),('tail_05_setup_jnt','tail_IK_03_ctrl_grp'),('tail_01_setup_jnt','tail_01_length_jnt'),('tail_02_setup_jnt','tail_02_length_jnt'),('tail_03_setup_jnt','tail_03_length_jnt'),('tail_04_setup_jnt','tail_04_length_jnt'),('tail_05_setup_jnt','tail_05_length_jnt'),('tail_01_setup_jnt','tail_start_length_jnt'),('tail_05_setup_jnt','tail_end_length_jnt')] for each in list: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)]) cmds.rename('tail_crv') nameOfLoc = ['tail_01_loc','tail_02_loc','tail_03_loc','tail_04_loc','tail_05_loc'] for each in nameOfLoc: cmds.spaceLocator(n=each) toGetLocPos = [('tail_01_loc.translateY',0),('tail_02_loc.translateY',2.5),('tail_03_loc.translateY',5),('tail_04_loc.translateY',7.5),('tail_05_loc.translateY',10)] for each in toGetLocPos: cmds.setAttr(each[0],each[1]) toConnectLoc = [('tail_01_loc.worldPosition[0]','tail_crv.controlPoints[0]'),('tail_02_loc.worldPosition[0]','tail_crv.controlPoints[1]'),('tail_03_loc.worldPosition[0]','tail_crv.controlPoints[2]'),('tail_04_loc.worldPosition[0]','tail_crv.controlPoints[3]'),('tail_05_loc.worldPosition[0]','tail_crv.controlPoints[4]')] for each in toConnectLoc: cmds.connectAttr(each[0],each[1]) list = ['tail_setup_grp','tail_jnt_grp','tail_ctrl_grp','tail_IK_ctrl_grp','tail_IK_jnt_grp','tail_IK_setup_jnt_grp'] for each in list: cmds.group(n=each,em=True) cmds.orientConstraint('tail_IK_01_ctrl','tail_IK_jnt_grp',mo=True) list = [('tail_01_setup_jnt','tail_01_loc'),('tail_02_setup_jnt','tail_02_loc'),('tail_03_setup_jnt','tail_03_loc'),('tail_04_setup_jnt','tail_04_loc'),('tail_05_setup_jnt','tail_05_loc')] for each in list: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) list = [('tail_IK_01_ctrl','tail_01_loc'),('tail_IK_01_ctrl','tail_02_loc'),('tail_IK_02_ctrl','tail_02_loc'),('tail_IK_02_ctrl','tail_03_loc'),('tail_IK_02_ctrl','tail_04_loc'),('tail_IK_03_ctrl','tail_04_loc'),('tail_IK_03_ctrl','tail_05_loc'),('tail_IK_01_ctrl','tail_IK_02_ctrl_grp'),('tail_IK_03_ctrl','tail_IK_02_ctrl_grp'),('spine_01_bln_jnt','tail_IK_ctrl_grp')] for each in list: cmds.parentConstraint(each[0],each[1],mo=True) cmds.select('tail_IK_01_jnt','tail_IK_05_jnt','tail_crv') cmds.ikHandle(n='tail_ikh',sol='ikSplineSolver',ccv=0,pcv =0) createNode = [('multiplyDivide','tail_stretch_01_mult'),('multiplyDivide','tail_stretch_02_mult')] for each in createNode: cmds.shadingNode(each[0],n=each[1],asUtility=1) toSetNode = [('tail_stretch_01_mult.operation',2),('tail_stretch_01_mult.operation',2)] for each in toSetNode: cmds.setAttr(each[0],each[1]) cmds.arclen('tail_crv',ch = True) toConnectAttr = [('tail_IK_03_ctrl.rotateX','tail_ikh.twist'),('curveInfo2.arcLength','tail_stretch_01_mult.input1X'),('tail_stretch_01_mult.outputX','tail_stretch_02_mult.input1X'),('tail_02_length_jnt.translateX','tail_stretch_02_mult.input2X'),('tail_stretch_02_mult.outputX','tail_IK_02_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_IK_03_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_IK_04_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_IK_05_jnt.translateX'),('tail_end_length_jnt.translateX','tail_stretch_01_mult.input2X')] for each in toConnectAttr: cmds.connectAttr(each[0],each[1]) # IKFK tail setup list = ['tail_bln_01_jnt','tail_bln_02_jnt','tail_bln_03_jnt','tail_bln_04_jnt','tail_bln_05_jnt'] for each in list: cmds.joint(n=each) list = [('tail_01_setup_jnt','tail_bln_01_jnt'),('tail_02_setup_jnt','tail_bln_02_jnt'),('tail_03_setup_jnt','tail_bln_03_jnt'),('tail_04_setup_jnt','tail_bln_04_jnt'),('tail_05_setup_jnt','tail_bln_05_jnt')] for each in list: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) list = [('tail_FK_01_jnt','tail_bln_01_jnt'),('tail_FK_02_jnt','tail_bln_02_jnt'),('tail_FK_03_jnt','tail_bln_03_jnt'),('tail_FK_04_jnt','tail_bln_04_jnt'),('tail_FK_05_jnt','tail_bln_05_jnt'),('tail_IK_01_jnt','tail_bln_01_jnt'),('tail_IK_02_jnt','tail_bln_02_jnt'),('tail_IK_03_jnt','tail_bln_03_jnt'),('tail_IK_04_jnt','tail_bln_04_jnt'),('tail_IK_05_jnt','tail_bln_05_jnt')] for each in list: cmds.parentConstraint(each[0],each[1],mo=True) cmds.curve(n='tail_ik_fk_switch',d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)]) cmds.group(n='tail_ik_fk_switch_grp') cmds.setAttr('tail_ik_fk_switch.visibility',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.translateX',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.translateY',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.translateZ',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.rotateX',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.rotateY',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.rotateZ',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr('tail_ik_fk_switch.overrideEnabled' ,True) cmds.setAttr('tail_ik_fk_switch.overrideColor' ,15) cmds.parent('tail_ik_fk_switch_grp', 'world_ctrl') cmds.addAttr('tail_ik_fk_switch',sn='IKFK', min = 0, max=1 ,k=1) cmds.parentConstraint('tail_bln_01_jnt','tail_ik_fk_switch_grp') cmds.shadingNode('reverse',n='tail_ik_rev',asUtility=1) toConnectAttr = [('tail_ik_fk_switch.IKFK','tail_bln_01_jnt_parentConstraint1.tail_FK_01_jntW0'),('tail_ik_fk_switch.IKFK','tail_ik_rev.inputX'),('tail_ik_rev.outputX','tail_bln_01_jnt_parentConstraint1.tail_IK_01_jntW1'),('tail_ik_fk_switch.IKFK','tail_bln_02_jnt_parentConstraint1.tail_FK_02_jntW0'),('tail_ik_rev.outputX','tail_bln_02_jnt_parentConstraint1.tail_IK_02_jntW1'),('tail_ik_fk_switch.IKFK','tail_bln_03_jnt_parentConstraint1.tail_FK_03_jntW0'),('tail_ik_rev.outputX','tail_bln_03_jnt_parentConstraint1.tail_IK_03_jntW1'),('tail_ik_fk_switch.IKFK','tail_bln_04_jnt_parentConstraint1.tail_FK_04_jntW0'),('tail_ik_rev.outputX','tail_bln_04_jnt_parentConstraint1.tail_IK_04_jntW1'),('tail_ik_fk_switch.IKFK','tail_bln_05_jnt_parentConstraint1.tail_FK_05_jntW0'),('tail_ik_rev.outputX','tail_bln_05_jnt_parentConstraint1.tail_IK_05_jntW1'),('tail_ik_rev.outputX','tail_IK_ctrl_grp.visibility'),('tail_ik_fk_switch.IKFK','tail_FK_01_ctrl_grp.visibility')] for each in toConnectAttr: cmds.connectAttr(each[0],each[1]) # create tail group list = [('tail_IK_01_jnt','tail_IK_jnt_grp'),('tail_start_length_jnt','tail_IK_setup_jnt_grp'),('tail_01_length_jnt','tail_IK_setup_jnt_grp'),('tail_IK_01_ctrl_grp','tail_IK_ctrl_grp'),('tail_IK_02_ctrl_grp','tail_IK_ctrl_grp'),('tail_IK_03_ctrl_grp','tail_IK_ctrl_grp'),('tail_IK_ctrl_grp','tail_ctrl_grp'),('tail_FK_01_ctrl_grp','tail_ctrl_grp'),('tail_ik_fk_switch_grp','tail_ctrl_grp'),('tail_FK_01_jnt','tail_jnt_grp'),('tail_IK_01_jnt','tail_jnt_grp'),('tail_bln_01_jnt','tail_jnt_grp'),('tail_IK_setup_jnt_grp','tail_jnt_grp'),('tail_IK_jnt_grp','tail_jnt_grp'),('tail_crv','tail_setup_grp'),('tail_01_loc','tail_setup_grp'),('tail_02_loc','tail_setup_grp'),('tail_03_loc','tail_setup_grp'),('tail_04_loc','tail_setup_grp'),('tail_05_loc','tail_setup_grp'),('tail_IK_jnt_grp','tail_setup_grp'),('tail_IK_setup_jnt_grp','tail_setup_grp'),('tail_ikh','tail_setup_grp')] for each in list: cmds.parent(each[0],each[1]) # the command to change the progress bar cmds.progressBar('QuadrupedProgressBar', edit=True, step=1) tailSetup() def neckSetup(): nameOfController = [('neck_01_ctrl','neck_01_ctrl_grp'),('neck_02_ctrl','neck_02_ctrl_grp'),('head_ctrl','head_ctrl_grp')] for each in nameOfController: cmds.curve(n=each[0],d=1, p=[(12.5, 12.5, 0),(-12.5, 12.5, 0),(-12.5, -12.5, 0),(12.5, -12.5, 0),(12.5, 12.5, 0)]) cmds.group(n=each[1]) nameOfJoint = [('neck_01_jnt'),('neck_02_jnt'),('head_jnt')] for each in nameOfJoint: cmds.joint(n=each) cmds.parent(w=True) toGetPos = [('neck_01_setup_jnt','neck_01_ctrl_grp'),('neck_02_setup_jnt','neck_02_ctrl_grp'),('head_setup_jnt','head_ctrl_grp'),('neck_01_setup_jnt','neck_01_jnt'),('neck_02_setup_jnt','neck_02_jnt'),('head_setup_jnt','head_jnt')] for each in toGetPos: forDel = cmds.parentConstraint(each[0],each[1],mo = False) cmds.delete(forDel) toParent = [('head_ctrl_grp','neck_02_ctrl'),('neck_02_ctrl_grp','neck_01_ctrl'),('head_jnt','neck_02_jnt'),('neck_02_jnt','neck_01_jnt')] for each in toParent: cmds.parent(each[0],each[1]) cmds.makeIdentity('neck_01_jnt',apply=True,translate=True,rotate=True) toParentCon = [('neck_01_ctrl','neck_01_jnt'),('neck_02_ctrl','neck_02_jnt'),('head_ctrl','head_jnt'),('spine_03_bln_jnt','neck_01_ctrl_grp')] for each in toParentCon: cmds.parentConstraint(each[0],each[1],mo = True) toLockAttr = [('neck_01_ctrl'),('neck_02_ctrl'),('head_ctrl')] for each in toLockAttr: cmds.setAttr(each+'.visibility',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.overrideEnabled' ,True) cmds.setAttr (each+'.overrideColor' ,17) # the command to change the progress bar cmds.progressBar('QuadrupedProgressBar', edit=True, step=1) neckSetup() def leftRightIKsetup(side): nameOfJoint = [('%s_IK_leg_01_jnt'%(side)),('%s_IK_leg_02_jnt'%(side)),('%s_IK_leg_03_jnt'%(side)),('%s_IK_leg_04_jnt'%(side)),('%s_IK_arm_01_jnt'%(side)),('%s_IK_arm_02_jnt'%(side)),('%s_IK_arm_03_jnt'%(side)),('%s_IK_arm_04_jnt'%(side))] for each in nameOfJoint: cmds.joint(n=each) list = [('%s_IK_leg_roll_ctrl'%(side),'%s_IK_leg_roll_ctrl_grp'%(side)),('%s_IK_arm_roll_ctrl'%(side),'%s_IK_arm_roll_ctrl_grp'%(side))] for each in list: cmds.curve(d=1, p=[(0.5, 0.5, 0.5),(-0.5, 0.5, 0.5),(-1, 0, 0.5),(-1, 0, 1),(-1.5, -0.5, 0),(-1, 0, -1),(-1, 0, -0.5),(-0.5, 0.5, -0.5),(0.5, 0.5, -0.5),(1, 0, -0.5),(1, 0, -1),(1.5, -0.5, 0),(1, 0, 1),(1, 0, 1),(1, 0, 0.5),(0.5, 0.5, 0.5)],n=each[0]) cmds.group(n=each[1]) nameOfIKfootController = [('%s_IK_leg_ctrl'%(side),'%s_IK_leg_ctrl_grp'%(side)),('%s_IK_arm_ctrl'%(side),'%s_IK_arm_ctrl_grp'%(side))] for each in nameOfIKfootController: cmds.curve(n=each[0],d=1, p=[(-5, -5, 5),(-5, 5, 5),(5, 5, 5),(5, -5, 5),(5, -5, -5),(5, 5, -5),(-5, 5, -5),(-5, -5, -5),(-5, -5, 5),(5, -5, 5),(5, 5, 5),(5, 5, -5),(5, -5, -5),(-5, -5, -5),(-5, 5, -5),(-5, 5, 5)]) cmds.group(n=each[1]) nameOfPVcontroller = [('%s_leg_PV_ctrl'%(side),'%s_leg_PV_ctrl_grp'%(side)),('%s_arm_PV_ctrl'%(side),'%s_arm_PV_ctrl_grp'%(side))] for each in nameOfPVcontroller: cmds.curve(n=each[0],d = 1, p = [(0, 5, 0), (0, 0, 5), (0, -5, 0), (0, 0, -5), (0, 5, 0), (5, 0, 0), (0, -5, 0), (-5, 0, 0), (0, 0, 5), (5, 0, 0), (0, 0, -5), (-5, 0, 0), (0, 5, 0)]) cmds.group(n=each[1]) toGetControllerPos = [('%s_leg_04_setup_jnt'%(side),'%s_IK_leg_ctrl_grp'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_IK_arm_ctrl_grp'%(side)),('%s_leg_PV_setup_loc'%(side),'%s_leg_PV_ctrl_grp'%(side)),('%s_arm_PV_setup_loc'%(side),'%s_arm_PV_ctrl_grp'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_IK_leg_roll_ctrl_grp'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_IK_arm_roll_ctrl_grp'%(side))] for each in toGetControllerPos: forDel = cmds.pointConstraint(each[0],each[1],mo = False) cmds.delete(forDel) toGetJointPos = [('%s_leg_01_setup_jnt'%(side),'%s_IK_leg_01_jnt'%(side)),('%s_leg_02_setup_jnt'%(side),'%s_IK_leg_02_jnt'%(side)),('%s_leg_03_setup_jnt'%(side),'%s_IK_leg_03_jnt'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_IK_leg_04_jnt'%(side)),('%s_arm_01_setup_jnt'%(side),'%s_IK_arm_01_jnt'%(side)),('%s_arm_02_setup_jnt'%(side),'%s_IK_arm_02_jnt'%(side)),('%s_arm_03_setup_jnt'%(side),'%s_IK_arm_03_jnt'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_IK_arm_04_jnt'%(side))] for each in toGetJointPos: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) list = [('%s_IK_leg_roll_ctrl'%(side)),('%s_IK_arm_roll_ctrl'%(side))] for each in list: cmds.setAttr (each+'.translateX',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.translateY',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.translateZ',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.overrideEnabled' ,True) cmds.setAttr (each+'.overrideColor' ,6) toLockPVcontroller = [('%s_leg_PV_ctrl'%(side)),('%s_arm_PV_ctrl'%(side))] for each in toLockPVcontroller: cmds.setAttr (each+'.rotateX',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.rotateY',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.rotateZ',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.overrideEnabled' ,True) cmds.setAttr (each+'.overrideColor' ,6) cmds.addAttr (each,sn='follow', min = 0, max=1 ,k=1) toLockIKcontroller = [('%s_IK_leg_ctrl'%(side)),('%s_IK_arm_ctrl'%(side))] for each in toLockIKcontroller: cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True) cmds.setAttr (each+'.overrideEnabled' ,True) cmds.setAttr (each+'.overrideColor' ,6) cmds.addAttr (each,sn='stretch',at = 'bool',k=1) cmds.addAttr (each,sn='heelLift' ,k=1) cmds.addAttr (each,sn='toeLift' ,k=1) cmds.addAttr (each,sn='footRock' ,k=1) nameOfLoc = [('%s_leg_heel_loc'%(side)),('%s_leg_toe_lift_loc'%(side)),('%s_leg_roll_out_loc'%(side)),('%s_leg_roll_in_loc'%(side)),('%s_arm_heel_loc'%(side)),('%s_arm_toe_lift_loc'%(side)),('%s_arm_roll_out_loc'%(side)),('%s_arm_roll_in_loc'%(side)),('%s_leg_PV_aim_loc'%(side)),('%s_leg_PV_aim_up_loc'%(side)),('%s_leg_PV_aim_base_loc'%(side)),('%s_leg_PV_aim_world_loc'%(side)),('%s_arm_PV_aim_loc'%(side)),('%s_arm_PV_aim_up_loc'%(side)),('%s_arm_PV_aim_base_loc'%(side)),('%s_arm_PV_aim_world_loc'%(side))] for each in nameOfLoc: cmds.spaceLocator(n=each) toGetGrp = [('%s_IK_leg_loc_grp'%(side)),('%s_IK_arm_loc_grp'%(side)),('%s_IK_leg_jnt_grp'%(side)),('%s_IK_arm_jnt_grp'%(side)),('%s_IK_arm_PV_loc_grp'%(side)),('%s_IK_leg_PV_loc_grp'%(side)),('%s_IK_leg_grp'%(side)),('%s_IK_arm_grp'%(side))] for each in toGetGrp: cmds.group(n=each,em=True) toGetPos = [('%s_leg_05_setup_jnt'%(side),'%s_leg_toe_lift_loc'%(side)),('%s_leg_heel_setup_jnt'%(side),'%s_leg_heel_loc'%(side)),('%s_leg_rock_out_setup_jnt'%(side),'%s_leg_roll_out_loc'%(side)),('%s_leg_rock_in_setup_jnt'%(side),'%s_leg_roll_in_loc'%(side)),('%s_arm_05_setup_jnt'%(side),'%s_arm_toe_lift_loc'%(side)),('%s_arm_heel_setup_jnt'%(side),'%s_arm_heel_loc'%(side)),('%s_arm_rock_out_setup_jnt'%(side),'%s_arm_roll_out_loc'%(side)),('%s_arm_rock_in_setup_jnt'%(side),'%s_arm_roll_in_loc'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_IK_leg_loc_grp'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_IK_arm_loc_grp'%(side)),('spine_01_bln_jnt','%s_leg_PV_aim_up_loc'%(side)),('%s_IK_leg_01_jnt'%(side),'%s_leg_PV_aim_base_loc'%(side)),('%s_IK_leg_04_jnt'%(side),'%s_leg_PV_aim_loc'%(side)),('%s_leg_PV_ctrl'%(side),'%s_leg_PV_aim_world_loc'%(side)),('spine_03_bln_jnt','%s_arm_PV_aim_up_loc'%(side)),('%s_IK_arm_01_jnt'%(side),'%s_arm_PV_aim_base_loc'%(side)),('%s_IK_arm_04_jnt'%(side),'%s_arm_PV_aim_loc'%(side)),('%s_arm_PV_ctrl'%(side),'%s_arm_PV_aim_world_loc'%(side))] for each in toGetPos: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) list = [('%s_arm_heel_loc'%(side),'%s_IK_arm_loc_grp'%(side)),('%s_leg_heel_loc'%(side),'%s_IK_leg_loc_grp'%(side))] for each in list: forDel = cmds.orientConstraint(each[0],each[1],mo=False) cmds.delete(forDel) cmds.parent('%s_IK_leg_01_jnt'%(side),'%s_IK_leg_jnt_grp'%(side)) cmds.parent('%s_IK_arm_01_jnt'%(side),'%s_IK_arm_jnt_grp'%(side)) cmds.makeIdentity('%s_IK_leg_01_jnt'%(side),'%s_IK_arm_01_jnt'%(side),apply=True,translate=True,rotate=True) cmds.addAttr ('%s_IK_leg_ctrl'%(side), at = 'enum', keyable=True, en = 'string1:string2:', ln='follow') cmds.addAttr ('%s_IK_leg_ctrl'%(side)+'.follow', e=True, en = 'world:pelvis:') cmds.addAttr ('%s_IK_arm_ctrl'%(side), at = 'enum', keyable=True, en = 'string1:string2:', ln='follow') cmds.addAttr ('%s_IK_arm_ctrl'%(side)+'.follow', e=True, en = 'world:shoulder:') cmds.ikHandle(n='%s_leg_upr_ikh'%(side), sj='%s_IK_leg_01_jnt'%(side), ee='%s_IK_leg_03_jnt'%(side),sol='ikRPsolver') cmds.ikHandle(n='%s_leg_lwr_ikh'%(side), sj='%s_IK_leg_03_jnt'%(side), ee='%s_IK_leg_04_jnt'%(side),sol='ikRPsolver') cmds.ikHandle(n='%s_arm_upr_ikh'%(side), sj='%s_IK_arm_01_jnt'%(side), ee='%s_IK_arm_03_jnt'%(side),sol='ikRPsolver') cmds.ikHandle(n='%s_arm_lwr_ikh'%(side), sj='%s_IK_arm_03_jnt'%(side), ee='%s_IK_arm_04_jnt'%(side),sol='ikRPsolver') cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_IK_arm_01_jnt'%(side),mo = True) cmds.poleVectorConstraint('%s_arm_PV_ctrl'%(side),'%s_arm_upr_ikh'%(side)) cmds.poleVectorConstraint('%s_leg_PV_ctrl'%(side),'%s_leg_upr_ikh'%(side))
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter