def IKlegSetup(side):
list = ['%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_leg_05_jnt'%(side)]
for each in list:
cmds.joint(n=each)
list = [('%s_leg_01_setup'%(side),'%s_ik_leg_01_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_ik_leg_02_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_ik_leg_03_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_ik_leg_04_jnt'%(side)),('%s_leg_05_setup'%(side),'%s_ik_leg_05_jnt'%(side))]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_ik_leg_01_jnt'%(side), apply=True, translate=True, rotate=True)
cmds.group(n='%s_ik_leg_jnt_grp'%(side),em=True)
cmds.parent('%s_ik_leg_01_jnt'%(side),'%s_ik_leg_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_ik_leg_jnt_grp'%(side))
cmds.ikHandle( n='%s_leg_01_ikh'%(side), sj='%s_ik_leg_01_jnt'%(side), ee='%s_ik_leg_03_jnt'%(side) )
cmds.ikHandle( n='%s_leg_02_ikh'%(side), sj='%s_ik_leg_03_jnt'%(side), ee='%s_ik_leg_04_jnt'%(side) )
cmds.ikHandle( n='%s_leg_03_ikh'%(side), sj='%s_ik_leg_04_jnt'%(side), ee='%s_ik_leg_05_jnt'%(side) )
cmds.parentConstraint('spine_01_bln_jnt','%s_ik_leg_01_jnt'%(side),mo = True)
cmds.curve(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.rename('%s_ik_leg_ctrl'%(side))
ControllerAttr('%s_ik_leg_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='heelLift' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='toeLift' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='ballRoll' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='toeRoll' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='footRock' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='stretch' ,k=1,at = 'bool')
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.group(n='%s_ik_leg_ctrl_grp'%(side))
forDel = cmds.parentConstraint('%s_leg_03_setup'%(side),'%s_ik_leg_ctrl_grp'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.parentConstraint('spine_01_bln_jnt','%s_ik_leg_ctrl_grp'%(side),mo = True)
cmds.connectAttr('%s_ik_leg_ctrl.follow'%(side),'%s_ik_leg_ctrl_grp_parentConstraint1.spine_01_bln_jntW0'%(side))
cmds.curve(n='%s_knee_ctrl'%(side),d=1,p=[(0.0, 3.468342867164149, 0.0),(0.0, 3.468342867164149, 0.5221724371834184),(0.0, 4.967930096687364, 0.0),(0.5221724371834184, 3.468342867164149, 0.0),(-0.5221724371834184, 3.468342867164149, 0.0),(0.0, 4.967930096687364, 0.0),(0.0, 3.468342867164149, -0.5221724371834184),(0.0, 3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(-0.5221724371834184, -3.468342867164149, 0.0),(0.0, -4.967930096687364, 0.0),(0.0, -3.468342867164149, -0.5221724371834184),(0.0, -3.468342867164149, 0.5221724371834184),(0.0, -4.967930096687364, 0.0),(0.5221724371834184, -3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(0.0, 0.0, 0.0),(-3.468342867164149, 0.0, 0.0),(-3.468342867164149, 0.5221724371834184, 0.0),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, 0.0, -0.5221724371834184),(-3.468342867164149, 0.0, 0.5221724371834184),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, -0.5221724371834184, 0.0),(-3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, -0.5221724371834184),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.5221724371834184, 0.0),(3.468342867164149, -0.5221724371834184, 0.0),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.0, 0.5221724371834184),(3.468342867164149, 0.0, 0.0),(0.0, 0.0, 0.0),(0.0, 0.0, 3.468342867164149),(0.0, 0.5221724371834184, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.5221724371834184, 0.0, 3.468342867164149),(-0.5221724371834184, 0.0, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.0, -0.5221724371834184, 3.468342867164149),(0.0, 0.0, 3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.5221724371834184, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(-0.5221724371834184, 0.0, -3.468342867164149),(0.5221724371834184, 0.0, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(0.0, -0.5221724371834184, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149)])
ControllerAttr('%s_knee_ctrl'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_knee_ctrl'%(side),sn='follow', min = 0, max=1 ,k=1)
cmds.setAttr('%s_knee_ctrl.follow'%(side),1)
cmds.group(n='%s_knee_ctrl_grp'%(side))
cmds.parent('%s_knee_ctrl_grp'%(side),'world_ctrl')
forDel = cmds.pointConstraint('%s_knee_setup'%(side),'%s_knee_ctrl_grp'%(side))
cmds.delete(forDel)
cmds.poleVectorConstraint('%s_knee_ctrl'%(side),'%s_leg_01_ikh'%(side))
list = ['%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_aim_loc'%(side),'%s_knee_ctrl_aim_world_loc'%(side),'%s_heel_loc'%(side),'%s_roll_out_loc'%(side),'%s_roll_in_loc'%(side),'%s_toe_roll_loc'%(side),'%s_toe_end_loc'%(side),'%s_toe_lift_loc'%(side),'%s_ball_roll_loc'%(side),'%s_leg_ikHandle_loc'%(side),'%s_ball_ikHandle_loc'%(side)]
for each in list:
cmds.spaceLocator(n=each)
cmds.group(n='%s_knee_loc_grp'%(side),em=True)
cmds.scaleConstraint('world_ctrl','%s_knee_loc_grp'%(side),mo=True)
cmds.group(n='%s_foot_ikHandle_grp'%(side),em = True)
cmds.group(n='%s_knee_ctrl_aim_base_loc_grp'%(side),em=True)
list = [('pelvis_setup','%s_knee_ctrl_aim_up_loc'%(side)),('%s_leg_01_setup'%(side),'%s_knee_ctrl_aim_base_loc'%(side)),('%s_leg_03_setup'%(side),'%s_knee_ctrl_aim_loc'%(side))]
for each in list:
forDel = cmds.pointConstraint(each[0],each[1])
cmds.delete(forDel)
list = [('%s_leg_04_setup'%(side),'%s_toe_roll_loc'%(side)),('%s_leg_04_setup'%(side),'%s_ball_roll_loc'%(side)),('%s_knee_setup'%(side),'%s_knee_ctrl_aim_world_loc'%(side)),('%s_leg_heel_setup'%(side),'%s_heel_loc'%(side)),('%s_leg_roll_out_setup'%(side),'%s_roll_out_loc'%(side)),('%s_leg_roll_in_setup'%(side),'%s_roll_in_loc'%(side)),('%s_leg_05_setup'%(side),'%s_toe_end_loc'%(side)),('%s_leg_06_setup'%(side),'%s_toe_lift_loc'%(side)),('%s_leg_03_setup'%(side),'%s_leg_ikHandle_loc'%(side)),('%s_leg_04_setup'%(side),'%s_ball_ikHandle_loc'%(side)),('%s_leg_03_setup'%(side),'%s_foot_ikHandle_grp'%(side))]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_heel_loc'%(side),'%s_toe_roll_loc'%(side)),('%s_heel_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_heel_loc'%(side),'%s_foot_ikHandle_grp'%(side))]
for each in list:
forDel = cmds.orientConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_toe_lift_loc'%(side),'%s_heel_loc'%(side)),('%s_roll_out_loc'%(side),'%s_toe_lift_loc'%(side)),('%s_roll_in_loc'%(side),'%s_roll_in_loc'%(side)),('%s_toe_roll_loc'%(side),'%s_roll_in_loc'%(side)),('%s_ball_roll_loc'%(side),'%s_roll_in_loc'%(side)),('%s_toe_end_loc'%(side),'%s_toe_roll_loc'%(side)),('%s_leg_ikHandle_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_ball_ikHandle_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_leg_02_ikh'%(side),'%s_ball_ikHandle_loc'%(side)),('%s_leg_03_ikh'%(side),'%s_toe_end_loc'%(side)),('%s_leg_01_ikh'%(side),'%s_leg_ikHandle_loc'%(side)),('%s_knee_ctrl_aim_world_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_heel_loc'%(side),'%s_foot_ikHandle_grp'%(side)),('%s_ik_leg_ctrl_grp'%(side),'world_ctrl'),('%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_aim_base_loc_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_base_loc_grp'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'spine_01_bln_jnt')]
for each in list:
cmds.parent(each[0],each[1])
cmds.aimConstraint('%s_knee_ctrl_aim_loc'%(side),'%s_knee_ctrl_aim_base_loc'%(side),wut='object',wuo = '%s_knee_ctrl_aim_up_loc'%(side),mo = False)
list = [('%s_ik_leg_ctrl'%(side),'%s_knee_ctrl_aim_loc'%(side)),('world_ctrl','%s_knee_ctrl_aim_world_loc'%(side)),('%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_grp'%(side)),('%s_knee_ctrl_aim_world_loc'%(side),'%s_knee_ctrl_grp'%(side)),('%s_ik_leg_ctrl'%(side),'%s_foot_ikHandle_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_ctrl_aim_base_loc_grp'%(side))]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
list = [('reverse','%s_knee_follow_rev'%(side)),('multiplyDivide','%s_foot_rock_mult'%(side)),('condition','%s_foot_rock_con'%(side))]
for each in list:
cmds.shadingNode(each[0],n = each[1],asUtility=1)
list = [('%s_knee_ctrl.follow'%(side),'%s_knee_ctrl_grp_parentConstraint1.%s_knee_ctrl_aim_base_locW0'%(side,side)),('%s_knee_ctrl.follow'%(side),'%s_knee_follow_rev.inputX'%(side)),('%s_knee_follow_rev.outputX'%(side),'%s_knee_ctrl_grp_parentConstraint1.%s_knee_ctrl_aim_world_locW1'%(side,side)),('%s_ik_leg_ctrl.heelLift'%(side),'%s_heel_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.toeLift'%(side),'%s_toe_lift_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.ballRoll'%(side),'%s_ball_roll_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.toeRoll'%(side),'%s_toe_roll_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.footRock'%(side),'%s_foot_rock_mult.input1X'%(side)),('%s_ik_leg_ctrl.footRock'%(side),'%s_foot_rock_mult.input1Y'%(side)),('%s_foot_rock_mult.outputX'%(side),'%s_foot_rock_con.colorIfFalse.colorIfFalseG'%(side)),('%s_foot_rock_mult.outputX'%(side),'%s_foot_rock_con.colorIfTrue.colorIfTrueR'%(side)),('%s_foot_rock_con.outColor.outColorR'%(side), '%s_roll_out_loc.rotate.rotateX'%(side)),('%s_foot_rock_con.outColor.outColorG'%(side), '%s_roll_in_loc.rotate.rotateX'%(side)),('%s_ik_leg_ctrl.footRock'%(side), '%s_foot_rock_con.firstTerm'%(side))]
for each in list:
cmds.connectAttr(each[0],each[1])
list = [('%s_foot_rock_mult.input2X'%(side),-1),('%s_foot_rock_con.operation'%(side),2),('%s_foot_rock_con.colorIfFalse.colorIfFalseR'%(side),0),('%s_foot_rock_con.colorIfFalse.colorIfFalseB'%(side),0)]
for each in list:
cmds.setAttr(each[0],each[1])
cmds.scaleConstraint('world_ctrl','%s_foot_ikHandle_grp'%(side),mo=True)
#IKlegPVcrv#
cmds.curve(d=1, p=[(0, 0, 0),(0, 10, 0)])
cmds.rename('%s_knee_direction_crv'%(side))
nameOfLoc = ['%s_knee_01_loc'%(side),'%s_knee_02_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('%s_knee_01_loc.translateY'%(side),0),('%s_knee_02_loc.translateY'%(side),10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_knee_01_loc.worldPosition[0]'%(side),'%s_knee_direction_crvShape.controlPoints[0]'%(side)),('%s_knee_02_loc.worldPosition[0]'%(side),'%s_knee_direction_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
toSetAttr = [('%s_knee_direction_crv.overrideEnabled'%(side),1),('%s_knee_direction_crv.overrideDisplayType'%(side),2),('%s_knee_01_loc.visibility'%(side),0),('%s_knee_02_loc.visibility'%(side),0)]
for each in toSetAttr:
cmds.setAttr(each[0],each[1])
toGetParent = [('%s_knee_ctrl'%(side),'%s_knee_01_loc'%(side)),('%s_ik_leg_02_jnt'%(side),'%s_knee_02_loc'%(side))]
for each in toGetParent:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.group(n='%s_knee_direction_crv_grp'%(side),em = True)
toGetParent = [('%s_knee_01_loc'%(side),'%s_knee_direction_crv_grp'%(side)),('%s_knee_02_loc'%(side),'%s_knee_direction_crv_grp'%(side)),('%s_knee_direction_crv'%(side),'%s_knee_direction_crv_grp'%(side))]
for each in toGetParent:
cmds.parent(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
IKlegSetup('l')
IKlegSetup('r')
def IKFKlegSetup(side):
nameOfJoint = [('%s_leg_01_bln_jnt'%(side)),('%s_leg_02_bln_jnt'%(side)),('%s_leg_03_bln_jnt'%(side)),('%s_leg_04_bln_jnt'%(side))]
for each in nameOfJoint:
cmds.joint(n=each)
toGetJointPos = [('%s_leg_01_setup'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_leg_04_bln_jnt'%(side))]
for each in toGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
toSetDrawStyle = [('%s_leg_01_bln_jnt.drawStyle'%(side)),('%s_leg_02_bln_jnt.drawStyle'%(side)),('%s_leg_03_bln_jnt.drawStyle'%(side))]
for each in toSetDrawStyle:
cmds.setAttr(each,2)
cmds.parent(w = True)
cmds.makeIdentity( '%s_leg_01_bln_jnt'%(side), apply=True, translate=True, rotate=True )
cmds.curve(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.rename('%s_leg_ik_fk_switch'%(side))
ControllerAttr('%s_leg_ik_fk_switch'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.group(n='%s_leg_ik_fk_switch_grp'%(side))
cmds.parent('%s_leg_ik_fk_switch_grp'%(side), 'world_ctrl')
cmds.addAttr('%s_leg_ik_fk_switch'%(side),sn='IKFK', min = 0, max=1 ,k=1)
cmds.addAttr('%s_leg_ik_fk_switch'%(side),sn='bendyVis',at = 'bool',k=1)
parentCon = [('%s_leg_03_bln_jnt'%(side), '%s_leg_ik_fk_switch_grp'%(side)),('%s_fk_leg_01_jnt'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_ik_leg_01_jnt'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_fk_leg_02_jnt'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_ik_leg_02_jnt'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_fk_leg_03_jnt'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_ik_leg_03_jnt'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_fk_leg_04_jnt'%(side),'%s_leg_04_bln_jnt'%(side)),('%s_ik_leg_04_jnt'%(side),'%s_leg_04_bln_jnt'%(side))]
for each in parentCon:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.shadingNode('reverse',n = '%s_leg_ik_rev'%(side),asUtility=1)
toConnectAttr = [('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_01_bln_jnt_parentConstraint1.%s_fk_leg_01_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_02_bln_jnt_parentConstraint1.%s_fk_leg_02_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_03_bln_jnt_parentConstraint1.%s_fk_leg_03_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_04_bln_jnt_parentConstraint1.%s_fk_leg_04_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_ik_rev.inputX'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_01_bln_jnt_parentConstraint1.%s_ik_leg_01_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_02_bln_jnt_parentConstraint1.%s_ik_leg_02_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_03_bln_jnt_parentConstraint1.%s_ik_leg_03_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_04_bln_jnt_parentConstraint1.%s_ik_leg_04_jntW1'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_fk_leg_01_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_ik_leg_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_knee_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_knee_direction_crv_grp.visibility'%(side))]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
cmds.parent('%s_leg_01_bln_jnt'%(side),'spine_01_bln_jnt')
cmds.parent('%s_leg_04_bln_jnt'%(side),'%s_leg_03_bln_jnt'%(side))
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
IKFKlegSetup('l')
IKFKlegSetup('r')
def StrechyLegSetup(side):
#StrechyLeg#
jointList = ['%s_leg_01_length_jnt'%(side),'%s_leg_02_length_jnt'%(side),'%s_leg_03_length_jnt'%(side)]
for each in jointList:
cmds.joint(n=each)
cmds.group(n='%s_leg_length_jnt_grp'%(side),em=True)
cmds.parent('%s_leg_01_length_jnt'%(side),'%s_leg_length_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_leg_length_jnt_grp'%(side),mo=True)
listOfToGetJointPos = [('%s_leg_01_setup'%(side),'%s_leg_01_length_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_leg_02_length_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_leg_03_length_jnt'%(side))]
for each in listOfToGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
addNode = [('distanceBetween','%s_upr_leg_dist'%(side)),('distanceBetween','%s_lwr_leg_dist'%(side)),('addDoubleLinear','%s_leg_full_dist'%(side)),('distanceBetween','%s_leg_stretch_dist'%(side)),('condition','%s_leg_stretch_cond'%(side)),('multiplyDivide','%s_leg_stretch_mult'%(side)),('multiplyDivide','%s_upr_leg_strecth_mult'%(side)),('multiplyDivide','%s_lwr_leg_strecth_mult'%(side)),('multiplyDivide','%s_leg_strecth_option_mult'%(side))]
for each in addNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
cmds.setAttr('%s_leg_stretch_cond.operation'%(side),2)
cmds.setAttr('%s_leg_stretch_mult.operation'%(side),2)
addLoc = [('%s_leg_start_dist_loc'%(side)),('%s_leg_end_dist_loc'%(side))]
for each in addLoc:
cmds.spaceLocator(n=each)
cmds.group(n='%s_leg_start_dist_loc_grp'%(side),em=True)
cmds.parent('%s_leg_start_dist_loc'%(side),'%s_leg_start_dist_loc_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_leg_start_dist_loc_grp'%(side),mo=True)
toConnectNode = [('%s_leg_01_length_jnt.worldMatrix'%(side),'%s_upr_leg_dist.inMatrix1'%(side)),('%s_leg_02_length_jnt.worldMatrix'%(side),'%s_upr_leg_dist.inMatrix2'%(side)),('%s_leg_02_length_jnt.worldMatrix'%(side),'%s_lwr_leg_dist.inMatrix1'%(side)),('%s_leg_03_length_jnt.worldMatrix'%(side),'%s_lwr_leg_dist.inMatrix2'%(side)),('%s_upr_leg_dist.distance'%(side),'%s_leg_full_dist.input1'%(side)),('%s_lwr_leg_dist.distance'%(side),'%s_leg_full_dist.input2'%(side)),('%s_leg_start_dist_loc.worldMatrix'%(side),'%s_leg_stretch_dist.inMatrix1'%(side)),('%s_leg_end_dist_loc.worldMatrix'%(side),'%s_leg_stretch_dist.inMatrix2'%(side)),('%s_leg_stretch_dist.distance'%(side),'%s_leg_stretch_cond.firstTerm'%(side)),('%s_leg_full_dist.output'%(side),'%s_leg_stretch_cond.secondTerm'%(side)),('%s_leg_stretch_dist.distance'%(side),'%s_leg_stretch_mult.input1X'%(side)),('%s_leg_full_dist.output'%(side),'%s_leg_stretch_mult.input2X'%(side)),('%s_leg_stretch_mult.outputX'%(side),'%s_leg_stretch_cond.colorIfTrue.colorIfTrueR'%(side)),('%s_leg_stretch_cond.outColor.outColorR'%(side),'%s_lwr_leg_strecth_mult.input1X'%(side)),('%s_leg_stretch_cond.outColor.outColorR'%(side),'%s_upr_leg_strecth_mult.input1X'%(side)),('%s_leg_02_setup.translateX'%(side),'%s_upr_leg_strecth_mult.input2X'%(side)),('%s_leg_03_setup.translateX'%(side),'%s_lwr_leg_strecth_mult.input2X'%(side)),('%s_upr_leg_strecth_mult.outputX'%(side),'%s_ik_leg_02_jnt.translateX'%(side)),('%s_lwr_leg_strecth_mult.outputX'%(side),'%s_ik_leg_03_jnt.translateX'%(side)),('%s_ik_leg_ctrl.stretch'%(side),'%s_leg_strecth_option_mult.input1X'%(side)),('%s_leg_strecth_option_mult.outputX'%(side),'%s_leg_stretch_cond.operation'%(side))]
for each in toConnectNode:
cmds.connectAttr(each[0],each[1])
toSetVis = [('%s_leg_start_dist_loc.visibility'%(side)),('%s_leg_end_dist_loc.visibility'%(side))]
for each in toSetVis:
cmds.setAttr(each,0)
toGetLocPos = [('%s_leg_01_setup'%(side),'%s_leg_start_dist_loc'%(side)),('%s_leg_03_setup'%(side),'%s_leg_end_dist_loc'%(side))]
for each in toGetLocPos:
forDel = cmds.pointConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.parentConstraint('spine_01_bln_jnt','%s_leg_start_dist_loc'%(side),mo=True)
cmds.parent('%s_leg_end_dist_loc'%(side),'%s_ik_leg_ctrl'%(side))
cmds.setAttr('%s_leg_strecth_option_mult.input2X'%(side),2)
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
StrechyLegSetup('l')
StrechyLegSetup('r')
def legJointGroup():
cmds.group(n='l_leg_jnt_grp',em=True)
cmds.group(n='r_leg_jnt_grp',em=True)
cmds.group(n='leg_jnt_grp',em=True)
listOfJnt = [('r_leg_01_bln_jnt','r_leg_jnt_grp'),('l_leg_01_bln_jnt','l_leg_jnt_grp'),('l_leg_jnt_grp','leg_jnt_grp'),('r_leg_jnt_grp','leg_jnt_grp'),('l_fk_leg_01_jnt','l_leg_jnt_grp'),('r_fk_leg_01_jnt','r_leg_jnt_grp'),('l_ik_leg_jnt_grp','l_leg_jnt_grp'),('r_ik_leg_jnt_grp','r_leg_jnt_grp'),('r_leg_length_jnt_grp','r_leg_jnt_grp'),('l_leg_length_jnt_grp','l_leg_jnt_grp')]
for each in listOfJnt:
cmds.parent(each[0],each[1])
legJointGroup()
bendyLeglabel = cmds.checkBox('bendyLeg', q=1,label=1)
bendyLeglabel = cmds.checkBox('bendyLeg', q=1,v=1 )
if bendyLeglabel == 1:
print(buildBendyLeg())
elif bendyLeglabel == 0:
print(noBendyLeg())
def neckSetup():
#############necksetupGorup####################################
createJoint = [('neck_01_jnt'),('neck_02_jnt'),('head_jnt')]
for each in createJoint:
cmds.joint(n=each)
cmds.curve(d=1, p=[(0.0, -4.488101857837618, -9.88295369549351),(1.845970443850507, -2.669731881954042, -9.58101846750181),(3.691940887701014, -0.9395124651324274, -8.94542404852105),(5.5379124591137385, 0.6419036933703752, -7.998451067974649),(3.691940887701014, 0.6419036933703752, -7.998451067974649),(1.845970443850507, 0.6419036933703752, -7.998451067974649),(1.845970443850507, 2.0190845073658616, -6.7732938299919585),(1.845970443850507, 3.143754528061804, -5.312898924323979),(1.845970443850507, 3.97648967007558, -3.6684576756581033),(1.8351740356152193, 4.488101857837621, -1.9084097279272163),(3.606018391581394, 3.9764896700755794, -1.9084097279272163),(5.250459640247268, 3.1437545280618036, -1.9084097279272163),(6.710854545915254, 2.0190845073658608, -1.9084097279272163),(7.936011783897939, 0.641903693370374, -1.9084097279272163),(7.936011783897939, 0.641903693370374, -3.7543801717777243),(7.936011783897939, 0.6419036933703747, -5.600351743190446),(8.882984764444341, -0.9395124651324284, -3.7543801717777243),(9.5185791834251, -2.669731881954045, -1.9084097279272174),(9.820514411416799, -4.488101857837621, -0.062439284076711864),(9.5185791834251, -2.669731881954045, 1.783531159773795),(8.882984764444341, -0.9395124651324317, 3.629501603624302),(7.936011783897939, 0.6419036933703725, 5.475473175037026),(7.936011783897939, 0.641903693370373, 3.6295016036243037),(7.936011783897939, 0.641903693370373, 1.7835311597737955),(6.710854545915254, 2.0190845073658603, 1.7835311597737955),(5.250459640247268, 3.1437545280618036, 1.7835311597737957),(3.606018391581394, 3.976489670075578, 1.7835311597737957),(1.8351740356152193, 4.488101857837621, 1.7835311597737964),(1.845970443850507, 3.976489670075578, 3.5435791075046823),(1.845970443850507, 3.143754528061802, 5.188020356170558),(1.845970443850507, 2.0190845073658594, 6.64841526183854),(1.845970443850507, 0.641903693370372, 7.87357249982123),(3.691940887701014, 0.641903693370372, 7.87357249982123),(5.5379124591137385, 0.641903693370372, 7.87357249982123),(3.691940887701014, -0.9395124651324329, 8.820545480367631),(1.845970443850507, -2.6697318819540463, 9.45613989934839),(0.0, -4.488101857837623, 9.758075127340078),(-1.8459704438505065, -2.6697318819540463, 9.45613989934839),(-3.691940887701013, -0.9395124651324329, 8.820545480367631),(-5.537912459113736, 0.641903693370372, 7.87357249982123),(-3.691940887701013, 0.641903693370372, 7.87357249982123),(-1.8459704438505065, 0.641903693370372, 7.87357249982123),(-1.8459704438505065, 2.0190845073658594, 6.64841526183854),(-1.8459704438505065, 3.143754528061802, 5.188020356170558),(-1.8459704438505065, 3.976489670075578, 3.5435791075046823),(-1.835174035615219, 4.488101857837621, 1.7835311597737964),(-3.6060183915813933, 3.976489670075578, 1.7835311597737957),(-5.250459640247268, 3.1437545280618036, 1.7835311597737957),(-6.710854545915253, 2.0190845073658603, 1.7835311597737955),(-7.936011783897938, 0.641903693370373, 1.7835311597737955),(-7.936011783897938, 0.641903693370373, 3.6295016036243037),(-7.936011783897938, 0.6419036933703725, 5.475473175037026),(-8.882984764444341, -0.9395124651324317, 3.629501603624302),(-9.5185791834251, -2.669731881954045, 1.783531159773795),(-9.820514411416799, -4.488101857837621, -0.062439284076711864),(-9.5185791834251, -2.669731881954045, -1.9084097279272174),(-8.882984764444341, -0.9395124651324284, -3.7543801717777243),(-7.936011783897938, 0.6419036933703747, -5.600351743190446),(-7.936011783897938, 0.641903693370374, -3.7543801717777243),(-7.936011783897938, 0.641903693370374, -1.9084097279272163),(-6.710854545915253, 2.0190845073658608, -1.9084097279272163),(-5.250459640247268, 3.1437545280618036, -1.9084097279272163),(-3.6060183915813933, 3.9764896700755794, -1.9084097279272163),(-1.8459704438505065, 4.488101857837621, -1.8976133196919278),(-1.8459704438505065, 3.97648967007558, -3.6684576756581033),(-1.8459704438505065, 3.143754528061804, -5.312898924323979),(-1.8459704438505065, 2.0190845073658616, -6.7732938299919585),(-1.8459704438505065, 0.6419036933703752, -7.998451067974649),(-3.691940887701013, 0.6419036933703752, -7.998451067974649),(-5.537912459113736, 0.6419036933703752, -7.998451067974649),(-3.691940887701013, -0.9395124651324274, -8.94542404852105),(-1.8459704438505065, -2.669731881954042, -9.58101846750181),(0.0, -4.488101857837618, -9.88295369549351)])
cmds.rename('head_ctrl')
cmds.group(n='head_ctrl_grp')
cmds.curve(d=1,p=[(-7.244192640355521, -0.7593145399841482, 0.0), (-7.244192640355521, 0.7593145399841418, 0.0),(-6.270239916630294, 0.7593145399841422, -3.6201258997795907),(-6.270239916630294, -0.7593145399841478, -3.6201258997795907),(-3.62012589977959, -0.7593145399841466, -6.270239916630294),(-3.620125899779591, 0.7593145399841434, -6.270239916630294),(-3.3720339408922273e-16, 0.759314539984145, -7.244192640355521),(3.3720339408922273e-16, -0.759314539984145, -7.244192640355521),(3.620125899779591, -0.7593145399841434, -6.270239916630294),(3.62012589977959, 0.7593145399841466, -6.270239916630294),(6.270239916630294, 0.7593145399841478, -3.6201258997795907),(6.270239916630294, -0.7593145399841422, -3.6201258997795907),(7.244192640355521, -0.7593145399841418, 0.0),(7.244192640355521, 0.7593145399841482, 0.0),(6.270239916630294, 0.7593145399841478, 3.6201258997795907),(6.270239916630294, -0.7593145399841422, 3.6201258997795907),(3.620125899779591, -0.7593145399841434, 6.270239916630294),(3.62012589977959, 0.7593145399841466, 6.270239916630294),(-3.3720339408922273e-16, 0.759314539984145, 7.244192640355521),(3.3720339408922273e-16, -0.759314539984145, 7.244192640355521),(-3.62012589977959, -0.7593145399841466, 6.270239916630294),(-3.620125899779591, 0.7593145399841434, 6.270239916630294),(-6.270239916630294, 0.7593145399841422, 3.6201258997795907),(-6.270239916630294, -0.7593145399841478, 3.6201258997795907),(-7.244192640355521, -0.7593145399841482, 0.0)])
cmds.rename('neck_ctrl')
cmds.group(n='neck_ctrl_grp')
parentConForPos = [('neck_setup','neck_01_jnt'),('head_setup','head_jnt'),('neck_setup','neck_ctrl_grp'),('head_setup','head_ctrl_grp')]
for each in parentConForPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
pointneckjnt = cmds.pointConstraint('neck_01_jnt','neck_02_jnt',mo = False)
cmds.pointConstraint('head_setup','neck_02_jnt',mo = False)
orientneckjnt = cmds.orientConstraint('neck_setup','neck_02_jnt',mo = False)
cmds.delete(pointneckjnt)
cmds.delete(orientneckjnt)
toParent = [('neck_01_jnt','spine_03_bln_jnt'),('head_ctrl_grp','neck_ctrl')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.parentConstraint('spine_03_bln_jnt','neck_ctrl_grp',mo=True)
cmds.makeIdentity('neck_01_jnt', apply=True, rotate=True )
toParentCon = [('neck_ctrl','neck_01_jnt'),('head_ctrl','head_jnt')]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.shadingNode('multiplyDivide',n = 'neck_mult',asUtility=1)
toSetAttr = [('neck_mult.operation'),('neck_mult.input2X')]
for each in toSetAttr:
cmds.setAttr(each,2)
toConnectAttr = [('head_ctrl.rotateY','neck_mult.input1X'),('neck_mult.outputX','neck_02_jnt.rotateY')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
toSetControllerAttr = [('neck_ctrl'),('head_ctrl')]
for each in toSetControllerAttr:
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('EugenesProgressBar', edit=True, step=1)
neckSetup()
def eyeAimSetup():
cmds.curve(d=1,p=[(10, -4, 0),(10, 4, 0),(-10, 4, 0),(-10, -4, 0),(10, -4, 0)])
cmds.rename('eye_aim_ctrl')
cmds.group(n='eye_aim_ctrl_grp')
forDel = cmds.pointConstraint('eye_aim_setup','eye_aim_ctrl_grp')
cmds.delete(forDel)
cmds.setAttr ('eye_aim_ctrl'+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.overrideEnabled' ,True)
cmds.setAttr ('eye_aim_ctrl'+'.overrideColor' ,18)
cmds.addAttr ('eye_aim_ctrl', at = 'enum', keyable=True, en = 'string1:string2:', ln='follow')
cmds.addAttr ('eye_aim_ctrl'+'.follow', e=True, en = 'world:head:')
cmds.parentConstraint('head_ctrl','eye_aim_ctrl_grp',mo = True)
cmds.connectAttr('eye_aim_ctrl.follow','eye_aim_ctrl_grp_parentConstraint1.head_ctrlW0')
cmds.parent('eye_aim_ctrl_grp','world_ctrl')
eyeAimSetup()
def eyeSetup(side):
list = [('%s_eye_aim_ctrl'%(side),'%s_eye_aim_ctrl_grp'%(side))]
for each in list:
cmds.curve(d=1,p=[(2.5, 0, 0),(2.5, 1, 0),(1, 2.5, 0),(-1, 2.5, 0),(-2.5, 1, 0),(-2.5, -1, 0),(-1, -2.5, 0),(1, -2.5, 0),(2.5, -1, 0),(2.5, 0, 0)])
cmds.rename(each[0])
cmds.group(n=each[1])
cmds.setAttr (each[0]+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.overrideEnabled' ,True)
cmds.setAttr (each[0]+'.overrideColor' ,18)
list = [('%s_eye_setup'%(side),'%s_eye_aim_ctrl_grp'%(side))]
for each in list:
forDel = cmds.pointConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_eye_aim_ctrl_grp'%(side),'eye_aim_ctrl')]
for each in list:
cmds.parent(each[0],each[1])
cmds.setAttr('%s_eye_aim_ctrl_grp.translateZ'%(side),0)
cmds.joint(n='%s_eye_aim_jnt'%(side))
cmds.parent(w = True)
cmds.spaceLocator(n='%s_eye_aim_up_loc'%(side))
cmds.group(n='%s_eye_aim_up_loc_grp'%(side))
list = [('%s_eye_setup'%(side),'%s_eye_aim_jnt'%(side)),('%s_eye_setup'%(side),'%s_eye_aim_up_loc_grp'%(side))]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.setAttr('%s_eye_aim_up_loc.translateY'%(side),10)
cmds.parentConstraint('head_ctrl','%s_eye_aim_up_loc_grp'%(side),mo = True)
cmds.aimConstraint('%s_eye_aim_ctrl'%(side),'%s_eye_aim_jnt'%(side),wut = 'object',wuo = '%s_eye_aim_up_loc'%(side),mo = True)
cmds.parent('%s_eye_aim_jnt'%(side),'head_jnt')
eyeSetup('l')
eyeSetup('r')
def buildSpineSkinJoint():
nameofJoint = [('spine_01_bind_jnt'),('spine_02_bind_jnt'),('spine_03_bind_jnt'),('neck_01_bind_jnt'),('neck_02_bind_jnt'),('head_bind_jnt'),('l_eye_aim_bind_jnt'),('r_eye_aim_bind_jnt')]
for each in nameofJoint:
cmds.joint(n=each)
cmds.parent('r_eye_aim_bind_jnt','head_bind_jnt')
#parentConSpineJointForPosition#
parentConSpineJntForPos = [('spine_01_bln_jnt','spine_01_bind_jnt')],[('spine_02_bln_jnt','spine_02_bind_jnt')],[('spine_03_bln_jnt','spine_03_bind_jnt')],[('neck_01_jnt','neck_01_bind_jnt')],[('neck_02_jnt','neck_02_bind_jnt')],[('head_jnt','head_bind_jnt'),('l_eye_aim_jnt','l_eye_aim_bind_jnt'),('r_eye_aim_jnt','r_eye_aim_bind_jnt')]
for each in parentConSpineJntForPos:
for item in each:
parentConSpineForDel = cmds.parentConstraint(item[0],item[1],mo = False)
cmds.delete(parentConSpineForDel)
cmds.makeIdentity( 'spine_01_bind_jnt', apply=True, translate=True, rotate=True )
#parentRigJoint#
parentSpineConJnt = [('spine_01_bln_jnt','spine_01_bind_jnt')],[('spine_02_bln_jnt','spine_02_bind_jnt')],[('spine_03_bln_jnt','spine_03_bind_jnt')],[('neck_01_jnt','neck_01_bind_jnt')],[('neck_02_jnt','neck_02_bind_jnt')],[('head_jnt','head_bind_jnt'),('l_eye_aim_jnt','l_eye_aim_bind_jnt'),('r_eye_aim_jnt','r_eye_aim_bind_jnt')]
for each in parentSpineConJnt:
for item in each:
cmds.parentConstraint(item[0],item[1],mo = True)
cmds.scaleConstraint(item[0],item[1],mo = True)
buildSpineSkinJoint()
def bendyArmSkinJnt():
def buildLeftRightSkinJointArm(side):
nameOfJnt = [('%s_shoulder_bind_jnt'%(side)),('%s_upper_arm_01_bind_jnt'%(side)),('%s_upper_arm_02_bind_jnt'%(side)),('%s_upper_arm_03_bind_jnt'%(side)),('%s_upper_arm_04_bind_jnt'%(side)),('%s_lower_arm_01_bind_jnt'%(side)),('%s_lower_arm_02_bind_jnt'%(side)),('%s_lower_arm_03_bind_jnt'%(side)),('%s_lower_arm_04_bind_jnt'%(side)),('%s_lower_arm_05_bind_jnt'%(side)),('%s_wrist_bind_jnt'%(side)),('%s_thumb_01_bind_jnt'%(side)),('%s_thumb_02_bind_jnt'%(side)),('%s_thumb_03_bind_jnt'%(side)),('%s_index_01_bind_jnt'%(side)),('%s_index_02_bind_jnt'%(side)),('%s_index_03_bind_jnt'%(side)),('%s_index_04_bind_jnt'%(side)),('%s_middle_01_bind_jnt'%(side)),('%s_middle_02_bind_jnt'%(side)),('%s_middle_03_bind_jnt'%(side)),('%s_middle_04_bind_jnt'%(side)),('%s_ring_01_bind_jnt'%(side)),('%s_ring_02_bind_jnt'%(side)),('%s_ring_03_bind_jnt'%(side)),('%s_ring_04_bind_jnt'%(side)),('%s_pinky_01_bind_jnt'%(side)),('%s_pinky_02_bind_jnt'%(side)),('%s_pinky_03_bind_jnt'%(side)),('%s_pinky_04_bind_jnt'%(side))]
for each in nameOfJnt:
cmds.joint(n=each)
cmds.parent('%s_shoulder_bind_jnt'%(side),'spine_03_bind_jnt')
cmds.parent('%s_index_01_bind_jnt'%(side),'%s_wrist_bind_jnt'%(side))
cmds.parent('%s_middle_01_bind_jnt'%(side),'%s_wrist_bind_jnt'%(side))
cmds.parent('%s_ring_01_bind_jnt'%(side),'%s_wrist_bind_jnt'%(side))
cmds.parent('%s_pinky_01_bind_jnt'%(side),'%s_wrist_bind_jnt'%(side))
#parentConJointForPosition#
parentConlrJntForPos = [('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))],[('%s_upr_bendy_arm_01_jnt'%(side),'%s_upper_arm_01_bind_jnt'%(side))],[('%s_upr_bendy_arm_02_jnt'%(side),'%s_upper_arm_02_bind_jnt'%(side))],[('%s_upr_bendy_arm_03_jnt'%(side),'%s_upper_arm_03_bind_jnt'%(side))],[('%s_upr_bendy_arm_04_jnt'%(side),'%s_upper_arm_04_bind_jnt'%(side))],[('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lower_arm_01_bind_jnt'%(side))],[('%s_lwr_bendy_arm_02_jnt'%(side),'%s_lower_arm_02_bind_jnt'%(side))],[('%s_lwr_bendy_arm_03_jnt'%(side),'%s_lower_arm_03_bind_jnt'%(side))],[('%s_lwr_bendy_arm_04_jnt'%(side),'%s_lower_arm_04_bind_jnt'%(side))],[('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lower_arm_05_bind_jnt'%(side))],[('%s_arm_03_bln_jnt'%(side),'%s_wrist_bind_jnt'%(side))],[('%s_thumb_01_jnt'%(side),'%s_thumb_01_bind_jnt'%(side))],[('%s_thumb_02_jnt'%(side),'%s_thumb_02_bind_jnt'%(side))],[('%s_thumb_03_jnt'%(side),'%s_thumb_03_bind_jnt'%(side))],[('%s_index_01_jnt'%(side),'%s_index_01_bind_jnt'%(side))],[('%s_index_02_jnt'%(side),'%s_index_02_bind_jnt'%(side))],[('%s_index_03_jnt'%(side),'%s_index_03_bind_jnt'%(side))],[('%s_index_04_jnt'%(side),'%s_index_04_bind_jnt'%(side))],[('%s_middle_01_jnt'%(side),'%s_middle_01_bind_jnt'%(side))],[('%s_middle_02_jnt'%(side),'%s_middle_02_bind_jnt'%(side))],[('%s_middle_03_jnt'%(side),'%s_middle_03_bind_jnt'%(side))],[('%s_middle_04_jnt'%(side),'%s_middle_04_bind_jnt'%(side))],[('%s_ring_01_jnt'%(side),'%s_ring_01_bind_jnt'%(side))],[('%s_ring_02_jnt'%(side),'%s_ring_02_bind_jnt'%(side))],[('%s_ring_03_jnt'%(side),'%s_ring_03_bind_jnt'%(side))],[('%s_ring_04_jnt'%(side),'%s_ring_04_bind_jnt'%(side))],[('%s_pinky_01_jnt'%(side),'%s_pinky_01_bind_jnt'%(side))],[('%s_pinky_02_jnt'%(side),'%s_pinky_02_bind_jnt'%(side))],[('%s_pinky_03_jnt'%(side),'%s_pinky_03_bind_jnt'%(side))],[('%s_pinky_04_jnt'%(side),'%s_pinky_04_bind_jnt'%(side))]
for each in parentConlrJntForPos:
for item in each:
parentConForDel = cmds.parentConstraint(item[0],item[1],mo = False)
cmds.delete(parentConForDel)
#freezeRigJoint#
cmds.makeIdentity('%s_shoulder_bind_jnt'%(side),apply=True, translate=True, rotate=True)
#parentRigJoint#
parentlrConJnt = [('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))],[('%s_upr_bendy_arm_01_jnt'%(side),'%s_upper_arm_01_bind_jnt'%(side))],[('%s_upr_bendy_arm_02_jnt'%(side),'%s_upper_arm_02_bind_jnt'%(side))],[('%s_upr_bendy_arm_03_jnt'%(side),'%s_upper_arm_03_bind_jnt'%(side))],[('%s_upr_bendy_arm_04_jnt'%(side),'%s_upper_arm_04_bind_jnt'%(side))],[('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lower_arm_01_bind_jnt'%(side))],[('%s_lwr_bendy_arm_02_jnt'%(side),'%s_lower_arm_02_bind_jnt'%(side))],[('%s_lwr_bendy_arm_03_jnt'%(side),'%s_lower_arm_03_bind_jnt'%(side))],[('%s_lwr_bendy_arm_04_jnt'%(side),'%s_lower_arm_04_bind_jnt'%(side))],[('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lower_arm_05_bind_jnt'%(side))],[('%s_arm_03_bln_jnt'%(side),'%s_wrist_bind_jnt'%(side))],[('%s_thumb_01_jnt'%(side),'%s_thumb_01_bind_jnt'%(side))],[('%s_thumb_02_jnt'%(side),'%s_thumb_02_bind_jnt'%(side))],[('%s_thumb_03_jnt'%(side),'%s_thumb_03_bind_jnt'%(side))],[('%s_index_01_jnt'%(side),'%s_index_01_bind_jnt'%(side))],[('%s_index_02_jnt'%(side),'%s_index_02_bind_jnt'%(side))],[('%s_index_03_jnt'%(side),'%s_index_03_bind_jnt'%(side))],[('%s_index_04_jnt'%(side),'%s_index_04_bind_jnt'%(side))],[('%s_middle_01_jnt'%(side),'%s_middle_01_bind_jnt'%(side))],[('%s_middle_02_jnt'%(side),'%s_middle_02_bind_jnt'%(side))],[('%s_middle_03_jnt'%(side),'%s_middle_03_bind_jnt'%(side))],[('%s_middle_04_jnt'%(side),'%s_middle_04_bind_jnt'%(side))],[('%s_ring_01_jnt'%(side),'%s_ring_01_bind_jnt'%(side))],[('%s_ring_02_jnt'%(side),'%s_ring_02_bind_jnt'%(side))],[('%s_ring_03_jnt'%(side),'%s_ring_03_bind_jnt'%(side))],[('%s_ring_04_jnt'%(side),'%s_ring_04_bind_jnt'%(side))],[('%s_pinky_01_jnt'%(side),'%s_pinky_01_bind_jnt'%(side))],[('%s_pinky_02_jnt'%(side),'%s_pinky_02_bind_jnt'%(side))],[('%s_pinky_03_jnt'%(side),'%s_pinky_03_bind_jnt'%(side))],[('%s_pinky_04_jnt'%(side),'%s_pinky_04_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.parentConstraint(item[0],item[1],mo = True)
scalelrConJnt = [('world_ctrl','%s_shoulder_bind_jnt'%(side))],[('world_ctrl','%s_upper_arm_01_bind_jnt'%(side))],[('world_ctrl','%s_upper_arm_02_bind_jnt'%(side))],[('world_ctrl','%s_upper_arm_03_bind_jnt'%(side))],[('world_ctrl','%s_upper_arm_04_bind_jnt'%(side))],[('world_ctrl','%s_lower_arm_01_bind_jnt'%(side))],[('world_ctrl','%s_lower_arm_02_bind_jnt'%(side))],[('world_ctrl','%s_lower_arm_03_bind_jnt'%(side))],[('world_ctrl','%s_lower_arm_04_bind_jnt'%(side))],[('world_ctrl','%s_lower_arm_05_bind_jnt'%(side))],[('world_ctrl','%s_wrist_bind_jnt'%(side))],[('world_ctrl','%s_thumb_01_bind_jnt'%(side))],[('world_ctrl','%s_thumb_02_bind_jnt'%(side))],[('world_ctrl','%s_thumb_03_bind_jnt'%(side))],[('world_ctrl','%s_index_01_bind_jnt'%(side))],[('world_ctrl','%s_index_02_bind_jnt'%(side))],[('world_ctrl','%s_index_03_bind_jnt'%(side))],[('world_ctrl','%s_index_04_bind_jnt'%(side))],[('world_ctrl','%s_middle_01_bind_jnt'%(side))],[('world_ctrl','%s_middle_02_bind_jnt'%(side))],[('world_ctrl','%s_middle_03_bind_jnt'%(side))],[('world_ctrl','%s_middle_04_bind_jnt'%(side))],[('world_ctrl','%s_ring_01_bind_jnt'%(side))],[('world_ctrl','%s_ring_02_bind_jnt'%(side))],[('world_ctrl','%s_ring_03_bind_jnt'%(side))],[('world_ctrl','%s_ring_04_bind_jnt'%(side))],[('world_ctrl','%s_pinky_01_bind_jnt'%(side))],[('world_ctrl','%s_pinky_02_bind_jnt'%(side))],[('world_ctrl','%s_pinky_03_bind_jnt'%(side))],[('world_ctrl','%s_pinky_04_bind_jnt'%(side))]
for each in scalelrConJnt:
for item in each:
cmds.scaleConstraint(item[0],item[1],mo = True)
buildLeftRightSkinJointArm('l')
buildLeftRightSkinJointArm('r')
def noBendyArmSkinJnt():
def buildLeftRightSkinJointWithNoBendyArm(side):
nameOfJnt = [('%s_shoulder_bind_jnt'%(side)),('%s_arm_01_bind_jnt'%(side)),('%s_arm_02_bind_jnt'%(side)),('%s_arm_03_bind_jnt'%(side)),('%s_thumb_01_bind_jnt'%(side)),('%s_thumb_02_bind_jnt'%(side)),('%s_thumb_03_bind_jnt'%(side)),('%s_index_01_bind_jnt'%(side)),('%s_index_02_bind_jnt'%(side)),('%s_index_03_bind_jnt'%(side)),('%s_index_04_bind_jnt'%(side)),('%s_middle_01_bind_jnt'%(side)),('%s_middle_02_bind_jnt'%(side)),('%s_middle_03_bind_jnt'%(side)),('%s_middle_04_bind_jnt'%(side)),('%s_ring_01_bind_jnt'%(side)),('%s_ring_02_bind_jnt'%(side)),('%s_ring_03_bind_jnt'%(side)),('%s_ring_04_bind_jnt'%(side)),('%s_pinky_01_bind_jnt'%(side)),('%s_pinky_02_bind_jnt'%(side)),('%s_pinky_03_bind_jnt'%(side)),('%s_pinky_04_bind_jnt'%(side))]
for each in nameOfJnt:
cmds.joint(n=each)
cmds.parent('%s_shoulder_bind_jnt'%(side),'spine_03_bind_jnt')
cmds.parent('%s_index_01_bind_jnt'%(side),'%s_arm_03_bind_jnt'%(side))
cmds.parent('%s_middle_01_bind_jnt'%(side),'%s_arm_03_bind_jnt'%(side))
cmds.parent('%s_ring_01_bind_jnt'%(side),'%s_arm_03_bind_jnt'%(side))
cmds.parent('%s_pinky_01_bind_jnt'%(side),'%s_arm_03_bind_jnt'%(side))
#parentConJointForPosition#
parentConlrJntForPos = [('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))],[('%s_arm_01_bln_jnt'%(side),'%s_arm_01_bind_jnt'%(side))],[('%s_arm_02_bln_jnt'%(side),'%s_arm_02_bind_jnt'%(side))],[('%s_arm_03_bln_jnt'%(side),'%s_arm_03_bind_jnt'%(side))],[('%s_thumb_01_jnt'%(side),'%s_thumb_01_bind_jnt'%(side))],[('%s_thumb_02_jnt'%(side),'%s_thumb_02_bind_jnt'%(side))],[('%s_thumb_03_jnt'%(side),'%s_thumb_03_bind_jnt'%(side))],[('%s_index_01_jnt'%(side),'%s_index_01_bind_jnt'%(side))],[('%s_index_02_jnt'%(side),'%s_index_02_bind_jnt'%(side))],[('%s_index_03_jnt'%(side),'%s_index_03_bind_jnt'%(side))],[('%s_index_04_jnt'%(side),'%s_index_04_bind_jnt'%(side))],[('%s_middle_01_jnt'%(side),'%s_middle_01_bind_jnt'%(side))],[('%s_middle_02_jnt'%(side),'%s_middle_02_bind_jnt'%(side))],[('%s_middle_03_jnt'%(side),'%s_middle_03_bind_jnt'%(side))],[('%s_middle_04_jnt'%(side),'%s_middle_04_bind_jnt'%(side))],[('%s_ring_01_jnt'%(side),'%s_ring_01_bind_jnt'%(side))],[('%s_ring_02_jnt'%(side),'%s_ring_02_bind_jnt'%(side))],[('%s_ring_03_jnt'%(side),'%s_ring_03_bind_jnt'%(side))],[('%s_ring_04_jnt'%(side),'%s_ring_04_bind_jnt'%(side))],[('%s_pinky_01_jnt'%(side),'%s_pinky_01_bind_jnt'%(side))],[('%s_pinky_02_jnt'%(side),'%s_pinky_02_bind_jnt'%(side))],[('%s_pinky_03_jnt'%(side),'%s_pinky_03_bind_jnt'%(side))],[('%s_pinky_04_jnt'%(side),'%s_pinky_04_bind_jnt'%(side))]
for each in parentConlrJntForPos:
for item in each:
parentConForDel = cmds.parentConstraint(item[0],item[1],mo = False)
cmds.delete(parentConForDel)
#freezeRigJoint#
cmds.makeIdentity('%s_shoulder_bind_jnt'%(side),apply=True, translate=True, rotate=True)
#parentRigJoint#
parentlrConJnt = [('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))],[('%s_arm_01_bln_jnt'%(side),'%s_arm_01_bind_jnt'%(side))],[('%s_arm_02_bln_jnt'%(side),'%s_arm_02_bind_jnt'%(side))],[('%s_arm_03_bln_jnt'%(side),'%s_arm_03_bind_jnt'%(side))],[('%s_thumb_01_jnt'%(side),'%s_thumb_01_bind_jnt'%(side))],[('%s_thumb_02_jnt'%(side),'%s_thumb_02_bind_jnt'%(side))],[('%s_thumb_03_jnt'%(side),'%s_thumb_03_bind_jnt'%(side))],[('%s_index_01_jnt'%(side),'%s_index_01_bind_jnt'%(side))],[('%s_index_02_jnt'%(side),'%s_index_02_bind_jnt'%(side))],[('%s_index_03_jnt'%(side),'%s_index_03_bind_jnt'%(side))],[('%s_index_04_jnt'%(side),'%s_index_04_bind_jnt'%(side))],[('%s_middle_01_jnt'%(side),'%s_middle_01_bind_jnt'%(side))],[('%s_middle_02_jnt'%(side),'%s_middle_02_bind_jnt'%(side))],[('%s_middle_03_jnt'%(side),'%s_middle_03_bind_jnt'%(side))],[('%s_middle_04_jnt'%(side),'%s_middle_04_bind_jnt'%(side))],[('%s_ring_01_jnt'%(side),'%s_ring_01_bind_jnt'%(side))],[('%s_ring_02_jnt'%(side),'%s_ring_02_bind_jnt'%(side))],[('%s_ring_03_jnt'%(side),'%s_ring_03_bind_jnt'%(side))],[('%s_ring_04_jnt'%(side),'%s_ring_04_bind_jnt'%(side))],[('%s_pinky_01_jnt'%(side),'%s_pinky_01_bind_jnt'%(side))],[('%s_pinky_02_jnt'%(side),'%s_pinky_02_bind_jnt'%(side))],[('%s_pinky_03_jnt'%(side),'%s_pinky_03_bind_jnt'%(side))],[('%s_pinky_04_jnt'%(side),'%s_pinky_04_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.parentConstraint(item[0],item[1],mo = True)
scalelrConJnt = [('world_ctrl','%s_shoulder_bind_jnt'%(side))],[('world_ctrl','%s_arm_01_bind_jnt'%(side))],[('world_ctrl','%s_arm_02_bind_jnt'%(side))],[('world_ctrl','%s_arm_03_bind_jnt'%(side))],[('world_ctrl','%s_thumb_01_bind_jnt'%(side))],[('world_ctrl','%s_thumb_02_bind_jnt'%(side))],[('world_ctrl','%s_thumb_03_bind_jnt'%(side))],[('world_ctrl','%s_index_01_bind_jnt'%(side))],[('world_ctrl','%s_index_02_bind_jnt'%(side))],[('world_ctrl','%s_index_03_bind_jnt'%(side))],[('world_ctrl','%s_index_04_bind_jnt'%(side))],[('world_ctrl','%s_middle_01_bind_jnt'%(side))],[('world_ctrl','%s_middle_02_bind_jnt'%(side))],[('world_ctrl','%s_middle_03_bind_jnt'%(side))],[('world_ctrl','%s_middle_04_bind_jnt'%(side))],[('world_ctrl','%s_ring_01_bind_jnt'%(side))],[('world_ctrl','%s_ring_02_bind_jnt'%(side))],[('world_ctrl','%s_ring_03_bind_jnt'%(side))],[('world_ctrl','%s_ring_04_bind_jnt'%(side))],[('world_ctrl','%s_pinky_01_bind_jnt'%(side))],[('world_ctrl','%s_pinky_02_bind_jnt'%(side))],[('world_ctrl','%s_pinky_03_bind_jnt'%(side))],[('world_ctrl','%s_pinky_04_bind_jnt'%(side))]
for each in scalelrConJnt:
for item in each:
cmds.scaleConstraint(item[0],item[1],mo = True)
buildLeftRightSkinJointWithNoBendyArm('l')
buildLeftRightSkinJointWithNoBendyArm('r')
bendyArmlabel = cmds.checkBox('bendyArm', q=1,label=1)
bendyArmlabel = cmds.checkBox('bendyArm', q=1,v=1 )
if bendyArmlabel == 1:
print(bendyArmSkinJnt())
elif bendyArmlabel == 0:
print(noBendyArmSkinJnt())
def bendyLegSkinJnt():
def buildLeftRightLegSkinJoint(side):
nameOfJnt = [('%s_upr_leg_01_bind_jnt'%(side)),('%s_upr_leg_02_bind_jnt'%(side)),('%s_upr_leg_03_bind_jnt'%(side)),('%s_upr_leg_04_bind_jnt'%(side)),('%s_lwr_leg_01_bind_jnt'%(side)),('%s_lwr_leg_02_bind_jnt'%(side)),('%s_lwr_leg_03_bind_jnt'%(side)),('%s_lwr_leg_04_bind_jnt'%(side)),('%s_ankle_bind_jnt'%(side)),('%s_leg_ball_bind_jnt'%(side))]
for each in nameOfJnt:
cmds.joint(n=each)
cmds.parent('%s_upr_leg_01_bind_jnt'%(side),'spine_01_bind_jnt')
#parentConJointForPosition#
parentConlrJntForPos = [('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_leg_01_bind_jnt'%(side))],[('%s_upr_bendy_leg_02_jnt'%(side),'%s_upr_leg_02_bind_jnt'%(side))],[('%s_upr_bendy_leg_03_jnt'%(side),'%s_upr_leg_03_bind_jnt'%(side))],[('%s_upr_bendy_leg_04_jnt'%(side),'%s_upr_leg_04_bind_jnt'%(side))],[('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_leg_01_bind_jnt'%(side))],[('%s_lwr_bendy_leg_02_jnt'%(side),'%s_lwr_leg_02_bind_jnt'%(side))],[('%s_lwr_bendy_leg_03_jnt'%(side),'%s_lwr_leg_03_bind_jnt'%(side))],[('%s_lwr_bendy_leg_04_jnt'%(side),'%s_lwr_leg_04_bind_jnt'%(side))],[('%s_leg_03_bln_jnt'%(side),'%s_ankle_bind_jnt'%(side))],[('%s_leg_04_bln_jnt'%(side),'%s_leg_ball_bind_jnt'%(side))]
for each in parentConlrJntForPos:
for item in each:
parentConForDel = cmds.parentConstraint(item[0],item[1],mo = False)
cmds.delete(parentConForDel)
#freezeRigJoint#
cmds.makeIdentity('%s_upr_leg_01_bind_jnt'%(side),apply=True, translate=True, rotate=True)
#parentRigJoint#
parentlrConJnt = [('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_leg_01_bind_jnt'%(side))],[('%s_upr_bendy_leg_02_jnt'%(side),'%s_upr_leg_02_bind_jnt'%(side))],[('%s_upr_bendy_leg_03_jnt'%(side),'%s_upr_leg_03_bind_jnt'%(side))],[('%s_upr_bendy_leg_04_jnt'%(side),'%s_upr_leg_04_bind_jnt'%(side))],[('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_leg_01_bind_jnt'%(side))],[('%s_lwr_bendy_leg_02_jnt'%(side),'%s_lwr_leg_02_bind_jnt'%(side))],[('%s_lwr_bendy_leg_03_jnt'%(side),'%s_lwr_leg_03_bind_jnt'%(side))],[('%s_lwr_bendy_leg_04_jnt'%(side),'%s_lwr_leg_04_bind_jnt'%(side))],[('%s_leg_03_bln_jnt'%(side),'%s_ankle_bind_jnt'%(side))],[('%s_leg_04_bln_jnt'%(side),'%s_leg_ball_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.parentConstraint(item[0],item[1],mo = True)
parentlrConJnt = [('world_ctrl','%s_upr_leg_01_bind_jnt'%(side))],[('world_ctrl','%s_upr_leg_02_bind_jnt'%(side))],[('world_ctrl','%s_upr_leg_03_bind_jnt'%(side))],[('world_ctrl','%s_upr_leg_04_bind_jnt'%(side))],[('world_ctrl','%s_lwr_leg_01_bind_jnt'%(side))],[('world_ctrl','%s_lwr_leg_02_bind_jnt'%(side))],[('world_ctrl','%s_lwr_leg_03_bind_jnt'%(side))],[('world_ctrl','%s_lwr_leg_04_bind_jnt'%(side))],[('world_ctrl','%s_ankle_bind_jnt'%(side))],[('world_ctrl','%s_leg_ball_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.scaleConstraint(item[0],item[1],mo = True)
buildLeftRightLegSkinJoint('l')
buildLeftRightLegSkinJoint('r')
def noBendyLegSkinJnt():
def buildLeftRightSkinJointWithNoBendyLeg(side):
nameOfJnt = [('%s_leg_01_bind_jnt'%(side)),('%s_leg_02_bind_jnt'%(side)),('%s_leg_03_bind_jnt'%(side)),('%s_leg_04_bind_jnt'%(side))]
for each in nameOfJnt:
cmds.joint(n=each)
cmds.parent('%s_leg_01_bind_jnt'%(side),'spine_01_bind_jnt')
#parentConJointForPosition#
parentConlrJntForPos = [('%s_leg_01_bln_jnt'%(side),'%s_leg_01_bind_jnt'%(side))],[('%s_leg_02_bln_jnt'%(side),'%s_leg_02_bind_jnt'%(side))],[('%s_leg_03_bln_jnt'%(side),'%s_leg_03_bind_jnt'%(side))],[('%s_leg_04_bln_jnt'%(side),'%s_leg_04_bind_jnt'%(side))]
for each in parentConlrJntForPos:
for item in each:
parentConForDel = cmds.parentConstraint(item[0],item[1],mo = False)
cmds.delete(parentConForDel)
#freezeRigJoint#
cmds.makeIdentity('%s_leg_01_bind_jnt'%(side),apply=True, translate=True, rotate=True)
#parentRigJoint#
parentlrConJnt = [('%s_leg_01_bln_jnt'%(side),'%s_leg_01_bind_jnt'%(side))],[('%s_leg_02_bln_jnt'%(side),'%s_leg_02_bind_jnt'%(side))],[('%s_leg_03_bln_jnt'%(side),'%s_leg_03_bind_jnt'%(side))],[('%s_leg_04_bln_jnt'%(side),'%s_leg_04_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.parentConstraint(item[0],item[1],mo = True)
parentlrConJnt = [('world_ctrl','%s_leg_01_bind_jnt'%(side))],[('world_ctrl','%s_leg_02_bind_jnt'%(side))],[('world_ctrl','%s_leg_03_bind_jnt'%(side))],[('world_ctrl','%s_leg_04_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.scaleConstraint(item[0],item[1],mo = True)
buildLeftRightSkinJointWithNoBendyLeg('l')
buildLeftRightSkinJointWithNoBendyLeg('r')
bendyLeglabel = cmds.checkBox('bendyLeg', q=1,label=1)
bendyLeglabel = cmds.checkBox('bendyLeg', q=1,v=1 )
if bendyLeglabel == 1:
print(bendyLegSkinJnt())
elif bendyLeglabel == 0:
print(noBendyLegSkinJnt())
def groupAll():
createGroup = [('extra'),('rename'),('mesh_grp')]
for each in createGroup:
cmds.group(n=each,em=True)
cmds.setAttr('extra.visibility',0)
cmds.setAttr('world_setup.visibility',0)
cmds.setAttr('jnt_grp.visibility',0)
list = ['leg_bendy_setup_grp','l_upr_leg_bendy_jnt_grp','arm_bendy_setup_grp','r_upr_leg_bendy_jnt_grp','l_lwr_leg_bendy_jnt_grp','r_lwr_leg_bendy_jnt_grp','l_eye_aim_up_loc_grp','r_eye_aim_up_loc_grp']
for each in list:
if cmds.objExists(each):
cmds.parent(each,'extra')
else:
print('')
parentgrp = [('arm_jnt_grp','jnt_grp'),('spine_jnt_grp','jnt_grp'),('leg_jnt_grp','jnt_grp'),('r_fk_arm_01_ctrl_grp','world_ctrl'),('l_fk_arm_01_ctrl_grp','world_ctrl'),('neck_ctrl_grp','world_ctrl'),('spine_01_FK_ctrl_grp','world_ctrl'),('cog_ctrl_grp','world_ctrl'),('world_setup','rename'),('main_ctrl_grp','rename'),('jnt_grp','rename'),('mesh_grp','rename'),('spine_01_bind_jnt','rename'),('extra','rename'),('spine_IK_setup_grp','extra'),('spine_IK_ctrl_grp','world_ctrl'),('l_elbow_direction_crv_grp','main_ctrl_grp'),('r_elbow_direction_crv_grp','main_ctrl_grp'),('l_knee_direction_crv_grp','main_ctrl_grp'),('r_knee_direction_crv_grp','main_ctrl_grp')]
for each in parentgrp:
cmds.parent(each[0],each[1])
parentgroup = cmds.ls('l_elbow_loc_grp','l_upr_arm_bendy_jnt_grp','l_lwr_arm_bendy_jnt_grp','l_arm_start_dist_loc_grp','r_elbow_loc_grp','r_upr_arm_bendy_jnt_grp','r_lwr_arm_bendy_jnt_grp','r_arm_start_dist_loc_grp','l_knee_loc_grp','l_foot_ikHandle_grp','l_leg_start_dist_loc_grp','r_knee_loc_grp','r_foot_ikHandle_grp','r_leg_start_dist_loc_grp')
for each in parentgroup:
cmds.parent(each,'extra')
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
groupAll()
def progressBarWindowClose():
# the command to close the progress bar
cmds.deleteUI('EugenesProgress',window=True)
progressBarWindowClose()
upper_lid_vertex_ids = []
lower_lid_vertex_ids = []
joint_prefix = "eyelid_joint"
center_locator = "eye_display_loc"
def create_display_eye():
selected_objects = cmds.ls(selection=True)
cmds.spaceLocator(n='eye_display_loc')
cmds.polySphere(n='eye_display')
cmds.parent('eye_display','eye_display_loc')
list = [('eye_display' , '.scaleX'),('eye_display' , '.scaleY'),('eye_display' , '.scaleZ')]
for each in list:
cmds.setAttr(each[0] + each[1],0.75)
cmds.spaceLocator(n='eye_aim_up_loc')
cmds.parent('eye_aim_up_loc','eye_display_loc')
cmds.setAttr('eye_aim_up_loc.translateY',2)
cmds.setAttr('eye_aim_up_loc.visibility',0)
obj_center = cmds.xform(selected_objects, query=True, translation=True, worldSpace=True)
cmds.xform(selected_objects, translation=obj_center, worldSpace=True)
locator_translation = cmds.xform('eye_display_loc', query=True, translation=True, worldSpace=True)
if all(value == 0 for value in locator_translation):
forDel = cmds.parentConstraint(selected_objects, 'eye_display_loc', mo=False)
cmds.delete(forDel)
list = [('eye_aim_up_loc.scaleZ'),('eye_aim_up_loc.scaleY'),('eye_aim_up_loc.scaleX'),('eye_aim_up_loc.rotateZ'),('eye_aim_up_loc.rotateY'),('eye_aim_up_loc.rotateX'),('eye_aim_up_loc.translateZ'),('eye_aim_up_loc.translateY'),('eye_aim_up_loc.translateX'),('eye_aim_up_loc.visibility'),('eye_display.visibility'),('eye_display.translateX'),('eye_display.translateY'),('eye_display.translateZ'),('eye_display.rotateX'),('eye_display.rotateY'),('eye_display.rotateZ'),('eye_display.scaleX'),('eye_display.scaleY'),('eye_display.scaleZ')]
for each in list:
cmds.setAttr(each,keyable = False, cb = False, lock = True)
def store_vertex_ids():
global upper_lid_vertex_ids
upper_lid_vertex_ids = cmds.ls(selection=True, flatten=True)
#cmds.textScrollList(upperLidList, edit=True, removeAll=True)
#cmds.textScrollList(upperLidList, edit=True, append=upper_lid_vertex_ids)
edge_list = cmds.polyListComponentConversion(upper_lid_vertex_ids, fromVertex=True, toEdge=True)
sel = cmds.select(edge_list)
mel.eval('PolySelectTraverse 2;')
curve = cmds.polyToCurve(form=2, degree=1, ch=0, n="upper_lid_crv")
def store_lower_vertex_ids():
global lower_lid_vertex_ids
lower_lid_vertex_ids = cmds.ls(selection=True, flatten=True)
#cmds.textScrollList(lowerLidList, edit=True, removeAll=True)
#cmds.textScrollList(lowerLidList, edit=True, append=lower_lid_vertex_ids)
edge_list = cmds.polyListComponentConversion(lower_lid_vertex_ids, fromVertex=True, toEdge=True)
sel = cmds.select(edge_list)
mel.eval('PolySelectTraverse 2;')
curve = cmds.polyToCurve(form=2, degree=1, ch=0, n="Lower_lid_crv")
def create_joints_and_parent_joints(*args):
create_joints()
create_parent_joints()
def create_joints(*args):
global upper_lid_vertex_ids, lower_lid_vertex_ids, joint_prefix
for i, vertex_id in enumerate(upper_lid_vertex_ids):
pos = cmds.pointPosition(vertex_id, w=True)
joint_name = "{0}_upper_{1}".format(joint_prefix, i+1)
jntUpperLids = cmds.joint(p=pos, n=joint_name)
loc = cmds.spaceLocator(n='upperLidLoc_1')
pos = cmds.xform(jntUpperLids, q = True, ws = True, t = True)
cmds.xform(loc, ws = True, t= pos)
for i, vertex_id in enumerate(lower_lid_vertex_ids):
pos = cmds.pointPosition(vertex_id, w=True)
joint_name = "{0}_lower_{1}".format(joint_prefix, i+1)
jntLowerLids = cmds.joint(p=pos, n=joint_name)
loc = cmds.spaceLocator(n='lowerLidLoc_1')
pos = cmds.xform(jntLowerLids, q = True, ws = True, t = True)
cmds.xform(loc, ws = True, t= pos)
def create_parent_joints(*args):
eyelidcrvrev = cmds.checkBox('reversecrv', q=1,label=1)
eyelidcrvrev = cmds.checkBox('reversecrv', q=1,v=1 )
if eyelidcrvrev == 1:
cmds.reverseCurve('Lower_lid_crv')
global joint_prefix, center_locator
center_loc_position = cmds.pointPosition(center_locator, w=True)
for i in range(len(upper_lid_vertex_ids)):
joint_name = "{0}_upper_{1}".format(joint_prefix, i+1)
parent_joint_name = "{0}_upper_parent_{1}".format(joint_prefix, i+1)
cmds.select(clear=True)
jntUpperLid = cmds.joint(p=center_loc_position, n=parent_joint_name)
cmds.parent(joint_name, parent_joint_name)
cmds.joint(jntUpperLid, e = True, oj = 'xyz' , sao = 'yup', ch = 1 , zso = True)
for i in range(len(lower_lid_vertex_ids)):
joint_name = "{0}_lower_{1}".format(joint_prefix, i+1)
parent_joint_name = "{0}_lower_parent_{1}".format(joint_prefix, i+1)
cmds.select(clear=True)
jntLowerLid = cmds.joint(p=center_loc_position, n=parent_joint_name)
cmds.parent(joint_name, parent_joint_name)
cmds.joint(jntLowerLid, e = True, oj = 'xyz' , sao = 'yup', ch = 1 , zso = True)
old_upper_prefix = "Lower_lid_crv_jnt_upper_parent_"
new_upper_prefix = "eyelid_joint_upper_parent_"
for i in range(1, 1000):
old_joint_name = f"{old_upper_prefix}{i}"
new_joint_name = f"{new_upper_prefix}{i}"
if cmds.objExists(old_joint_name):
cmds.rename(old_joint_name, new_joint_name)
old_lower_prefix = "Lower_lid_crv_jnt_lower_parent_"
new_lower_prefix = "eyelid_joint_lower_parent_"
for i in range(1, 1000):
old_lower_joint_name = f"{old_lower_prefix}{i}"
new_lower_joint_name = f"{new_lower_prefix}{i}"
if cmds.objExists(old_lower_joint_name):
cmds.rename(old_lower_joint_name, new_lower_joint_name)
old_upper_child_prefix = "Lower_lid_crv_jnt_upper_"
new_upper_child_prefix = "eyelid_joint_upper_"
for i in range(1, 1000):
old_upper_child_joint_name = f"{old_upper_child_prefix}{i}"
new_upper_child_joint_name = f"{new_upper_child_prefix}{i}"
if cmds.objExists(old_upper_child_joint_name):
cmds.rename(old_upper_child_joint_name, new_upper_child_joint_name)
old_lower_child_prefix = "Lower_lid_crv_jnt_lower_"
new_lower_child_prefix = "eyelid_joint_lower_"
for i in range(1, 1000):
old_lower_child_joint_name = f"{old_lower_child_prefix}{i}"
new_lower_child_joint_name = f"{new_lower_child_prefix}{i}"
if cmds.objExists(old_lower_child_joint_name):
cmds.rename(old_lower_child_joint_name, new_lower_child_joint_name)
source_prefix = "eyelid_joint_upper_parent_"
target_prefix = "upperLidLoc_"
source_objects = cmds.ls(source_prefix + "*", type="transform")
target_objects = cmds.ls(target_prefix + "*", type="transform")
list = [('%s_arm_01_length_jnt.worldMatrix'%(side),'%s_upr_arm_dist.inMatrix1'%(side)),('%s_arm_02_length_jnt.worldMatrix'%(side),'%s_upr_arm_dist.inMatrix2'%(side)),('%s_arm_02_length_jnt.worldMatrix'%(side),'%s_lwr_arm_dist.inMatrix1'%(side)),('%s_arm_03_length_jnt.worldMatrix'%(side),'%s_lwr_arm_dist.inMatrix2'%(side)),('%s_upr_arm_dist.distance'%(side),'%s_arm_full_dist.input1'%(side)),('%s_lwr_arm_dist.distance'%(side),'%s_arm_full_dist.input2'%(side)),('%s_arm_start_dist_loc.worldMatrix'%(side),'%s_arm_stretch_dist.inMatrix1'%(side)),('%s_arm_end_dist_loc.worldMatrix'%(side),'%s_arm_stretch_dist.inMatrix2'%(side)),('%s_arm_stretch_dist.distance'%(side),'%s_arm_stretch_cond.firstTerm'%(side)),('%s_arm_full_dist.output'%(side),'%s_arm_stretch_cond.secondTerm'%(side)),('%s_arm_stretch_dist.distance'%(side),'%s_arm_stretch_mult.input1X'%(side)),('%s_arm_full_dist.output'%(side),'%s_arm_stretch_mult.input2X'%(side)),('%s_arm_stretch_mult.outputX'%(side),'%s_arm_stretch_cond.colorIfTrue.colorIfTrueR'%(side)),('%s_arm_stretch_cond.outColor.outColorR'%(side),'%s_lwr_arm_strecth_mult.input1X'%(side)),('%s_arm_stretch_cond.outColor.outColorR'%(side),'%s_upr_arm_strecth_mult.input1X'%(side)),('%s_arm_02_setup.translateX'%(side),'%s_upr_arm_strecth_mult.input2X'%(side)),('%s_arm_03_setup.translateX'%(side),'%s_lwr_arm_strecth_mult.input2X'%(side)),('%s_upr_arm_strecth_mult.outputX'%(side),'%s_ik_02_jnt.translateX'%(side)),('%s_lwr_arm_strecth_mult.outputX'%(side),'%s_ik_03_jnt.translateX'%(side)),('%s_ik_arm_ctrl.stretch'%(side),'%s_arm_strecth_option_mult.input1X'%(side)),('%s_arm_strecth_option_mult.outputX'%(side),'%s_arm_stretch_cond.operation'%(side))]
for each in list:
cmds.connectAttr(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
ArmStretchSetup('l')
ArmStretchSetup('r')
def armGroup():
list = ['l_arm_jnt_grp','r_arm_jnt_grp','arm_jnt_grp']
for each in list:
cmds.group(n=each,em=True)
list = [('r_shoulder_jnt','r_arm_jnt_grp'),('l_shoulder_jnt','l_arm_jnt_grp'),('l_fk_arm_01_jnt','l_arm_jnt_grp'),('r_fk_arm_01_jnt','r_arm_jnt_grp'),('l_ik_arm_jnt_grp','l_arm_jnt_grp'),('r_ik_arm_jnt_grp','r_arm_jnt_grp'),('l_arm_bln_jnt_grp','l_arm_jnt_grp'),('r_arm_bln_jnt_grp','r_arm_jnt_grp'),('l_arm_length_jnt_grp','l_arm_jnt_grp'),('r_arm_length_jnt_grp','r_arm_jnt_grp'),('l_arm_jnt_grp','arm_jnt_grp'),('r_arm_jnt_grp','arm_jnt_grp')]
for each in list:
cmds.parent(each[0],each[1])
armGroup()
bendyArmlabel = cmds.checkBox('bendyArm', q=1,label=1)
bendyArmlabel = cmds.checkBox('bendyArm', q=1,v=1 )
if bendyArmlabel == 1:
print(buildBendyArm())
elif bendyArmlabel == 0:
print(noBendyArm())
def FingersSetup(side):
nameOfFingersCtrl = [('%s_thumb_01_ctrl'%(side),'%s_thumb_01_ctrl_SDK_grp'%(side),'%s_thumb_01_ctrl_grp'%(side)),('%s_thumb_02_ctrl'%(side),'%s_thumb_02_ctrl_SDK_grp'%(side),'%s_thumb_02_ctrl_grp'%(side)),('%s_thumb_03_ctrl'%(side),'%s_thumb_03_ctrl_SDK_grp'%(side),'%s_thumb_03_ctrl_grp'%(side)),('%s_index_01_ctrl'%(side),'%s_index_01_ctrl_SDK_grp'%(side),'%s_index_01_ctrl_grp'%(side)),('%s_index_02_ctrl'%(side),'%s_index_02_ctrl_SDK_grp'%(side),'%s_index_02_ctrl_grp'%(side)),('%s_index_03_ctrl'%(side),'%s_index_03_ctrl_SDK_grp'%(side),'%s_index_03_ctrl_grp'%(side)),('%s_index_04_ctrl'%(side),'%s_index_04_ctrl_SDK_grp'%(side),'%s_index_04_ctrl_grp'%(side)),('%s_middle_01_ctrl'%(side),'%s_middle_01_ctrl_SDK_grp'%(side),'%s_middle_01_ctrl_grp'%(side)),('%s_middle_02_ctrl'%(side),'%s_middle_02_ctrl_SDK_grp'%(side),'%s_middle_02_ctrl_grp'%(side)),('%s_middle_03_ctrl'%(side),'%s_middle_03_ctrl_SDK_grp'%(side),'%s_middle_03_ctrl_grp'%(side)),('%s_middle_04_ctrl'%(side),'%s_middle_04_ctrl_SDK_grp'%(side),'%s_middle_04_ctrl_grp'%(side)),('%s_ring_01_ctrl'%(side),'%s_ring_01_ctrl_SDK_grp'%(side),'%s_ring_01_ctrl_grp'%(side)),('%s_ring_02_ctrl'%(side),'%s_ring_02_ctrl_SDK_grp'%(side),'%s_ring_02_ctrl_grp'%(side)),('%s_ring_03_ctrl'%(side),'%s_ring_03_ctrl_SDK_grp'%(side),'%s_ring_03_ctrl_grp'%(side)),('%s_ring_04_ctrl'%(side),'%s_ring_04_ctrl_SDK_grp'%(side),'%s_ring_04_ctrl_grp'%(side)),('%s_pinky_01_ctrl'%(side),'%s_pinky_01_ctrl_SDK_grp'%(side),'%s_pinky_01_ctrl_grp'%(side)),('%s_pinky_02_ctrl'%(side),'%s_pinky_02_ctrl_SDK_grp'%(side),'%s_pinky_02_ctrl_grp'%(side)),('%s_pinky_03_ctrl'%(side),'%s_pinky_03_ctrl_SDK_grp'%(side),'%s_pinky_03_ctrl_grp'%(side)),('%s_pinky_04_ctrl'%(side),'%s_pinky_04_ctrl_SDK_grp'%(side),'%s_pinky_04_ctrl_grp'%(side))]
for each in nameOfFingersCtrl:
ctrl = cmds.curve(p=[(0.0, 0.2933861509942573, -1.0949320217706984), (0.0, 0.2553661889653451, -0.9530395916863047), (0.0, -0.2553664856172229, -0.9530403074142204), (0.0, -0.29334365303393356, -1.094772361168278), (0.0, -0.8014288496022626, -0.801429236145214), (0.0, -0.6976738742806887, -0.6976740175622989), (0.0, -0.9530395916863047, -0.2553661889653451), (0.0, -1.0949320217706984, -0.2933861509942573), (0.0, -1.094772361168278, 0.29334365303393356), (0.0, -0.9530403074142204, 0.2553664856172229), (0.0, -0.6976740175622989, 0.6976738742806887), (0.0, -0.801429236145214, 0.8014288496022626), (0.0, -0.2933861509942573, 1.0949320217706984), (0.0, -0.2553661889653451, 0.9530395916863047), (0.0, 0.2553664856172229, 0.9530403074142204), (0.0, 0.29334365303393356, 1.094772361168278), (0.0, 0.8014288496022626, 0.801429236145214), (0.0, 0.6976738742806887, 0.6976740175622989), (0.0, 0.9530395916863047, 0.2553661889653451), (0.0, 1.0949320217706984, 0.2933861509942573), (0.0, 1.094772361168278, -0.29334365303393356), (0.0, 0.9530403074142204, -0.2553664856172229), (0.0, 0.6976740175622989, -0.6976738742806887), (0.0, 0.801429236145214, -0.8014288496022626), (0.0, 0.2933861509942573, -1.0949320217706984)], d=1, k=[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0],per=False)
cmds.rename(each[0])
cmds.group(n=each[1])
cmds.group(n=each[2])
nameOfFingersJnt = ['%s_thumb_01_jnt'%(side),'%s_thumb_02_jnt'%(side),'%s_thumb_03_jnt'%(side),'%s_index_01_jnt'%(side),'%s_index_02_jnt'%(side),'%s_index_03_jnt'%(side),'%s_index_04_jnt'%(side),'%s_middle_01_jnt'%(side),'%s_middle_02_jnt'%(side),'%s_middle_03_jnt'%(side),'%s_middle_04_jnt'%(side),'%s_ring_01_jnt'%(side),'%s_ring_02_jnt'%(side),'%s_ring_03_jnt'%(side),'%s_ring_04_jnt'%(side),'%s_pinky_01_jnt'%(side),'%s_pinky_02_jnt'%(side),'%s_pinky_03_jnt'%(side),'%s_pinky_04_jnt'%(side)]
for each in nameOfFingersJnt:
cmds.joint(n=each)
listToGetPos = [('%s_thumb_01_setup'%(side),'%s_thumb_01_ctrl_grp'%(side)),('%s_thumb_02_setup'%(side),'%s_thumb_02_ctrl_grp'%(side)),('%s_thumb_03_setup'%(side),'%s_thumb_03_ctrl_grp'%(side)),('%s_index_01_setup'%(side),'%s_index_01_ctrl_grp'%(side)),('%s_index_02_setup'%(side),'%s_index_02_ctrl_grp'%(side)),('%s_index_03_setup'%(side),'%s_index_03_ctrl_grp'%(side)),('%s_index_04_setup'%(side),'%s_index_04_ctrl_grp'%(side)),('%s_middle_01_setup'%(side),'%s_middle_01_ctrl_grp'%(side)),('%s_middle_02_setup'%(side),'%s_middle_02_ctrl_grp'%(side)),('%s_middle_03_setup'%(side),'%s_middle_03_ctrl_grp'%(side)),('%s_middle_04_setup'%(side),'%s_middle_04_ctrl_grp'%(side)),('%s_ring_01_setup'%(side),'%s_ring_01_ctrl_grp'%(side)),('%s_ring_02_setup'%(side),'%s_ring_02_ctrl_grp'%(side)),('%s_ring_03_setup'%(side),'%s_ring_03_ctrl_grp'%(side)),('%s_ring_04_setup'%(side),'%s_ring_04_ctrl_grp'%(side)),('%s_pinky_01_setup'%(side),'%s_pinky_01_ctrl_grp'%(side)),('%s_pinky_02_setup'%(side),'%s_pinky_02_ctrl_grp'%(side)),('%s_pinky_03_setup'%(side),'%s_pinky_03_ctrl_grp'%(side)),('%s_pinky_04_setup'%(side),'%s_pinky_04_ctrl_grp'%(side)),('%s_thumb_01_setup'%(side),'%s_thumb_01_jnt'%(side)),('%s_thumb_02_setup'%(side),'%s_thumb_02_jnt'%(side)),('%s_thumb_03_setup'%(side),'%s_thumb_03_jnt'%(side)),('%s_index_01_setup'%(side),'%s_index_01_jnt'%(side)),('%s_index_02_setup'%(side),'%s_index_02_jnt'%(side)),('%s_index_03_setup'%(side),'%s_index_03_jnt'%(side)),('%s_index_04_setup'%(side),'%s_index_04_jnt'%(side)),('%s_middle_01_setup'%(side),'%s_middle_01_jnt'%(side)),('%s_middle_02_setup'%(side),'%s_middle_02_jnt'%(side)),('%s_middle_03_setup'%(side),'%s_middle_03_jnt'%(side)),('%s_middle_04_setup'%(side),'%s_middle_04_jnt'%(side)),('%s_ring_01_setup'%(side),'%s_ring_01_jnt'%(side)),('%s_ring_02_setup'%(side),'%s_ring_02_jnt'%(side)),('%s_ring_03_setup'%(side),'%s_ring_03_jnt'%(side)),('%s_ring_04_setup'%(side),'%s_ring_04_jnt'%(side)),('%s_pinky_01_setup'%(side),'%s_pinky_01_jnt'%(side)),('%s_pinky_02_setup'%(side),'%s_pinky_02_jnt'%(side)),('%s_pinky_03_setup'%(side),'%s_pinky_03_jnt'%(side)),('%s_pinky_04_setup'%(side),'%s_pinky_04_jnt'%(side))]
for each in listToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('multiplyDivide','%s_thumb_mult'%(side)),('multiplyDivide','%s_index_mult'%(side)),('multiplyDivide','%s_middle_mult'%(side)),('multiplyDivide','%s_ring_mult'%(side)),('multiplyDivide','%s_pinky_mult'%(side))]
for each in list:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
list = [('%s_thumb_mult.input2X'%(side),10),('%s_index_mult.input2X'%(side),10),('%s_middle_mult.input2X'%(side),10),('%s_ring_mult.input2X'%(side),10),('%s_pinky_mult.input2X'%(side),10)]
for each in list:
cmds.setAttr(each[0],each[1])
list = [('%s_ik_fk_switch.thumbCurl'%(side),'%s_thumb_mult.input1X'%(side)),('%s_thumb_mult.outputX'%(side),'%s_thumb_02_ctrl_SDK_grp.rotateZ'%(side)),('%s_thumb_mult.outputX'%(side),'%s_thumb_03_ctrl_SDK_grp.rotateZ'%(side)),('%s_ik_fk_switch.indexCurl'%(side),'%s_index_mult.input1X'%(side)),('%s_index_mult.outputX'%(side),'%s_index_02_ctrl_SDK_grp.rotateZ'%(side)),('%s_index_mult.outputX'%(side),'%s_index_03_ctrl_SDK_grp.rotateZ'%(side)),('%s_index_mult.outputX'%(side),'%s_index_04_ctrl_SDK_grp.rotateZ'%(side)),('%s_ik_fk_switch.middleCurl'%(side),'%s_middle_mult.input1X'%(side)),('%s_middle_mult.outputX'%(side),'%s_middle_02_ctrl_SDK_grp.rotateZ'%(side)),('%s_middle_mult.outputX'%(side),'%s_middle_03_ctrl_SDK_grp.rotateZ'%(side)),('%s_middle_mult.outputX'%(side),'%s_middle_04_ctrl_SDK_grp.rotateZ'%(side)),('%s_ik_fk_switch.ringCurl'%(side),'%s_ring_mult.input1X'%(side)),('%s_ring_mult.outputX'%(side),'%s_ring_02_ctrl_SDK_grp.rotateZ'%(side)),('%s_ring_mult.outputX'%(side),'%s_ring_03_ctrl_SDK_grp.rotateZ'%(side)),('%s_ring_mult.outputX'%(side),'%s_ring_04_ctrl_SDK_grp.rotateZ'%(side)),('%s_ik_fk_switch.pinkyCurl'%(side),'%s_pinky_mult.input1X'%(side)),('%s_pinky_mult.outputX'%(side),'%s_pinky_02_ctrl_SDK_grp.rotateZ'%(side)),('%s_pinky_mult.outputX'%(side),'%s_pinky_03_ctrl_SDK_grp.rotateZ'%(side)),('%s_pinky_mult.outputX'%(side),'%s_pinky_04_ctrl_SDK_grp.rotateZ'%(side))]
for each in list:
cmds.connectAttr(each[0],each[1])
cmds.group(n='%s_fingers_jnt_grp'%(side),em = True)
cmds.group(n='%s_fingers_ctrl_grp'%(side),em = True)
cmds.parentConstraint('%s_arm_03_bln_jnt'%(side),'%s_fingers_ctrl_grp'%(side))
toParent = [('%s_thumb_01_ctrl_grp'%(side),'%s_fingers_ctrl_grp'%(side)),('%s_fingers_ctrl_grp'%(side),'world_ctrl'),('%s_thumb_02_ctrl_grp'%(side),'%s_thumb_01_ctrl'%(side)),('%s_index_01_ctrl_grp'%(side),'%s_fingers_ctrl_grp'%(side)),('%s_index_02_ctrl_grp'%(side),'%s_index_01_ctrl'%(side)),('%s_index_03_ctrl_grp'%(side),'%s_index_02_ctrl'%(side)),('%s_index_04_ctrl_grp'%(side),'%s_index_03_ctrl'%(side)),('%s_thumb_03_ctrl_grp'%(side),'%s_thumb_02_ctrl'%(side)),('%s_middle_01_ctrl_grp'%(side), '%s_fingers_ctrl_grp'%(side)),('%s_middle_02_ctrl_grp'%(side), '%s_middle_01_ctrl'%(side)),('%s_middle_03_ctrl_grp'%(side), '%s_middle_02_ctrl'%(side)),('%s_middle_04_ctrl_grp'%(side), '%s_middle_03_ctrl'%(side)),('%s_ring_01_ctrl_grp'%(side), '%s_fingers_ctrl_grp'%(side)),('%s_ring_02_ctrl_grp'%(side), '%s_ring_01_ctrl'%(side)),('%s_ring_03_ctrl_grp'%(side), '%s_ring_02_ctrl'%(side)),('%s_ring_04_ctrl_grp'%(side), '%s_ring_03_ctrl'%(side)),('%s_pinky_01_ctrl_grp'%(side), '%s_fingers_ctrl_grp'%(side)),('%s_pinky_02_ctrl_grp'%(side), '%s_pinky_01_ctrl'%(side)),('%s_pinky_03_ctrl_grp'%(side), '%s_pinky_02_ctrl'%(side)),('%s_pinky_04_ctrl_grp'%(side), '%s_pinky_03_ctrl'%(side)),('%s_thumb_01_jnt'%(side), '%s_fingers_jnt_grp'%(side)),('%s_index_01_jnt'%(side), '%s_fingers_jnt_grp'%(side)),('%s_middle_01_jnt'%(side), '%s_fingers_jnt_grp'%(side)),('%s_ring_01_jnt'%(side), '%s_fingers_jnt_grp'%(side)),('%s_pinky_01_jnt'%(side), '%s_fingers_jnt_grp'%(side)),('%s_fingers_jnt_grp'%(side),'%s_arm_jnt_grp'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity('%s_thumb_01_jnt'%(side),'%s_index_01_jnt'%(side),'%s_middle_01_jnt'%(side),'%s_ring_01_jnt'%(side),'%s_pinky_01_jnt'%(side),apply=True,rotate=True)
list = [('%s_thumb_01_ctrl'%(side),'%s_thumb_01_jnt'%(side)),('%s_thumb_02_ctrl'%(side),'%s_thumb_02_jnt'%(side)),('%s_thumb_03_ctrl'%(side),'%s_thumb_03_jnt'%(side)),('%s_index_01_ctrl'%(side),'%s_index_01_jnt'%(side)),('%s_index_02_ctrl'%(side),'%s_index_02_jnt'%(side)),('%s_index_03_ctrl'%(side),'%s_index_03_jnt'%(side)),('%s_index_04_ctrl'%(side),'%s_index_04_jnt'%(side)),('%s_middle_01_ctrl'%(side),'%s_middle_01_jnt'%(side)),('%s_middle_02_ctrl'%(side),'%s_middle_02_jnt'%(side)),('%s_middle_03_ctrl'%(side),'%s_middle_03_jnt'%(side)),('%s_middle_04_ctrl'%(side),'%s_middle_04_jnt'%(side)),('%s_ring_01_ctrl'%(side),'%s_ring_01_jnt'%(side)),('%s_ring_02_ctrl'%(side),'%s_ring_02_jnt'%(side)),('%s_ring_03_ctrl'%(side),'%s_ring_03_jnt'%(side)),('%s_ring_04_ctrl'%(side),'%s_ring_04_jnt'%(side)),('%s_pinky_01_ctrl'%(side),'%s_pinky_01_jnt'%(side)),('%s_pinky_02_ctrl'%(side),'%s_pinky_02_jnt'%(side)),('%s_pinky_03_ctrl'%(side),'%s_pinky_03_jnt'%(side)),('%s_pinky_04_ctrl'%(side),'%s_pinky_04_jnt'%(side))]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
toSetAttr = [('%s_thumb_01_ctrl'%(side)),('%s_thumb_02_ctrl'%(side)),('%s_thumb_03_ctrl'%(side)),('%s_index_01_ctrl'%(side)),('%s_index_02_ctrl'%(side)),('%s_index_03_ctrl'%(side)),('%s_index_04_ctrl'%(side)),('%s_middle_01_ctrl'%(side)),('%s_middle_02_ctrl'%(side)),('%s_middle_03_ctrl'%(side)),('%s_middle_04_ctrl'%(side)),('%s_ring_01_ctrl'%(side)),('%s_ring_02_ctrl'%(side)),('%s_ring_03_ctrl'%(side)),('%s_ring_04_ctrl'%(side)),('%s_pinky_01_ctrl'%(side)),('%s_pinky_02_ctrl'%(side)),('%s_pinky_03_ctrl'%(side)),('%s_pinky_04_ctrl'%(side))]
for each in toSetAttr:
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('EugenesProgressBar', edit=True, step=1)
FingersSetup('l')
FingersSetup('r')
def buildBendyLeg():
def FKlegSetup(side):
nameOfFKlegController = [('%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))]
for each in nameOfFKlegController:
cmds.curve(d=1,p=[(0.0, 1.8457071003629746, -6.888272674590291),(0.0, 1.6065215981349992, -5.995620227271308),(0.0, -1.6065234643869502, -5.995624729951774),(0.0, -1.8454397435472047, -6.8872682416730004),(0.0, -5.041829388107622, -5.041831819868864),(0.0, -4.389101595742385, -4.389102497134237),(0.0, -5.995620227271308, -1.6065215981349992),(0.0, -6.888272674590291, -1.8457071003629746),(0.0, -6.8872682416730004, 1.8454397435472047),(0.0, -5.995624729951774, 1.6065234643869502),(0.0, -4.389102497134237, 4.389101595742385),(0.0, -5.041831819868864, 5.041829388107622),(0.0, -1.8457071003629746, 6.888272674590291),(0.0, -1.6065215981349992, 5.995620227271308),(0.0, 1.6065234643869502, 5.995624729951774),(0.0, 1.8454397435472047, 6.8872682416730004),(0.0, 5.041829388107622, 5.041831819868864),(0.0, 4.389101595742385, 4.389102497134237),(0.0, 5.995620227271308, 1.6065215981349992),(0.0, 6.888272674590291, 1.8457071003629746),(0.0, 6.8872682416730004, -1.8454397435472047),(0.0, 5.995624729951774, -1.6065234643869502),(0.0, 4.389102497134237, -4.389101595742385),(0.0, 5.041831819868864, -5.041829388107622),(0.0, 1.8457071003629746, -6.888272674590291)])
cmds.rename(each[0])
cmds.group(n=each[1])
createJoint = ['%s_fk_leg_01_jnt'%(side),'%s_fk_leg_02_jnt'%(side),'%s_fk_leg_03_jnt'%(side),'%s_fk_leg_04_jnt'%(side)]
for each in createJoint:
cmds.joint(n=each)
toGetFKlegPos = [('%s_leg_01_setup'%(side),'%s_fk_leg_01_ctrl_grp'%(side)),('%s_leg_02_setup'%(side),'%s_fk_leg_02_ctrl_grp'%(side)),('%s_leg_03_setup'%(side),'%s_fk_leg_03_ctrl_grp'%(side)),('%s_leg_04_setup'%(side),'%s_fk_leg_04_ctrl_grp'%(side)),('%s_leg_01_setup'%(side),'%s_fk_leg_01_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_fk_leg_02_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_fk_leg_03_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_fk_leg_04_jnt'%(side))]
for each in toGetFKlegPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_fk_leg_01_jnt'%(side),apply=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)),('spine_01_bln_jnt','%s_fk_leg_01_ctrl_grp'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toParent = [('%s_fk_leg_01_ctrl_grp'%(side),'world_ctrl'),('%s_fk_leg_02_ctrl_grp'%(side),'%s_fk_leg_01_ctrl'%(side)),('%s_fk_leg_03_ctrl_grp'%(side), '%s_fk_leg_02_ctrl'%(side)),('%s_fk_leg_04_ctrl_grp'%(side),'%s_fk_leg_03_ctrl'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
toSetAttr = [('%s_fk_leg_01_ctrl'%(side)),('%s_fk_leg_02_ctrl'%(side)),('%s_fk_leg_03_ctrl'%(side)),('%s_fk_leg_04_ctrl'%(side))]
for each in toSetAttr:
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)
FKlegSetup('l')
FKlegSetup('r')
def IKlegSetup(side):
list = ['%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_leg_05_jnt'%(side)]
for each in list:
cmds.joint(n=each)
list = [('%s_leg_01_setup'%(side),'%s_ik_leg_01_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_ik_leg_02_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_ik_leg_03_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_ik_leg_04_jnt'%(side)),('%s_leg_05_setup'%(side),'%s_ik_leg_05_jnt'%(side))]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_ik_leg_01_jnt'%(side), apply=True, translate=True, rotate=True)
cmds.group(n='%s_ik_leg_jnt_grp'%(side),em=True)
cmds.parent('%s_ik_leg_01_jnt'%(side),'%s_ik_leg_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_ik_leg_jnt_grp'%(side))
cmds.ikHandle( n='%s_leg_01_ikh'%(side), sj='%s_ik_leg_01_jnt'%(side), ee='%s_ik_leg_03_jnt'%(side) )
cmds.ikHandle( n='%s_leg_02_ikh'%(side), sj='%s_ik_leg_03_jnt'%(side), ee='%s_ik_leg_04_jnt'%(side) )
cmds.ikHandle( n='%s_leg_03_ikh'%(side), sj='%s_ik_leg_04_jnt'%(side), ee='%s_ik_leg_05_jnt'%(side) )
cmds.parentConstraint('spine_01_bln_jnt','%s_ik_leg_01_jnt'%(side),mo = True)
cmds.curve(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.rename('%s_ik_leg_ctrl'%(side))
ControllerAttr('%s_ik_leg_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='heelLift' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='toeLift' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='ballRoll' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='toeRoll' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='footRock' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='stretch' ,k=1,at = 'bool')
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.group(n='%s_ik_leg_ctrl_grp'%(side))
forDel = cmds.parentConstraint('%s_leg_03_setup'%(side),'%s_ik_leg_ctrl_grp'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.parentConstraint('spine_01_bln_jnt','%s_ik_leg_ctrl_grp'%(side),mo = True)
cmds.connectAttr('%s_ik_leg_ctrl.follow'%(side),'%s_ik_leg_ctrl_grp_parentConstraint1.spine_01_bln_jntW0'%(side))
cmds.curve(d=1,p=[(0.0, 3.468342867164149, 0.0),(0.0, 3.468342867164149, 0.5221724371834184),(0.0, 4.967930096687364, 0.0),(0.5221724371834184, 3.468342867164149, 0.0),(-0.5221724371834184, 3.468342867164149, 0.0),(0.0, 4.967930096687364, 0.0),(0.0, 3.468342867164149, -0.5221724371834184),(0.0, 3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(-0.5221724371834184, -3.468342867164149, 0.0),(0.0, -4.967930096687364, 0.0),(0.0, -3.468342867164149, -0.5221724371834184),(0.0, -3.468342867164149, 0.5221724371834184),(0.0, -4.967930096687364, 0.0),(0.5221724371834184, -3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(0.0, 0.0, 0.0),(-3.468342867164149, 0.0, 0.0),(-3.468342867164149, 0.5221724371834184, 0.0),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, 0.0, -0.5221724371834184),(-3.468342867164149, 0.0, 0.5221724371834184),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, -0.5221724371834184, 0.0),(-3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, -0.5221724371834184),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.5221724371834184, 0.0),(3.468342867164149, -0.5221724371834184, 0.0),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.0, 0.5221724371834184),(3.468342867164149, 0.0, 0.0),(0.0, 0.0, 0.0),(0.0, 0.0, 3.468342867164149),(0.0, 0.5221724371834184, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.5221724371834184, 0.0, 3.468342867164149),(-0.5221724371834184, 0.0, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.0, -0.5221724371834184, 3.468342867164149),(0.0, 0.0, 3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.5221724371834184, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(-0.5221724371834184, 0.0, -3.468342867164149),(0.5221724371834184, 0.0, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(0.0, -0.5221724371834184, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149)])
cmds.rename('%s_knee_ctrl'%(side))
ControllerAttr('%s_knee_ctrl'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_knee_ctrl'%(side),sn='follow', min = 0, max=1 ,k=1)
cmds.setAttr('%s_knee_ctrl.follow'%(side),1)
cmds.group(n='%s_knee_ctrl_grp'%(side))
cmds.parent('%s_knee_ctrl_grp'%(side),'world_ctrl')
forDel = cmds.pointConstraint('%s_knee_setup'%(side),'%s_knee_ctrl_grp'%(side))
cmds.delete(forDel)
cmds.poleVectorConstraint('%s_knee_ctrl'%(side),'%s_leg_01_ikh'%(side))
list = ['%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_aim_loc'%(side),'%s_knee_ctrl_aim_world_loc'%(side),'%s_heel_loc'%(side),'%s_roll_out_loc'%(side),'%s_roll_in_loc'%(side),'%s_toe_roll_loc'%(side),'%s_toe_end_loc'%(side),'%s_toe_lift_loc'%(side),'%s_ball_roll_loc'%(side),'%s_leg_ikHandle_loc'%(side),'%s_ball_ikHandle_loc'%(side)]
for each in list:
cmds.spaceLocator(n=each)
cmds.group(n='%s_knee_loc_grp'%(side),em=True)
cmds.scaleConstraint('world_ctrl','%s_knee_loc_grp'%(side),mo=True)
cmds.group(n='%s_foot_ikHandle_grp'%(side),em = True)
cmds.group(n='%s_knee_ctrl_aim_base_loc_grp'%(side),em=True)
list = [('pelvis_setup','%s_knee_ctrl_aim_up_loc'%(side)),('%s_leg_01_setup'%(side),'%s_knee_ctrl_aim_base_loc'%(side)),('%s_leg_03_setup'%(side),'%s_knee_ctrl_aim_loc'%(side))]
for each in list:
forDel = cmds.pointConstraint(each[0],each[1])
cmds.delete(forDel)
list = [('%s_leg_04_setup'%(side),'%s_toe_roll_loc'%(side)),('%s_leg_04_setup'%(side),'%s_ball_roll_loc'%(side)),('%s_knee_setup'%(side),'%s_knee_ctrl_aim_world_loc'%(side)),('%s_leg_heel_setup'%(side),'%s_heel_loc'%(side)),('%s_leg_roll_out_setup'%(side),'%s_roll_out_loc'%(side)),('%s_leg_roll_in_setup'%(side),'%s_roll_in_loc'%(side)),('%s_leg_05_setup'%(side),'%s_toe_end_loc'%(side)),('%s_leg_06_setup'%(side),'%s_toe_lift_loc'%(side)),('%s_leg_03_setup'%(side),'%s_leg_ikHandle_loc'%(side)),('%s_leg_04_setup'%(side),'%s_ball_ikHandle_loc'%(side)),('%s_leg_03_setup'%(side),'%s_foot_ikHandle_grp'%(side))]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_heel_loc'%(side),'%s_toe_roll_loc'%(side)),('%s_heel_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_heel_loc'%(side),'%s_foot_ikHandle_grp'%(side))]
for each in list:
forDel = cmds.orientConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_toe_lift_loc'%(side),'%s_heel_loc'%(side)),('%s_roll_out_loc'%(side),'%s_toe_lift_loc'%(side)),('%s_roll_in_loc'%(side),'%s_roll_in_loc'%(side)),('%s_toe_roll_loc'%(side),'%s_roll_in_loc'%(side)),('%s_ball_roll_loc'%(side),'%s_roll_in_loc'%(side)),('%s_toe_end_loc'%(side),'%s_toe_roll_loc'%(side)),('%s_leg_ikHandle_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_ball_ikHandle_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_leg_02_ikh'%(side),'%s_ball_ikHandle_loc'%(side)),('%s_leg_03_ikh'%(side),'%s_toe_end_loc'%(side)),('%s_leg_01_ikh'%(side),'%s_leg_ikHandle_loc'%(side)),('%s_knee_ctrl_aim_world_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_heel_loc'%(side),'%s_foot_ikHandle_grp'%(side)),('%s_ik_leg_ctrl_grp'%(side),'world_ctrl'),('%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_aim_base_loc_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_base_loc_grp'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'spine_01_bln_jnt')]
for each in list:
cmds.parent(each[0],each[1])
cmds.aimConstraint('%s_knee_ctrl_aim_loc'%(side),'%s_knee_ctrl_aim_base_loc'%(side),wut='object',wuo = '%s_knee_ctrl_aim_up_loc'%(side),mo = False)
list = [('%s_ik_leg_ctrl'%(side),'%s_knee_ctrl_aim_loc'%(side)),('world_ctrl','%s_knee_ctrl_aim_world_loc'%(side)),('%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_grp'%(side)),('%s_knee_ctrl_aim_world_loc'%(side),'%s_knee_ctrl_grp'%(side)),('%s_ik_leg_ctrl'%(side),'%s_foot_ikHandle_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_ctrl_aim_base_loc_grp'%(side))]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
list = [('reverse','%s_knee_follow_rev'%(side)),('multiplyDivide','%s_foot_rock_mult'%(side)),('condition','%s_foot_rock_con'%(side))]
for each in list:
cmds.shadingNode(each[0],n = each[1],asUtility=1)
list = [('%s_knee_ctrl.follow'%(side),'%s_knee_ctrl_grp_parentConstraint1.%s_knee_ctrl_aim_base_locW0'%(side,side)),('%s_knee_ctrl.follow'%(side),'%s_knee_follow_rev.inputX'%(side)),('%s_knee_follow_rev.outputX'%(side),'%s_knee_ctrl_grp_parentConstraint1.%s_knee_ctrl_aim_world_locW1'%(side,side)),('%s_ik_leg_ctrl.heelLift'%(side),'%s_heel_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.toeLift'%(side),'%s_toe_lift_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.ballRoll'%(side),'%s_ball_roll_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.toeRoll'%(side),'%s_toe_roll_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.footRock'%(side),'%s_foot_rock_mult.input1X'%(side)),('%s_ik_leg_ctrl.footRock'%(side),'%s_foot_rock_mult.input1Y'%(side)),('%s_foot_rock_mult.outputX'%(side),'%s_foot_rock_con.colorIfFalse.colorIfFalseG'%(side)),('%s_foot_rock_mult.outputX'%(side),'%s_foot_rock_con.colorIfTrue.colorIfTrueR'%(side)),('%s_foot_rock_con.outColor.outColorR'%(side), '%s_roll_out_loc.rotate.rotateX'%(side)),('%s_foot_rock_con.outColor.outColorG'%(side), '%s_roll_in_loc.rotate.rotateX'%(side)),('%s_ik_leg_ctrl.footRock'%(side), '%s_foot_rock_con.firstTerm'%(side))]
for each in list:
cmds.connectAttr(each[0],each[1])
list = [('%s_foot_rock_mult.input2X'%(side),-1),('%s_foot_rock_con.operation'%(side),2),('%s_foot_rock_con.colorIfFalse.colorIfFalseR'%(side),0),('%s_foot_rock_con.colorIfFalse.colorIfFalseB'%(side),0)]
for each in list:
cmds.setAttr(each[0],each[1])
cmds.scaleConstraint('world_ctrl','%s_foot_ikHandle_grp'%(side),mo=True)
#IKlegPVcrv#
cmds.curve(d=1, p=[(0, 0, 0),(0, 10, 0)])
cmds.rename('%s_knee_direction_crv'%(side))
nameOfLoc = ['%s_knee_01_loc'%(side),'%s_knee_02_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('%s_knee_01_loc.translateY'%(side),0),('%s_knee_02_loc.translateY'%(side),10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_knee_01_loc.worldPosition[0]'%(side),'%s_knee_direction_crvShape.controlPoints[0]'%(side)),('%s_knee_02_loc.worldPosition[0]'%(side),'%s_knee_direction_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
toSetAttr = [('%s_knee_direction_crv.overrideEnabled'%(side),1),('%s_knee_direction_crv.overrideDisplayType'%(side),2),('%s_knee_01_loc.visibility'%(side),0),('%s_knee_02_loc.visibility'%(side),0)]
for each in toSetAttr:
cmds.setAttr(each[0],each[1])
toGetParent = [('%s_knee_ctrl'%(side),'%s_knee_01_loc'%(side)),('%s_ik_leg_02_jnt'%(side),'%s_knee_02_loc'%(side))]
for each in toGetParent:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.group(n='%s_knee_direction_crv_grp'%(side),em = True)
toGetParent = [('%s_knee_01_loc'%(side),'%s_knee_direction_crv_grp'%(side)),('%s_knee_02_loc'%(side),'%s_knee_direction_crv_grp'%(side)),('%s_knee_direction_crv'%(side),'%s_knee_direction_crv_grp'%(side))]
for each in toGetParent:
cmds.parent(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
IKlegSetup('l')
IKlegSetup('r')
def IKFKlegSetup(side):
nameOfJoint = [('%s_leg_01_bln_jnt'%(side)),('%s_leg_02_bln_jnt'%(side)),('%s_leg_03_bln_jnt'%(side)),('%s_leg_04_bln_jnt'%(side))]
for each in nameOfJoint:
cmds.joint(n=each)
toGetJointPos = [('%s_leg_01_setup'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_leg_04_bln_jnt'%(side))]
for each in toGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
toSetDrawStyle = [('%s_leg_01_bln_jnt.drawStyle'%(side)),('%s_leg_02_bln_jnt.drawStyle'%(side)),('%s_leg_03_bln_jnt.drawStyle'%(side))]
for each in toSetDrawStyle:
cmds.setAttr(each,2)
cmds.parent(w = True)
cmds.makeIdentity( '%s_leg_01_bln_jnt'%(side), apply=True, translate=True, rotate=True )
cmds.curve(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.rename('%s_leg_ik_fk_switch'%(side))
ControllerAttr('%s_leg_ik_fk_switch'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.group(n='%s_leg_ik_fk_switch_grp'%(side))
cmds.parent('%s_leg_ik_fk_switch_grp'%(side), 'world_ctrl')
cmds.addAttr('%s_leg_ik_fk_switch'%(side),sn='IKFK', min = 0, max=1 ,k=1)
cmds.addAttr('%s_leg_ik_fk_switch'%(side),sn='bendyVis',at = 'bool',k=1)
parentCon = [('%s_leg_03_bln_jnt'%(side), '%s_leg_ik_fk_switch_grp'%(side)),('%s_fk_leg_01_jnt'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_ik_leg_01_jnt'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_fk_leg_02_jnt'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_ik_leg_02_jnt'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_fk_leg_03_jnt'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_ik_leg_03_jnt'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_fk_leg_04_jnt'%(side),'%s_leg_04_bln_jnt'%(side)),('%s_ik_leg_04_jnt'%(side),'%s_leg_04_bln_jnt'%(side))]
for each in parentCon:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.shadingNode('reverse',n = '%s_leg_ik_rev'%(side),asUtility=1)
toConnectAttr = [('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_01_bln_jnt_parentConstraint1.%s_fk_leg_01_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_02_bln_jnt_parentConstraint1.%s_fk_leg_02_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_03_bln_jnt_parentConstraint1.%s_fk_leg_03_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_04_bln_jnt_parentConstraint1.%s_fk_leg_04_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_ik_rev.inputX'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_01_bln_jnt_parentConstraint1.%s_ik_leg_01_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_02_bln_jnt_parentConstraint1.%s_ik_leg_02_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_03_bln_jnt_parentConstraint1.%s_ik_leg_03_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_04_bln_jnt_parentConstraint1.%s_ik_leg_04_jntW1'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_fk_leg_01_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_ik_leg_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_knee_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_knee_direction_crv_grp.visibility'%(side))]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
cmds.parent('%s_leg_01_bln_jnt'%(side),'spine_01_bln_jnt')
cmds.parent('%s_leg_04_bln_jnt'%(side),'%s_leg_03_bln_jnt'%(side))
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
IKFKlegSetup('l')
IKFKlegSetup('r')
def BendyLegSetup(side):
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('%s_upr_bendy_leg_crv'%(side))
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('%s_lwr_bendy_leg_crv'%(side))
nameOfLoc = ['%s_upr_bendy_leg_01_loc'%(side),'%s_upr_bendy_leg_02_loc'%(side),'%s_upr_bendy_leg_03_loc'%(side),'%s_upr_bendy_leg_04_loc'%(side),'%s_upr_bendy_leg_05_loc'%(side),'%s_lwr_bendy_leg_01_loc'%(side),'%s_lwr_bendy_leg_02_loc'%(side),'%s_lwr_bendy_leg_03_loc'%(side),'%s_lwr_bendy_leg_04_loc'%(side),'%s_lwr_bendy_leg_05_loc'%(side),'%s_upr_bendy_leg_aim_up_loc'%(side),'%s_lwr_bendy_leg_aim_up_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
listToGetPos = [('%s_leg_01_bln_jnt'%(side),'%s_upr_bendy_leg_aim_up_loc'%(side)),('%s_leg_02_bln_jnt'%(side),'%s_lwr_bendy_leg_aim_up_loc'%(side))]
for each in listToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.parent('%s_upr_bendy_leg_aim_up_loc'%(side),'%s_leg_01_bln_jnt'%(side))
cmds.parent('%s_lwr_bendy_leg_aim_up_loc'%(side),'%s_leg_02_bln_jnt'%(side))
cmds.setAttr('%s_upr_bendy_leg_aim_up_loc.translateY'%(side),50)
cmds.setAttr('%s_lwr_bendy_leg_aim_up_loc.translateY'%(side),50)
toGetLocPos = [('%s_upr_bendy_leg_01_loc.translateY'%(side),0),('%s_upr_bendy_leg_02_loc.translateY'%(side),2.5),('%s_upr_bendy_leg_03_loc.translateY'%(side),5),('%s_upr_bendy_leg_04_loc.translateY'%(side),7.5),('%s_upr_bendy_leg_05_loc.translateY'%(side),10),('%s_lwr_bendy_leg_01_loc.translateY'%(side),0),('%s_lwr_bendy_leg_02_loc.translateY'%(side),2.5),('%s_lwr_bendy_leg_03_loc.translateY'%(side),5),('%s_lwr_bendy_leg_04_loc.translateY'%(side),7.5),('%s_lwr_bendy_leg_05_loc.translateY'%(side),10),('%s_leg_ik_fk_switch.bendyVis'%(side),1)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_upr_bendy_leg_01_loc.worldPosition[0]'%(side),'%s_upr_bendy_leg_crvShape.controlPoints[0]'%(side)),('%s_upr_bendy_leg_02_loc.worldPosition[0]'%(side),'%s_upr_bendy_leg_crvShape.controlPoints[1]'%(side)),('%s_upr_bendy_leg_03_loc.worldPosition[0]'%(side),'%s_upr_bendy_leg_crvShape.controlPoints[2]'%(side)),('%s_upr_bendy_leg_04_loc.worldPosition[0]'%(side),'%s_upr_bendy_leg_crvShape.controlPoints[3]'%(side)),('%s_upr_bendy_leg_05_loc.worldPosition[0]'%(side),'%s_upr_bendy_leg_crvShape.controlPoints[4]'%(side)),('%s_lwr_bendy_leg_01_loc.worldPosition[0]'%(side),'%s_lwr_bendy_leg_crvShape.controlPoints[0]'%(side)),('%s_lwr_bendy_leg_02_loc.worldPosition[0]'%(side),'%s_lwr_bendy_leg_crvShape.controlPoints[1]'%(side)),('%s_lwr_bendy_leg_03_loc.worldPosition[0]'%(side),'%s_lwr_bendy_leg_crvShape.controlPoints[2]'%(side)),('%s_lwr_bendy_leg_04_loc.worldPosition[0]'%(side),'%s_lwr_bendy_leg_crvShape.controlPoints[3]'%(side)),('%s_lwr_bendy_leg_05_loc.worldPosition[0]'%(side),'%s_lwr_bendy_leg_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
listOfBendyLegController = [('%s_bendy_leg_01_ctrl'%(side),'%s_bendy_leg_01_ctrl_grp'%(side)),('%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_02_ctrl_grp'%(side)),('%s_bendy_leg_03_ctrl'%(side),'%s_bendy_leg_03_ctrl_grp'%(side))]
for each in listOfBendyLegController:
cmds.curve(d=1,p=[(0, -3, 3),(0, -1, 2),(0, 0, 4),(0, 1, 2),(0, 3, 3),(0, 2, 1),(0, 4, 0),(0, 2, -1),(0, 3, -3),(0, 1, -2),(0, 0, -4),(0, -1, -2),(0, -3, -3),(0, -2, -1),(0, -4, 0),(0, -2, 1),(0, -3, 3)])
cmds.rename(each[0])
cmds.group(n=each[1])
cmds.delete('%s_bendy_leg_01_ctrl'%(side),'%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_03_ctrl'%(side),constructionHistory = True)
uprBendyController01forDel = cmds.pointConstraint('%s_leg_01_setup'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),mo=False)
uprBendyController01forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),mo=False)
uprBendyController02forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_bendy_leg_02_ctrl_grp'%(side),mo=False)
uprBendyController03forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),mo=False)
uprBendyController03forDel = cmds.pointConstraint('%s_leg_03_setup'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation01forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation02forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_bendy_leg_02_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation03forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),mo=False)
cmds.delete(uprBendyController01forDel,uprBendyController02forDel,uprBendyController03forDel,uprBendyControllerForRotation01forDel,uprBendyControllerForRotation02forDel,uprBendyControllerForRotation03forDel)
listOfUprBendyJoint = ['%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_02_jnt'%(side),'%s_upr_bendy_leg_03_jnt'%(side),'%s_upr_bendy_leg_04_jnt'%(side),'%s_upr_bendy_leg_05_jnt'%(side),'%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_02_jnt'%(side),'%s_lwr_bendy_leg_03_jnt'%(side),'%s_lwr_bendy_leg_04_jnt'%(side),'%s_lwr_bendy_leg_05_jnt'%(side),'%s_upr_bendy_leg_01_length_jnt'%(side),'%s_upr_bendy_leg_02_length_jnt'%(side),'%s_upr_bendy_leg_03_length_jnt'%(side),'%s_upr_bendy_leg_04_length_jnt'%(side),'%s_upr_bendy_leg_05_length_jnt'%(side),'%s_lwr_bendy_leg_01_length_jnt'%(side),'%s_lwr_bendy_leg_02_length_jnt'%(side),'%s_lwr_bendy_leg_03_length_jnt'%(side),'%s_lwr_bendy_leg_04_length_jnt'%(side),'%s_lwr_bendy_leg_05_length_jnt'%(side),'%s_lwr_bendy_leg_start_length_jnt'%(side),'%s_lwr_bendy_leg_end_length_jnt'%(side),'%s_upr_bendy_leg_start_length_jnt'%(side),'%s_upr_bendy_leg_end_length_jnt'%(side)]
for each in listOfUprBendyJoint:
cmds.joint(n=each)
cmds.parent('%s_upr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_01_length_jnt'%(side),'%s_lwr_bendy_leg_01_length_jnt'%(side),'%s_upr_bendy_leg_start_length_jnt'%(side),'%s_lwr_bendy_leg_start_length_jnt'%(side),w=True)
cmds.group(n='%s_upr_bendy_leg_jnt_grp'%(side),em=True)
cmds.group(n='%s_lwr_bendy_leg_jnt_grp'%(side),em=True)
cmds.parent('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_jnt_grp'%(side))
cmds.parent('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_jnt_grp'%(side))
cmds.orientConstraint('%s_leg_01_bln_jnt'%(side),'%s_upr_bendy_leg_jnt_grp'%(side),mo=True)
cmds.orientConstraint('%s_leg_02_bln_jnt'%(side),'%s_lwr_bendy_leg_jnt_grp'%(side),mo=True)
uprBendyJoint01forDel = cmds.pointConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_01_jnt'%(side),mo=False)
uprBendyJoint02forDel = cmds.pointConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_02_jnt'%(side),mo=False)
uprBendyJoint02forDel = cmds.pointConstraint('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_02_jnt'%(side),mo=False)
uprBendyJoint03forDel = cmds.pointConstraint('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_03_jnt'%(side),mo=False)
uprBendyJoint04forDel = cmds.pointConstraint('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_04_jnt'%(side),mo=False)
uprBendyJoint04forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_upr_bendy_leg_04_jnt'%(side),mo=False)
uprBendyJoint05forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_upr_bendy_leg_05_jnt'%(side),mo=False)
lwrBendyJoint01forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_01_jnt'%(side),mo=False)
lwrBendyJoint02forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_02_jnt'%(side),mo=False)
lwrBendyJoint02forDel = cmds.pointConstraint('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_02_jnt'%(side),mo=False)
lwrBendyJoint03forDel = cmds.pointConstraint('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_03_jnt'%(side),mo=False)
lwrBendyJoint04forDel = cmds.pointConstraint('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_04_jnt'%(side),mo=False)
lwrBendyJoint04forDel = cmds.pointConstraint('%s_leg_03_setup'%(side),'%s_lwr_bendy_leg_04_jnt'%(side),mo=False)
lwrBendyJoint05forDel = cmds.pointConstraint('%s_leg_03_setup'%(side),'%s_lwr_bendy_leg_05_jnt'%(side),mo=False)
uprBendyJointForRatation01forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_01_jnt'%(side),mo=False)
uprBendyJointForRatation02forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_02_jnt'%(side),mo=False)
uprBendyJointForRatation03forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_03_jnt'%(side),mo=False)
uprBendyJointForRatation04forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_04_jnt'%(side),mo=False)
uprBendyJointForRatation05forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_05_jnt'%(side),mo=False)
lwrBendyJointForRatation01forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_01_jnt'%(side),mo=False)
lwrBendyJointForRatation02forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_02_jnt'%(side),mo=False)
lwrBendyJointForRatation03forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_03_jnt'%(side),mo=False)
lwrBendyJointForRatation04forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_04_jnt'%(side),mo=False)
lwrBendyJointForRatation05forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_05_jnt'%(side),mo=False)
cmds.delete(uprBendyJoint01forDel,uprBendyJoint02forDel,uprBendyJoint03forDel,uprBendyJoint04forDel,uprBendyJoint05forDel,lwrBendyJoint01forDel,lwrBendyJoint02forDel,lwrBendyJoint03forDel,lwrBendyJoint04forDel,lwrBendyJoint05forDel,uprBendyJointForRatation01forDel,uprBendyJointForRatation02forDel,uprBendyJointForRatation03forDel,uprBendyJointForRatation04forDel,uprBendyJointForRatation05forDel,lwrBendyJointForRatation01forDel,lwrBendyJointForRatation02forDel,lwrBendyJointForRatation03forDel,lwrBendyJointForRatation04forDel,lwrBendyJointForRatation05forDel)
listOfBendyArmLenghtJointToGetPos = [('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_01_length_jnt'%(side)),('%s_upr_bendy_leg_02_jnt'%(side),'%s_upr_bendy_leg_02_length_jnt'%(side)),('%s_upr_bendy_leg_03_jnt'%(side),'%s_upr_bendy_leg_03_length_jnt'%(side)),('%s_upr_bendy_leg_04_jnt'%(side),'%s_upr_bendy_leg_04_length_jnt'%(side)),('%s_upr_bendy_leg_05_jnt'%(side),'%s_upr_bendy_leg_05_length_jnt'%(side)),('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_01_length_jnt'%(side)),('%s_lwr_bendy_leg_02_jnt'%(side),'%s_lwr_bendy_leg_02_length_jnt'%(side)),('%s_lwr_bendy_leg_03_jnt'%(side),'%s_lwr_bendy_leg_03_length_jnt'%(side)),('%s_lwr_bendy_leg_04_jnt'%(side),'%s_lwr_bendy_leg_04_length_jnt'%(side)),('%s_lwr_bendy_leg_05_jnt'%(side),'%s_lwr_bendy_leg_05_length_jnt'%(side)),('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_start_length_jnt'%(side)),('%s_upr_bendy_leg_05_jnt'%(side),'%s_upr_bendy_leg_end_length_jnt'%(side)),('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_start_length_jnt'%(side)),('%s_lwr_bendy_leg_05_jnt'%(side),'%s_lwr_bendy_leg_end_length_jnt'%(side))]
for each in listOfBendyArmLenghtJointToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_upr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_01_length_jnt'%(side),'%s_lwr_bendy_leg_01_length_jnt'%(side),'%s_upr_bendy_leg_start_length_jnt'%(side),'%s_lwr_bendy_leg_start_length_jnt'%(side),apply=True,rotate=True)
locToGetPos = [('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_01_loc'%(side)),('%s_upr_bendy_leg_02_jnt'%(side),'%s_upr_bendy_leg_02_loc'%(side)),('%s_upr_bendy_leg_03_jnt'%(side),'%s_upr_bendy_leg_03_loc'%(side)),('%s_upr_bendy_leg_04_jnt'%(side),'%s_upr_bendy_leg_04_loc'%(side)),('%s_upr_bendy_leg_05_jnt'%(side),'%s_upr_bendy_leg_05_loc'%(side)),('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_01_loc'%(side)),('%s_lwr_bendy_leg_02_jnt'%(side),'%s_lwr_bendy_leg_02_loc'%(side)),('%s_lwr_bendy_leg_03_jnt'%(side),'%s_lwr_bendy_leg_03_loc'%(side)),('%s_lwr_bendy_leg_04_jnt'%(side),'%s_lwr_bendy_leg_04_loc'%(side)),('%s_lwr_bendy_leg_05_jnt'%(side),'%s_lwr_bendy_leg_05_loc'%(side))]
for each in locToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = ['%s_upr_bendy_leg_loc_grp'%(side),'%s_lwr_bendy_leg_loc_grp'%(side),'%s_bendy_leg_ctrl_grp'%(side),'%s_bendy_leg_jnt_grp'%(side)]
for each in list:
cmds.group(n=each,em=True)
cmds.connectAttr('%s_leg_ik_fk_switch.bendyVis'%(side),'%s_bendy_leg_ctrl_grp.visibility'%(side))
list = [('%s_lwr_bendy_leg_jnt_grp'%(side),'%s_bendy_leg_jnt_grp'%(side)),('%s_upr_bendy_leg_jnt_grp'%(side),'%s_bendy_leg_jnt_grp'%(side)),('%s_upr_bendy_leg_01_loc'%(side),'%s_upr_bendy_leg_loc_grp'%(side)),('%s_upr_bendy_leg_02_loc'%(side),'%s_upr_bendy_leg_loc_grp'%(side)),('%s_upr_bendy_leg_03_loc'%(side),'%s_upr_bendy_leg_loc_grp'%(side)),('%s_upr_bendy_leg_04_loc'%(side),'%s_upr_bendy_leg_loc_grp'%(side)),('%s_upr_bendy_leg_05_loc'%(side),'%s_upr_bendy_leg_loc_grp'%(side)),('%s_lwr_bendy_leg_01_loc'%(side),'%s_lwr_bendy_leg_loc_grp'%(side)),('%s_lwr_bendy_leg_02_loc'%(side),'%s_lwr_bendy_leg_loc_grp'%(side)),('%s_lwr_bendy_leg_03_loc'%(side),'%s_lwr_bendy_leg_loc_grp'%(side)),('%s_lwr_bendy_leg_04_loc'%(side),'%s_lwr_bendy_leg_loc_grp'%(side)),('%s_lwr_bendy_leg_05_loc'%(side),'%s_lwr_bendy_leg_loc_grp'%(side)),('%s_bendy_leg_01_ctrl_grp'%(side),'%s_bendy_leg_ctrl_grp'%(side)),('%s_bendy_leg_02_ctrl_grp'%(side),'%s_bendy_leg_ctrl_grp'%(side)),('%s_bendy_leg_03_ctrl_grp'%(side),'%s_bendy_leg_ctrl_grp'%(side)),('%s_upr_bendy_leg_01_length_jnt'%(side),'%s_bendy_leg_jnt_grp'%(side)),('%s_lwr_bendy_leg_01_length_jnt'%(side),'%s_bendy_leg_jnt_grp'%(side)),('%s_upr_bendy_leg_start_length_jnt'%(side),'%s_bendy_leg_jnt_grp'%(side)),('%s_lwr_bendy_leg_start_length_jnt'%(side),'%s_bendy_leg_jnt_grp'%(side))]
for each in list:
cmds.parent(each[0],each[1])
list = [('%s_bendy_leg_01_ctrl'%(side)),('%s_bendy_leg_02_ctrl'%(side)),('%s_bendy_leg_03_ctrl'%(side))]
for each in list:
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+'.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+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,18)
cmds.select('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_05_jnt'%(side),'%s_upr_bendy_leg_crv'%(side))
cmds.ikHandle(n='%s_upr_bendy_leg_ikh'%(side),sol='ikSplineSolver',ccv=0,pcv =0)
cmds.select('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_05_jnt'%(side),'%s_lwr_bendy_leg_crv'%(side))
cmds.ikHandle(n='%s_lwr_bendy_leg_ikh'%(side),sol='ikSplineSolver',ccv=0,pcv =0)
list = [('%s_leg_01_bln_jnt'%(side),'%s_upr_bendy_leg_01_loc'%(side)),('%s_leg_01_bln_jnt'%(side),'%s_upr_bendy_leg_02_loc'%(side)),('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_02_loc'%(side)),('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_03_loc'%(side)),('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_04_loc'%(side)),('%s_bendy_leg_02_ctrl'%(side),'%s_upr_bendy_leg_04_loc'%(side)),('%s_bendy_leg_02_ctrl'%(side),'%s_upr_bendy_leg_05_loc'%(side)),('%s_bendy_leg_02_ctrl'%(side),'%s_lwr_bendy_leg_01_loc'%(side)),('%s_bendy_leg_02_ctrl'%(side),'%s_lwr_bendy_leg_02_loc'%(side)),('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_02_loc'%(side)),('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_03_loc'%(side)),('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_04_loc'%(side)),('%s_leg_03_bln_jnt'%(side),'%s_lwr_bendy_leg_04_loc'%(side)),('%s_leg_03_bln_jnt'%(side),'%s_lwr_bendy_leg_05_loc'%(side))]
for each in list:
cmds.pointConstraint(each[0],each[1],mo=True)
cmds.pointConstraint('%s_leg_01_bln_jnt'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),mo = True)
cmds.pointConstraint('%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),mo = True)
cmds.aimConstraint('%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),wut = 'object',wuo = '%s_upr_bendy_leg_aim_up_loc'%(side),mo = True)
cmds.parentConstraint('%s_leg_02_bln_jnt'%(side),'%s_bendy_leg_02_ctrl_grp'%(side),mo=True)
cmds.pointConstraint('%s_leg_03_bln_jnt'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),mo = True)
cmds.pointConstraint('%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),mo = True)
cmds.aimConstraint('%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),wut = 'object',wuo = '%s_lwr_bendy_leg_aim_up_loc'%(side),mo = True)
cmds.scaleConstraint('world_ctrl','%s_bendy_leg_01_ctrl_grp'%(side),mo = True)
cmds.scaleConstraint('world_ctrl','%s_bendy_leg_02_ctrl_grp'%(side),mo = True)
cmds.scaleConstraint('world_ctrl','%s_bendy_leg_03_ctrl_grp'%(side),mo = True)
createNode = [('multiplyDivide','%s_upr_bendy_leg_stretch_01_mult'%(side)),('multiplyDivide','%s_upr_bendy_leg_stretch_02_mult'%(side)),('multiplyDivide','%s_lwr_bendy_leg_stretch_01_mult'%(side)),('multiplyDivide','%s_lwr_bendy_leg_stretch_02_mult'%(side))]
for each in createNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
toSetNode = [('%s_upr_bendy_leg_stretch_01_mult.operation'%(side),2),('%s_upr_bendy_leg_stretch_01_mult.operation'%(side),2),('%s_lwr_bendy_leg_stretch_01_mult.operation'%(side),2),('%s_lwr_bendy_leg_stretch_01_mult.operation'%(side),2),('%s_upr_bendy_leg_stretch_01_mult.operation'%(side),2)]
for each in toSetNode:
cmds.setAttr(each[0],each[1])
uprArmCurveInfo = cmds.arclen('%s_upr_bendy_leg_crv'%(side),ch = True)
cmds.rename(uprArmCurveInfo,'%s_upr_bendy_leg_crv_info'%(side))
lwrArmCurveInfo = cmds.arclen('%s_lwr_bendy_leg_crv'%(side),ch = True)
cmds.rename(lwrArmCurveInfo,'%s_lwr_bendy_leg_crv_info'%(side))
toConnectAttr = [('%s_leg_02_bln_jnt.rotateX'%(side),'%s_upr_bendy_leg_ikh.twist'%(side)),('%s_upr_bendy_leg_crv_info.arcLength'%(side),'%s_upr_bendy_leg_stretch_01_mult.input1X'%(side)),('%s_upr_bendy_leg_stretch_01_mult.outputX'%(side),'%s_upr_bendy_leg_stretch_02_mult.input1X'%(side)),('%s_upr_bendy_leg_02_length_jnt.translateX'%(side),'%s_upr_bendy_leg_stretch_02_mult.input2X'%(side)),('%s_upr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_upr_bendy_leg_02_jnt.translateX'%(side)),('%s_upr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_upr_bendy_leg_03_jnt.translateX'%(side)),('%s_upr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_upr_bendy_leg_04_jnt.translateX'%(side)),('%s_upr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_upr_bendy_leg_05_jnt.translateX'%(side)),('%s_upr_bendy_leg_end_length_jnt.translateX'%(side),'%s_upr_bendy_leg_stretch_01_mult.input2X'%(side)),('%s_leg_03_bln_jnt.rotateX'%(side),'%s_lwr_bendy_leg_ikh.twist'%(side)),('%s_lwr_bendy_leg_crv_info.arcLength'%(side),'%s_lwr_bendy_leg_stretch_01_mult.input1X'%(side)),('%s_lwr_bendy_leg_stretch_01_mult.outputX'%(side),'%s_lwr_bendy_leg_stretch_02_mult.input1X'%(side)),('%s_lwr_bendy_leg_02_length_jnt.translateX'%(side),'%s_lwr_bendy_leg_stretch_02_mult.input2X'%(side)),('%s_lwr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_lwr_bendy_leg_02_jnt.translateX'%(side)),('%s_lwr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_lwr_bendy_leg_03_jnt.translateX'%(side)),('%s_lwr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_lwr_bendy_leg_04_jnt.translateX'%(side)),('%s_lwr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_lwr_bendy_leg_05_jnt.translateX'%(side)),('%s_lwr_bendy_leg_end_length_jnt.translateX'%(side),'%s_lwr_bendy_leg_stretch_01_mult.input2X'%(side))]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
list = ['%s_upr_bendy_leg_ik_setup_grp'%(side),'%s_lwr_bendy_leg_ik_setup_grp'%(side),'%s_upr_leg_bendy_setup_grp'%(side),'%s_lwr_leg_bendy_setup_grp'%(side)]
for each in list:
cmds.group(n=each,em=True)
list = [('%s_upr_bendy_leg_ik_setup_grp'%(side),'%s_upr_leg_bendy_setup_grp'%(side)),('%s_lwr_bendy_leg_ik_setup_grp'%(side),'%s_lwr_leg_bendy_setup_grp'%(side)),('%s_upr_bendy_leg_loc_grp'%(side),'%s_upr_leg_bendy_setup_grp'%(side)),('%s_lwr_bendy_leg_loc_grp'%(side),'%s_lwr_leg_bendy_setup_grp'%(side)),('%s_bendy_leg_ctrl_grp'%(side),'world_ctrl'),('%s_upr_bendy_leg_crv'%(side),'%s_upr_bendy_leg_ik_setup_grp'%(side)),('%s_upr_bendy_leg_ikh'%(side),'%s_upr_bendy_leg_ik_setup_grp'%(side)),('%s_lwr_bendy_leg_crv'%(side),'%s_lwr_bendy_leg_ik_setup_grp'%(side)),('%s_lwr_bendy_leg_ikh'%(side),'%s_lwr_bendy_leg_ik_setup_grp'%(side))]
for each in list:
cmds.parent(each[0],each[1])
BendyLegSetup('l')
BendyLegSetup('r')
def StrechyLegSetup(side):
#StrechyLeg#
jointList = ['%s_leg_01_length_jnt'%(side),'%s_leg_02_length_jnt'%(side),'%s_leg_03_length_jnt'%(side)]
for each in jointList:
cmds.joint(n=each)
cmds.group(n='%s_leg_length_jnt_grp'%(side),em=True)
cmds.parent('%s_leg_01_length_jnt'%(side),'%s_leg_length_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_leg_length_jnt_grp'%(side),mo=True)
listOfToGetJointPos = [('%s_leg_01_setup'%(side),'%s_leg_01_length_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_leg_02_length_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_leg_03_length_jnt'%(side))]
for each in listOfToGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
addNode = [('distanceBetween','%s_upr_leg_dist'%(side)),('distanceBetween','%s_lwr_leg_dist'%(side)),('addDoubleLinear','%s_leg_full_dist'%(side)),('distanceBetween','%s_leg_stretch_dist'%(side)),('condition','%s_leg_stretch_cond'%(side)),('multiplyDivide','%s_leg_stretch_mult'%(side)),('multiplyDivide','%s_upr_leg_strecth_mult'%(side)),('multiplyDivide','%s_lwr_leg_strecth_mult'%(side)),('multiplyDivide','%s_leg_strecth_option_mult'%(side))]
for each in addNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
cmds.setAttr('%s_leg_stretch_cond.operation'%(side),2)
cmds.setAttr('%s_leg_stretch_mult.operation'%(side),2)
addLoc = [('%s_leg_start_dist_loc'%(side)),('%s_leg_end_dist_loc'%(side))]
for each in addLoc:
cmds.spaceLocator(n=each)
cmds.group(n='%s_leg_start_dist_loc_grp'%(side),em=True)
cmds.parent('%s_leg_start_dist_loc'%(side),'%s_leg_start_dist_loc_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_leg_start_dist_loc_grp'%(side),mo=True)
toConnectNode = [('%s_leg_01_length_jnt.worldMatrix'%(side),'%s_upr_leg_dist.inMatrix1'%(side)),('%s_leg_02_length_jnt.worldMatrix'%(side),'%s_upr_leg_dist.inMatrix2'%(side)),('%s_leg_02_length_jnt.worldMatrix'%(side),'%s_lwr_leg_dist.inMatrix1'%(side)),('%s_leg_03_length_jnt.worldMatrix'%(side),'%s_lwr_leg_dist.inMatrix2'%(side)),('%s_upr_leg_dist.distance'%(side),'%s_leg_full_dist.input1'%(side)),('%s_lwr_leg_dist.distance'%(side),'%s_leg_full_dist.input2'%(side)),('%s_leg_start_dist_loc.worldMatrix'%(side),'%s_leg_stretch_dist.inMatrix1'%(side)),('%s_leg_end_dist_loc.worldMatrix'%(side),'%s_leg_stretch_dist.inMatrix2'%(side)),('%s_leg_stretch_dist.distance'%(side),'%s_leg_stretch_cond.firstTerm'%(side)),('%s_leg_full_dist.output'%(side),'%s_leg_stretch_cond.secondTerm'%(side)),('%s_leg_stretch_dist.distance'%(side),'%s_leg_stretch_mult.input1X'%(side)),('%s_leg_full_dist.output'%(side),'%s_leg_stretch_mult.input2X'%(side)),('%s_leg_stretch_mult.outputX'%(side),'%s_leg_stretch_cond.colorIfTrue.colorIfTrueR'%(side)),('%s_leg_stretch_cond.outColor.outColorR'%(side),'%s_lwr_leg_strecth_mult.input1X'%(side)),('%s_leg_stretch_cond.outColor.outColorR'%(side),'%s_upr_leg_strecth_mult.input1X'%(side)),('%s_leg_02_setup.translateX'%(side),'%s_upr_leg_strecth_mult.input2X'%(side)),('%s_leg_03_setup.translateX'%(side),'%s_lwr_leg_strecth_mult.input2X'%(side)),('%s_upr_leg_strecth_mult.outputX'%(side),'%s_ik_leg_02_jnt.translateX'%(side)),('%s_lwr_leg_strecth_mult.outputX'%(side),'%s_ik_leg_03_jnt.translateX'%(side)),('%s_ik_leg_ctrl.stretch'%(side),'%s_leg_strecth_option_mult.input1X'%(side)),('%s_leg_strecth_option_mult.outputX'%(side),'%s_leg_stretch_cond.operation'%(side))]
for each in toConnectNode:
cmds.connectAttr(each[0],each[1])
toSetVis = [('%s_leg_start_dist_loc.visibility'%(side)),('%s_leg_end_dist_loc.visibility'%(side))]
for each in toSetVis:
cmds.setAttr(each,0)
toGetLocPos = [('%s_leg_01_setup'%(side),'%s_leg_start_dist_loc'%(side)),('%s_leg_03_setup'%(side),'%s_leg_end_dist_loc'%(side))]
for each in toGetLocPos:
forDel = cmds.pointConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.parentConstraint('spine_01_bln_jnt','%s_leg_start_dist_loc'%(side),mo=True)
cmds.parent('%s_leg_end_dist_loc'%(side),'%s_ik_leg_ctrl'%(side))
cmds.setAttr('%s_leg_strecth_option_mult.input2X'%(side),2)
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
StrechyLegSetup('l')
StrechyLegSetup('r')
def legJointGroup():
cmds.group(n='l_leg_jnt_grp',em=True)
cmds.group(n='r_leg_jnt_grp',em=True)
cmds.group(n='leg_jnt_grp',em=True)
cmds.group(n='leg_bendy_setup_grp',em=True)
listOfJnt = [('r_leg_01_bln_jnt','r_leg_jnt_grp'),('l_bendy_leg_jnt_grp','l_leg_jnt_grp'),('r_bendy_leg_jnt_grp','r_leg_jnt_grp'),('l_upr_leg_bendy_setup_grp','leg_bendy_setup_grp'),('l_lwr_leg_bendy_setup_grp','leg_bendy_setup_grp'),('r_upr_leg_bendy_setup_grp','leg_bendy_setup_grp'),('r_lwr_leg_bendy_setup_grp','leg_bendy_setup_grp'),('l_leg_01_bln_jnt','l_leg_jnt_grp'),('l_leg_jnt_grp','leg_jnt_grp'),('r_leg_jnt_grp','leg_jnt_grp'),('l_fk_leg_01_jnt','l_leg_jnt_grp'),('r_fk_leg_01_jnt','r_leg_jnt_grp'),('l_upr_bendy_leg_jnt_grp','l_leg_jnt_grp'),('l_lwr_bendy_leg_jnt_grp','l_leg_jnt_grp'),('r_upr_bendy_leg_jnt_grp','r_leg_jnt_grp'),('r_lwr_bendy_leg_jnt_grp','r_leg_jnt_grp'),('l_ik_leg_jnt_grp','l_leg_jnt_grp'),('r_ik_leg_jnt_grp','r_leg_jnt_grp'),('r_leg_length_jnt_grp','r_leg_jnt_grp'),('l_leg_length_jnt_grp','l_leg_jnt_grp')]
for each in listOfJnt:
cmds.parent(each[0],each[1])
legJointGroup()
def noBendyLeg():
def FKlegSetup(side):
nameOfFKlegController = [('%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))]
for each in nameOfFKlegController:
cmds.curve(d=1,p=[(0.0, 1.8457071003629746, -6.888272674590291),(0.0, 1.6065215981349992, -5.995620227271308),(0.0, -1.6065234643869502, -5.995624729951774),(0.0, -1.8454397435472047, -6.8872682416730004),(0.0, -5.041829388107622, -5.041831819868864),(0.0, -4.389101595742385, -4.389102497134237),(0.0, -5.995620227271308, -1.6065215981349992),(0.0, -6.888272674590291, -1.8457071003629746),(0.0, -6.8872682416730004, 1.8454397435472047),(0.0, -5.995624729951774, 1.6065234643869502),(0.0, -4.389102497134237, 4.389101595742385),(0.0, -5.041831819868864, 5.041829388107622),(0.0, -1.8457071003629746, 6.888272674590291),(0.0, -1.6065215981349992, 5.995620227271308),(0.0, 1.6065234643869502, 5.995624729951774),(0.0, 1.8454397435472047, 6.8872682416730004),(0.0, 5.041829388107622, 5.041831819868864),(0.0, 4.389101595742385, 4.389102497134237),(0.0, 5.995620227271308, 1.6065215981349992),(0.0, 6.888272674590291, 1.8457071003629746),(0.0, 6.8872682416730004, -1.8454397435472047),(0.0, 5.995624729951774, -1.6065234643869502),(0.0, 4.389102497134237, -4.389101595742385),(0.0, 5.041831819868864, -5.041829388107622),(0.0, 1.8457071003629746, -6.888272674590291)])
cmds.rename(each[0])
cmds.group(n=each[1])
createJoint = ['%s_fk_leg_01_jnt'%(side),'%s_fk_leg_02_jnt'%(side),'%s_fk_leg_03_jnt'%(side),'%s_fk_leg_04_jnt'%(side)]
for each in createJoint:
cmds.joint(n=each)
toGetFKlegPos = [('%s_leg_01_setup'%(side),'%s_fk_leg_01_ctrl_grp'%(side)),('%s_leg_02_setup'%(side),'%s_fk_leg_02_ctrl_grp'%(side)),('%s_leg_03_setup'%(side),'%s_fk_leg_03_ctrl_grp'%(side)),('%s_leg_04_setup'%(side),'%s_fk_leg_04_ctrl_grp'%(side)),('%s_leg_01_setup'%(side),'%s_fk_leg_01_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_fk_leg_02_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_fk_leg_03_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_fk_leg_04_jnt'%(side))]
for each in toGetFKlegPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_fk_leg_01_jnt'%(side),apply=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)),('spine_01_bln_jnt','%s_fk_leg_01_ctrl_grp'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toParent = [('%s_fk_leg_01_ctrl_grp'%(side),'world_ctrl'),('%s_fk_leg_02_ctrl_grp'%(side),'%s_fk_leg_01_ctrl'%(side)),('%s_fk_leg_03_ctrl_grp'%(side), '%s_fk_leg_02_ctrl'%(side)),('%s_fk_leg_04_ctrl_grp'%(side),'%s_fk_leg_03_ctrl'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
toSetAttr = [('%s_fk_leg_01_ctrl'%(side)),('%s_fk_leg_02_ctrl'%(side)),('%s_fk_leg_03_ctrl'%(side)),('%s_fk_leg_04_ctrl'%(side))]
for each in toSetAttr:
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)
FKlegSetup('l')
FKlegSetup('r')
def IKFKarmSetup(side):
#IKFKarmJoint#
nameOfJoint = [('%s_arm_01_bln_jnt'%(side)),('%s_arm_02_bln_jnt'%(side)),('%s_arm_03_bln_jnt'%(side))]
for each in nameOfJoint:
cmds.joint(n=each)
cmds.group(n='%s_arm_bln_jnt_grp'%(side),em=True)
cmds.parent('%s_arm_01_bln_jnt'%(side),'%s_arm_bln_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_bln_jnt_grp'%(side),mo=True)
toGetPos = [('%s_arm_01_setup'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_bln_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_bln_jnt'%(side))]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.setAttr('%s_arm_01_bln_jnt.drawStyle'%(side),2)
cmds.setAttr('%s_arm_02_bln_jnt.drawStyle'%(side),2)
cmds.makeIdentity( '%s_arm_01_bln_jnt'%(side),apply=True, rotate=True)
toParentCon = [('%s_fk_arm_01_jnt'%(side),'%s_arm_01_bln_jnt'%(side)),('%s_ik_01_jnt'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_fk_arm_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_ik_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_fk_arm_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side)),('%s_ik_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo = True)
cmds.curve(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.rename('%s_ik_fk_switch'%(side))
ControllerAttr('%s_ik_fk_switch'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.group(n='%s_ik_fk_switch_grp'%(side))
cmds.parent('%s_ik_fk_switch_grp'%(side), 'world_ctrl')
cmds.addAttr('%s_ik_fk_switch'%(side),sn='IKFK', min = 0, max=1 ,k=1,dv=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='bendyVis',at = 'bool',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='thumbCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='indexCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='middleCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='ringCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='pinkyCurl',k=1)
cmds.parentConstraint('%s_arm_03_bln_jnt'%(side), '%s_ik_fk_switch_grp'%(side))
cmds.shadingNode('reverse',n = '%s_arm_ik_rev'%(side),asUtility=1)
toConnectAttr = [('%s_ik_fk_switch.IKFK'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_fk_arm_03_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_fk_arm_02_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_fk_arm_01_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_ik_rev.inputX'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_ik_03_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_ik_02_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_ik_01_jntW1'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_fk_arm_01_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_ik_arm_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_direction_crv_grp.visibility'%(side))]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
IKFKarmSetup('l')
IKFKarmSetup('r')
def bendyArmSetup(side):
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('%s_upr_bendy_arm_crv'%(side))
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('%s_lwr_bendy_arm_crv'%(side))
nameOfLoc = ['%s_upr_bendy_arm_01_loc'%(side),'%s_upr_bendy_arm_02_loc'%(side),'%s_upr_bendy_arm_03_loc'%(side),'%s_upr_bendy_arm_04_loc'%(side),'%s_upr_bendy_arm_05_loc'%(side),'%s_lwr_bendy_arm_01_loc'%(side),'%s_lwr_bendy_arm_02_loc'%(side),'%s_lwr_bendy_arm_03_loc'%(side),'%s_lwr_bendy_arm_04_loc'%(side),'%s_lwr_bendy_arm_05_loc'%(side),'%s_upr_bendy_arm_aim_up_loc'%(side),'%s_lwr_bendy_arm_aim_up_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
listToGetPos = [('%s_arm_01_bln_jnt'%(side),'%s_upr_bendy_arm_aim_up_loc'%(side)),('%s_arm_02_bln_jnt'%(side),'%s_lwr_bendy_arm_aim_up_loc'%(side))]
for each in listToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.parent('%s_upr_bendy_arm_aim_up_loc'%(side),'%s_arm_01_bln_jnt'%(side))
cmds.parent('%s_lwr_bendy_arm_aim_up_loc'%(side),'%s_arm_02_bln_jnt'%(side))
cmds.setAttr('%s_upr_bendy_arm_aim_up_loc.translateY'%(side),50)
cmds.setAttr('%s_lwr_bendy_arm_aim_up_loc.translateY'%(side),50)
toGetLocPos = [('%s_upr_bendy_arm_01_loc.translateY'%(side),0),('%s_upr_bendy_arm_02_loc.translateY'%(side),2.5),('%s_upr_bendy_arm_03_loc.translateY'%(side),5),('%s_upr_bendy_arm_04_loc.translateY'%(side),7.5),('%s_upr_bendy_arm_05_loc.translateY'%(side),10),('%s_lwr_bendy_arm_01_loc.translateY'%(side),0),('%s_lwr_bendy_arm_02_loc.translateY'%(side),2.5),('%s_lwr_bendy_arm_03_loc.translateY'%(side),5),('%s_lwr_bendy_arm_04_loc.translateY'%(side),7.5),('%s_lwr_bendy_arm_05_loc.translateY'%(side),10),('%s_ik_fk_switch.bendyVis'%(side),1)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_upr_bendy_arm_01_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[0]'%(side)),('%s_upr_bendy_arm_02_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[1]'%(side)),('%s_upr_bendy_arm_03_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[2]'%(side)),('%s_upr_bendy_arm_04_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[3]'%(side)),('%s_upr_bendy_arm_05_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[4]'%(side)),('%s_lwr_bendy_arm_01_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[0]'%(side)),('%s_lwr_bendy_arm_02_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[1]'%(side)),('%s_lwr_bendy_arm_03_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[2]'%(side)),('%s_lwr_bendy_arm_04_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[3]'%(side)),('%s_lwr_bendy_arm_05_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
listOfBendyArmController = [('%s_bendy_arm_01_ctrl'%(side),'%s_bendy_arm_01_ctrl_grp'%(side)),('%s_bendy_arm_02_ctrl'%(side),'%s_bendy_arm_02_ctrl_grp'%(side)),('%s_bendy_arm_03_ctrl'%(side),'%s_bendy_arm_03_ctrl_grp'%(side))]
for each in listOfBendyArmController:
cmds.curve(d=1, p=[(0, -3, 3),(0, -1, 2),(0, 0, 4),(0, 1, 2),(0, 3, 3),(0, 2, 1),(0, 4, 0),(0, 2, -1),(0, 3, -3),(0, 1, -2),(0, 0, -4),(0, -1, -2),(0, -3, -3),(0, -2, -1),(0, -4, 0),(0, -2, 1),(0, -3, 3)])
cmds.rename(each[0])
cmds.group(n=each[1])
cmds.delete('%s_bendy_arm_01_ctrl'%(side),'%s_bendy_arm_02_ctrl'%(side),'%s_bendy_arm_03_ctrl'%(side),constructionHistory = True)
uprBendyController01forDel = cmds.pointConstraint('%s_arm_01_setup'%(side),'%s_bendy_arm_01_ctrl_grp'%(side),mo=False)
uprBendyController01forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_01_ctrl_grp'%(side),mo=False)
uprBendyController02forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_02_ctrl_grp'%(side),mo=False)
uprBendyController03forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_03_ctrl_grp'%(side),mo=False)
uprBendyController03forDel = cmds.pointConstraint('%s_arm_03_setup'%(side),'%s_bendy_arm_03_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation01forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_bendy_arm_01_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation02forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_02_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation03forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_03_ctrl_grp'%(side),mo=False)
cmds.delete(uprBendyController01forDel,uprBendyController02forDel,uprBendyController03forDel,uprBendyControllerForRotation01forDel,uprBendyControllerForRotation02forDel,uprBendyControllerForRotation03forDel)
listOfUprBendyJoint = ['%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_02_jnt'%(side),'%s_upr_bendy_arm_03_jnt'%(side),'%s_upr_bendy_arm_04_jnt'%(side),'%s_upr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),'%s_lwr_bendy_arm_03_jnt'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),'%s_lwr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side),'%s_upr_bendy_arm_02_length_jnt'%(side),'%s_upr_bendy_arm_03_length_jnt'%(side),'%s_upr_bendy_arm_04_length_jnt'%(side),'%s_upr_bendy_arm_05_length_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_lwr_bendy_arm_02_length_jnt'%(side),'%s_lwr_bendy_arm_03_length_jnt'%(side),'%s_lwr_bendy_arm_04_length_jnt'%(side),'%s_lwr_bendy_arm_05_length_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side),'%s_lwr_bendy_arm_end_length_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side),'%s_upr_bendy_arm_end_length_jnt'%(side)]
for each in listOfUprBendyJoint:
cmds.joint(n=each)
cmds.parent('%s_upr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side),w=True)
cmds.group(n='%s_upr_bendy_arm_jnt_grp'%(side),em=True)
cmds.group(n='%s_lwr_bendy_arm_jnt_grp'%(side),em=True)
cmds.parent('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_jnt_grp'%(side))
cmds.parent('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_jnt_grp'%(side))
cmds.orientConstraint('%s_arm_01_bln_jnt'%(side),'%s_upr_bendy_arm_jnt_grp'%(side),mo=True)
cmds.orientConstraint('%s_arm_02_bln_jnt'%(side),'%s_lwr_bendy_arm_jnt_grp'%(side),mo=True)
uprBendyJoint01forDel = cmds.pointConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_01_jnt'%(side),mo=False)
uprBendyJoint02forDel = cmds.pointConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_02_jnt'%(side),mo=False)
uprBendyJoint02forDel = cmds.pointConstraint('%s_bendy_arm_01_ctrl'%(side),'%s_upr_bendy_arm_02_jnt'%(side),mo=False)
uprBendyJoint03forDel = cmds.pointConstraint('%s_bendy_arm_01_ctrl'%(side),'%s_upr_bendy_arm_03_jnt'%(side),mo=False)
uprBendyJoint04forDel = cmds.pointConstraint('%s_bendy_arm_01_ctrl'%(side),'%s_upr_bendy_arm_04_jnt'%(side),mo=False)
uprBendyJoint04forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_upr_bendy_arm_04_jnt'%(side),mo=False)
uprBendyJoint05forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_upr_bendy_arm_05_jnt'%(side),mo=False)
lwrBendyJoint01forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),mo=False)
lwrBendyJoint02forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),mo=False)
lwrBendyJoint02forDel = cmds.pointConstraint('%s_bendy_arm_03_ctrl'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),mo=False)
lwrBendyJoint03forDel = cmds.pointConstraint('%s_bendy_arm_03_ctrl'%(side),'%s_lwr_bendy_arm_03_jnt'%(side),mo=False)
lwrBendyJoint04forDel = cmds.pointConstraint('%s_bendy_arm_03_ctrl'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),mo=False)
lwrBendyJoint04forDel = cmds.pointConstraint('%s_arm_03_setup'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),mo=False)
lwrBendyJoint05forDel = cmds.pointConstraint('%s_arm_03_setup'%(side),'%s_lwr_bendy_arm_05_jnt'%(side),mo=False)
uprBendyJointForRatation01forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_01_jnt'%(side),mo=False)
uprBendyJointForRatation02forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_02_jnt'%(side),mo=False)
uprBendyJointForRatation03forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_03_jnt'%(side),mo=False)
uprBendyJointForRatation04forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_04_jnt'%(side),mo=False)
uprBendyJointForRatation05forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_05_jnt'%(side),mo=False)
lwrBendyJointForRatation01forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),mo=False)
lwrBendyJointForRatation02forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),mo=False)
lwrBendyJointForRatation03forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_03_jnt'%(side),mo=False)
lwrBendyJointForRatation04forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),mo=False)
lwrBendyJointForRatation05forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_05_jnt'%(side),mo=False)
cmds.delete(uprBendyJoint01forDel,uprBendyJoint02forDel,uprBendyJoint03forDel,uprBendyJoint04forDel,uprBendyJoint05forDel,lwrBendyJoint01forDel,lwrBendyJoint02forDel,lwrBendyJoint03forDel,lwrBendyJoint04forDel,lwrBendyJoint05forDel,uprBendyJointForRatation01forDel,uprBendyJointForRatation02forDel,uprBendyJointForRatation03forDel,uprBendyJointForRatation04forDel,uprBendyJointForRatation05forDel,lwrBendyJointForRatation01forDel,lwrBendyJointForRatation02forDel,lwrBendyJointForRatation03forDel,lwrBendyJointForRatation04forDel,lwrBendyJointForRatation05forDel)
listOfBendyArmLenghtJointToGetPos = [('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side)),('%s_upr_bendy_arm_02_jnt'%(side),'%s_upr_bendy_arm_02_length_jnt'%(side)),('%s_upr_bendy_arm_03_jnt'%(side),'%s_upr_bendy_arm_03_length_jnt'%(side)),('%s_upr_bendy_arm_04_jnt'%(side),'%s_upr_bendy_arm_04_length_jnt'%(side)),('%s_upr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_05_length_jnt'%(side)),('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side)),('%s_lwr_bendy_arm_02_jnt'%(side),'%s_lwr_bendy_arm_02_length_jnt'%(side)),('%s_lwr_bendy_arm_03_jnt'%(side),'%s_lwr_bendy_arm_03_length_jnt'%(side)),('%s_lwr_bendy_arm_04_jnt'%(side),'%s_lwr_bendy_arm_04_length_jnt'%(side)),('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_05_length_jnt'%(side)),('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side)),('%s_upr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_end_length_jnt'%(side)),('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side)),('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_end_length_jnt'%(side))]
for each in listOfBendyArmLenghtJointToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_upr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side),apply=True,rotate=True)
locToGetPos = [('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_loc'%(side)),('%s_upr_bendy_arm_02_jnt'%(side),'%s_upr_bendy_arm_02_loc'%(side)),('%s_upr_bendy_arm_03_jnt'%(side),'%s_upr_bendy_arm_03_loc'%(side)),('%s_upr_bendy_arm_04_jnt'%(side),'%s_upr_bendy_arm_04_loc'%(side)),('%s_upr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_05_loc'%(side)),('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_loc'%(side)),('%s_lwr_bendy_arm_02_jnt'%(side),'%s_lwr_bendy_arm_02_loc'%(side)),('%s_lwr_bendy_arm_03_jnt'%(side),'%s_lwr_bendy_arm_03_loc'%(side)),('%s_lwr_bendy_arm_04_jnt'%(side),'%s_lwr_bendy_arm_04_loc'%(side)),('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_05_loc'%(side))]
for each in locToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = ['%s_upr_bendy_arm_loc_grp'%(side),'%s_lwr_bendy_arm_loc_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side),'%s_bendy_arm_jnt_grp'%(side)]
for each in list:
cmds.group(n=each,em=True)
cmds.connectAttr('%s_ik_fk_switch.bendyVis'%(side),'%s_bendy_arm_ctrl_grp.visibility'%(side))
list = [('%s_lwr_bendy_arm_jnt_grp'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_upr_bendy_arm_jnt_grp'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_upr_bendy_arm_01_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_02_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_03_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_04_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_05_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_01_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_02_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_03_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_04_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_05_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_bendy_arm_01_ctrl_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side)),('%s_bendy_arm_02_ctrl_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side)),('%s_bendy_arm_03_ctrl_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side)),('%s_upr_bendy_arm_01_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_upr_bendy_arm_start_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_lwr_bendy_arm_start_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side))]
for each in list:
cmds.parent(each[0],each[1])
list = [('%s_bendy_arm_01_ctrl'%(side)),('%s_bendy_arm_02_ctrl'%(side)),('%s_bendy_arm_03_ctrl'%(side))]
for each in list:
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+'.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+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,18)
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
bendyArmSetup('l')
bendyArmSetup('r')
def bendyArmIKsetup():
cmds.setAttr('r_lwr_bendy_arm_aim_up_loc.translateY',-50)
cmds.setAttr('r_upr_bendy_arm_aim_up_loc.translateY',-50)
list = ['r_upr_bendy_arm_02_jnt','r_upr_bendy_arm_03_jnt','r_upr_bendy_arm_04_jnt','r_upr_bendy_arm_05_jnt','r_lwr_bendy_arm_02_jnt','r_lwr_bendy_arm_03_jnt','r_lwr_bendy_arm_04_jnt','r_lwr_bendy_arm_05_jnt']
for each in list:
cmds.parent(each,w=True)
list = ['r_upr_bendy_arm_01_jnt.rotateY','r_lwr_bendy_arm_01_jnt.rotateY','r_upr_bendy_arm_02_jnt.rotateY','r_upr_bendy_arm_03_jnt.rotateY','r_upr_bendy_arm_04_jnt.rotateY','r_upr_bendy_arm_05_jnt.rotateY','r_lwr_bendy_arm_02_jnt.rotateY','r_lwr_bendy_arm_03_jnt.rotateY','r_lwr_bendy_arm_04_jnt.rotateY','r_lwr_bendy_arm_05_jnt.rotateY']
for each in list:
cmds.setAttr(each,180)
list = [('r_upr_bendy_arm_02_jnt','r_upr_bendy_arm_01_jnt'),('r_upr_bendy_arm_03_jnt','r_upr_bendy_arm_02_jnt'),('r_upr_bendy_arm_04_jnt','r_upr_bendy_arm_03_jnt'),('r_upr_bendy_arm_05_jnt','r_upr_bendy_arm_04_jnt'),('r_lwr_bendy_arm_02_jnt','r_lwr_bendy_arm_01_jnt'),('r_lwr_bendy_arm_03_jnt','r_lwr_bendy_arm_02_jnt'),('r_lwr_bendy_arm_04_jnt','r_lwr_bendy_arm_03_jnt'),('r_lwr_bendy_arm_05_jnt','r_lwr_bendy_arm_04_jnt')]
for each in list:
cmds.parent(each[0],each[1])
cmds.makeIdentity('r_upr_bendy_arm_01_jnt','r_lwr_bendy_arm_01_jnt',apply=True,rotate=True)
cmds.select('l_upr_bendy_arm_01_jnt','l_upr_bendy_arm_05_jnt','l_upr_bendy_arm_crv')
cmds.ikHandle(n='l_upr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
cmds.select('l_lwr_bendy_arm_01_jnt','l_lwr_bendy_arm_05_jnt','l_lwr_bendy_arm_crv')
cmds.ikHandle(n='l_lwr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
cmds.select('r_upr_bendy_arm_01_jnt','r_upr_bendy_arm_05_jnt','r_upr_bendy_arm_crv')
cmds.ikHandle(n='r_upr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
cmds.select('r_lwr_bendy_arm_01_jnt','r_lwr_bendy_arm_05_jnt','r_lwr_bendy_arm_crv')
cmds.ikHandle(n='r_lwr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
list = [('l_arm_01_bln_jnt','l_upr_bendy_arm_01_loc'),('l_arm_01_bln_jnt','l_upr_bendy_arm_02_loc'),('l_bendy_arm_01_ctrl','l_upr_bendy_arm_02_loc'),('l_bendy_arm_01_ctrl','l_upr_bendy_arm_03_loc'),('l_bendy_arm_01_ctrl','l_upr_bendy_arm_04_loc'),('l_bendy_arm_02_ctrl','l_upr_bendy_arm_04_loc'),('l_bendy_arm_02_ctrl','l_upr_bendy_arm_05_loc'),('l_bendy_arm_02_ctrl','l_lwr_bendy_arm_01_loc'),('l_bendy_arm_02_ctrl','l_lwr_bendy_arm_02_loc'),('l_bendy_arm_03_ctrl','l_lwr_bendy_arm_02_loc'),('l_bendy_arm_03_ctrl','l_lwr_bendy_arm_03_loc'),('l_bendy_arm_03_ctrl','l_lwr_bendy_arm_04_loc'),('l_arm_03_bln_jnt','l_lwr_bendy_arm_04_loc'),('l_arm_03_bln_jnt','l_lwr_bendy_arm_05_loc'),('r_arm_01_bln_jnt','r_upr_bendy_arm_01_loc'),('r_arm_01_bln_jnt','r_upr_bendy_arm_02_loc'),('r_bendy_arm_01_ctrl','r_upr_bendy_arm_02_loc'),('r_bendy_arm_01_ctrl','r_upr_bendy_arm_03_loc'),('r_bendy_arm_01_ctrl','r_upr_bendy_arm_04_loc'),('r_bendy_arm_02_ctrl','r_upr_bendy_arm_04_loc'),('r_bendy_arm_02_ctrl','r_upr_bendy_arm_05_loc'),('r_bendy_arm_02_ctrl','r_lwr_bendy_arm_01_loc'),('r_bendy_arm_02_ctrl','r_lwr_bendy_arm_02_loc'),('r_bendy_arm_03_ctrl','r_lwr_bendy_arm_02_loc'),('r_bendy_arm_03_ctrl','r_lwr_bendy_arm_03_loc'),('r_bendy_arm_03_ctrl','r_lwr_bendy_arm_04_loc'),('r_arm_03_bln_jnt','r_lwr_bendy_arm_04_loc'),('r_arm_03_bln_jnt','r_lwr_bendy_arm_05_loc')]
for each in list:
cmds.pointConstraint(each[0],each[1],mo=True)
cmds.pointConstraint('l_arm_01_bln_jnt','l_bendy_arm_01_ctrl_grp',mo = True)
cmds.pointConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_01_ctrl_grp',mo = True)
cmds.aimConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_01_ctrl_grp',wut = 'object',wuo = 'l_upr_bendy_arm_aim_up_loc',mo = True)
cmds.parentConstraint('l_arm_02_bln_jnt','l_bendy_arm_02_ctrl_grp',mo=True)
cmds.pointConstraint('l_arm_03_bln_jnt','l_bendy_arm_03_ctrl_grp',mo = True)
cmds.pointConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_03_ctrl_grp',mo = True)
cmds.aimConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_03_ctrl_grp',wut = 'object',wuo = 'l_lwr_bendy_arm_aim_up_loc',mo = True)
cmds.scaleConstraint('world_ctrl','l_bendy_arm_01_ctrl_grp',mo = True)
cmds.scaleConstraint('world_ctrl','l_bendy_arm_02_ctrl_grp',mo = True)
cmds.scaleConstraint('world_ctrl','l_bendy_arm_03_ctrl_grp',mo = True)
cmds.pointConstraint('r_arm_01_bln_jnt','r_bendy_arm_01_ctrl_grp',mo = True)
cmds.pointConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_01_ctrl_grp',mo = True)
cmds.aimConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_01_ctrl_grp',wut = 'object',wuo = 'r_upr_bendy_arm_aim_up_loc',mo = True)
cmds.parentConstraint('r_arm_02_bln_jnt','r_bendy_arm_02_ctrl_grp',mo=True)
cmds.pointConstraint('r_arm_03_bln_jnt','r_bendy_arm_03_ctrl_grp',mo = True)
cmds.pointConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_03_ctrl_grp',mo = True)
cmds.aimConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_03_ctrl_grp',wut = 'object',wuo = 'r_lwr_bendy_arm_aim_up_loc',mo = True)
cmds.scaleConstraint('world_ctrl','r_bendy_arm_01_ctrl_grp',mo = True)
cmds.scaleConstraint('world_ctrl','r_bendy_arm_02_ctrl_grp',mo = True)
cmds.scaleConstraint('world_ctrl','r_bendy_arm_03_ctrl_grp',mo = True)
createNode = [('multiplyDivide','r_bendy_arm_twist_mult'),('multiplyDivide','l_upr_bendy_arm_stretch_01_mult'),('multiplyDivide','l_upr_bendy_arm_stretch_02_mult'),('multiplyDivide','l_lwr_bendy_arm_stretch_01_mult'),('multiplyDivide','l_lwr_bendy_arm_stretch_02_mult'),('multiplyDivide','r_upr_bendy_arm_stretch_01_mult'),('multiplyDivide','r_upr_bendy_arm_stretch_02_mult'),('multiplyDivide','r_lwr_bendy_arm_stretch_01_mult'),('multiplyDivide','r_lwr_bendy_arm_stretch_02_mult')]
for each in createNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
toSetNode = [('r_bendy_arm_twist_mult.input2Y',-1),('r_bendy_arm_twist_mult.input2X',-1),('l_upr_bendy_arm_stretch_01_mult.operation',2),('l_upr_bendy_arm_stretch_01_mult.operation',2),('l_lwr_bendy_arm_stretch_01_mult.operation',2),('l_lwr_bendy_arm_stretch_01_mult.operation',2),('l_upr_bendy_arm_stretch_01_mult.operation',2),('r_upr_bendy_arm_stretch_01_mult.operation',2),('r_lwr_bendy_arm_stretch_01_mult.operation',2),('r_lwr_bendy_arm_stretch_01_mult.operation',2)]
for each in toSetNode:
cmds.setAttr(each[0],each[1])
uprArmCurveInfo = cmds.arclen('l_upr_bendy_arm_crv',ch = True)
cmds.rename(uprArmCurveInfo,'l_upr_bendy_arm_crv_info')
lwrArmCurveInfo = cmds.arclen('l_lwr_bendy_arm_crv',ch = True)
cmds.rename(lwrArmCurveInfo,'l_lwr_bendy_arm_crv_info')
uprArmCurveInfo = cmds.arclen('r_upr_bendy_arm_crv',ch = True)
cmds.rename(uprArmCurveInfo,'r_upr_bendy_arm_crv_info')
lwrArmCurveInfo = cmds.arclen('r_lwr_bendy_arm_crv',ch = True)
cmds.rename(lwrArmCurveInfo,'r_lwr_bendy_arm_crv_info')
toConnectAttr = [('r_arm_03_bln_jnt.rotateX','r_bendy_arm_twist_mult.input1Y'),('r_arm_02_bln_jnt.rotateX','r_bendy_arm_twist_mult.input1X'),('r_bendy_arm_twist_mult.outputX','r_upr_bendy_arm_ikh.twist'),('r_bendy_arm_twist_mult.outputY','r_lwr_bendy_arm_ikh.twist'),('l_arm_02_bln_jnt.rotateX','l_upr_bendy_arm_ikh.twist'),('l_upr_bendy_arm_crv_info.arcLength','l_upr_bendy_arm_stretch_01_mult.input1X'),('l_upr_bendy_arm_stretch_01_mult.outputX','l_upr_bendy_arm_stretch_02_mult.input1X'),('l_upr_bendy_arm_02_length_jnt.translateX','l_upr_bendy_arm_stretch_02_mult.input2X'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_02_jnt.translateX'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_03_jnt.translateX'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_04_jnt.translateX'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_05_jnt.translateX'),('l_upr_bendy_arm_end_length_jnt.translateX','l_upr_bendy_arm_stretch_01_mult.input2X'),('l_arm_03_bln_jnt.rotateX','l_lwr_bendy_arm_ikh.twist'),('l_lwr_bendy_arm_crv_info.arcLength','l_lwr_bendy_arm_stretch_01_mult.input1X'),('l_lwr_bendy_arm_stretch_01_mult.outputX','l_lwr_bendy_arm_stretch_02_mult.input1X'),('l_lwr_bendy_arm_02_length_jnt.translateX','l_lwr_bendy_arm_stretch_02_mult.input2X'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_02_jnt.translateX'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_03_jnt.translateX'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_04_jnt.translateX'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_05_jnt.translateX'),('l_lwr_bendy_arm_end_length_jnt.translateX','l_lwr_bendy_arm_stretch_01_mult.input2X'),('r_upr_bendy_arm_crv_info.arcLength','r_upr_bendy_arm_stretch_01_mult.input1X'),('r_upr_bendy_arm_stretch_01_mult.outputX','r_upr_bendy_arm_stretch_02_mult.input1X'),('r_upr_bendy_arm_02_length_jnt.translateX','r_upr_bendy_arm_stretch_02_mult.input2X'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_02_jnt.translateX'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_03_jnt.translateX'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_04_jnt.translateX'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_05_jnt.translateX'),('r_upr_bendy_arm_end_length_jnt.translateX','r_upr_bendy_arm_stretch_01_mult.input2X'),('r_lwr_bendy_arm_crv_info.arcLength','r_lwr_bendy_arm_stretch_01_mult.input1X'),('r_lwr_bendy_arm_stretch_01_mult.outputX','r_lwr_bendy_arm_stretch_02_mult.input1X'),('r_lwr_bendy_arm_02_length_jnt.translateX','r_lwr_bendy_arm_stretch_02_mult.input2X'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_02_jnt.translateX'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_03_jnt.translateX'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_04_jnt.translateX'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_05_jnt.translateX'),('r_lwr_bendy_arm_end_length_jnt.translateX','r_lwr_bendy_arm_stretch_01_mult.input2X')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
list = ['l_upr_bendy_arm_ik_setup_grp','r_upr_bendy_arm_ik_setup_grp','l_lwr_bendy_arm_ik_setup_grp','r_lwr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp']
for each in list:
cmds.group(n=each,em=True)
list = [('l_upr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('r_upr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('l_lwr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('r_lwr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('l_upr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('l_lwr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('r_upr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('r_lwr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('l_bendy_arm_ctrl_grp','world_ctrl'),('r_bendy_arm_ctrl_grp','world_ctrl'),('l_upr_bendy_arm_crv','l_upr_bendy_arm_ik_setup_grp'),('l_upr_bendy_arm_ikh','l_upr_bendy_arm_ik_setup_grp'),('l_lwr_bendy_arm_crv','l_lwr_bendy_arm_ik_setup_grp'),('l_lwr_bendy_arm_ikh','l_lwr_bendy_arm_ik_setup_grp'),('r_upr_bendy_arm_crv','r_upr_bendy_arm_ik_setup_grp'),('r_upr_bendy_arm_ikh','r_upr_bendy_arm_ik_setup_grp'),('r_lwr_bendy_arm_crv','r_lwr_bendy_arm_ik_setup_grp'),('r_lwr_bendy_arm_ikh','r_lwr_bendy_arm_ik_setup_grp')]
for each in list:
cmds.parent(each[0],each[1])
bendyArmIKsetup()
def ArmStretchSetup(side):
####armStretchsetup####
jointList = ['%s_arm_01_length_jnt'%(side),'%s_arm_02_length_jnt'%(side),'%s_arm_03_length_jnt'%(side)]
for each in jointList:
cmds.joint(n=each)
cmds.group(n='%s_arm_length_jnt_grp'%(side),em=True)
cmds.parent('%s_arm_01_length_jnt'%(side),'%s_arm_length_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_length_jnt_grp'%(side),mo=True)
listOfToGetJointPos = [('%s_arm_01_setup'%(side),'%s_arm_01_length_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_length_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_length_jnt'%(side))]
for each in listOfToGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('distanceBetween','%s_upr_arm_dist'%(side)),('distanceBetween','%s_lwr_arm_dist'%(side)),('addDoubleLinear','%s_arm_full_dist'%(side)),('distanceBetween','%s_arm_stretch_dist'%(side)),('condition','%s_arm_stretch_cond'%(side)),('multiplyDivide','%s_upr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_stretch_mult'%(side)),('multiplyDivide','%s_lwr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_strecth_option_mult'%(side))]
for each in list:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
cmds.spaceLocator(n = '%s_arm_start_dist_loc'%(side))
cmds.group(n='%s_arm_start_dist_loc_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_start_dist_loc_grp'%(side),mo=True)
parentarmstartdistloc = cmds.pointConstraint('%s_ik_01_jnt'%(side),'%s_arm_start_dist_loc'%(side),mo = False)
cmds.delete(parentarmstartdistloc)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_arm_start_dist_loc'%(side),mo=True)
cmds.spaceLocator(n = '%s_arm_end_dist_loc'%(side))
cmds.setAttr('%s_arm_end_dist_loc.visibility'%(side),0)
parent_arm_end_dist_loc = cmds.pointConstraint('%s_ik_03_jnt'%(side),'%s_arm_end_dist_loc'%(side))
cmds.delete(parent_arm_end_dist_loc)
cmds.parent('%s_arm_end_dist_loc'%(side),'%s_ik_arm_ctrl'%(side))
cmds.setAttr('%s_arm_stretch_cond.operation'%(side),2)
cmds.setAttr('%s_arm_stretch_mult.operation'%(side),2)
cmds.setAttr('%s_arm_strecth_option_mult.input2X'%(side),2)
list = [('%s_arm_01_length_jnt.worldMatrix'%(side),'%s_upr_arm_dist.inMatrix1'%(side)),('%s_arm_02_length_jnt.worldMatrix'%(side),'%s_upr_arm_dist.inMatrix2'%(side)),('%s_arm_02_length_jnt.worldMatrix'%(side),'%s_lwr_arm_dist.inMatrix1'%(side)),('%s_arm_03_length_jnt.worldMatrix'%(side),'%s_lwr_arm_dist.inMatrix2'%(side)),('%s_upr_arm_dist.distance'%(side),'%s_arm_full_dist.input1'%(side)),('%s_lwr_arm_dist.distance'%(side),'%s_arm_full_dist.input2'%(side)),('%s_arm_start_dist_loc.worldMatrix'%(side),'%s_arm_stretch_dist.inMatrix1'%(side)),('%s_arm_end_dist_loc.worldMatrix'%(side),'%s_arm_stretch_dist.inMatrix2'%(side)),('%s_arm_stretch_dist.distance'%(side),'%s_arm_stretch_cond.firstTerm'%(side)),('%s_arm_full_dist.output'%(side),'%s_arm_stretch_cond.secondTerm'%(side)),('%s_arm_stretch_dist.distance'%(side),'%s_arm_stretch_mult.input1X'%(side)),('%s_arm_full_dist.output'%(side),'%s_arm_stretch_mult.input2X'%(side)),('%s_arm_stretch_mult.outputX'%(side),'%s_arm_stretch_cond.colorIfTrue.colorIfTrueR'%(side)),('%s_arm_stretch_cond.outColor.outColorR'%(side),'%s_lwr_arm_strecth_mult.input1X'%(side)),('%s_arm_stretch_cond.outColor.outColorR'%(side),'%s_upr_arm_strecth_mult.input1X'%(side)),('%s_arm_02_setup.translateX'%(side),'%s_upr_arm_strecth_mult.input2X'%(side)),('%s_arm_03_setup.translateX'%(side),'%s_lwr_arm_strecth_mult.input2X'%(side)),('%s_upr_arm_strecth_mult.outputX'%(side),'%s_ik_02_jnt.translateX'%(side)),('%s_lwr_arm_strecth_mult.outputX'%(side),'%s_ik_03_jnt.translateX'%(side)),('%s_ik_arm_ctrl.stretch'%(side),'%s_arm_strecth_option_mult.input1X'%(side)),('%s_arm_strecth_option_mult.outputX'%(side),'%s_arm_stretch_cond.operation'%(side))]
for each in list:
cmds.connectAttr(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
ArmStretchSetup('l')
ArmStretchSetup('r')
def armGroup():
list = ['l_arm_jnt_grp','r_arm_jnt_grp','arm_jnt_grp']
for each in list:
cmds.group(n=each,em=True)
list = [('l_ik_arm_jnt_grp','l_arm_jnt_grp'),('r_ik_arm_jnt_grp','r_arm_jnt_grp'),('l_fk_arm_01_jnt','l_arm_jnt_grp'),('r_fk_arm_01_jnt','r_arm_jnt_grp'),('r_bendy_arm_jnt_grp','r_arm_jnt_grp'),('l_bendy_arm_jnt_grp','l_arm_jnt_grp'),('r_arm_length_jnt_grp','r_arm_jnt_grp'),('l_arm_length_jnt_grp','l_arm_jnt_grp'),('r_shoulder_jnt','r_arm_jnt_grp'),('l_shoulder_jnt','l_arm_jnt_grp'),('r_arm_bln_jnt_grp','r_arm_jnt_grp'),('l_arm_bln_jnt_grp','l_arm_jnt_grp'),('l_arm_jnt_grp','arm_jnt_grp'),('r_arm_jnt_grp','arm_jnt_grp')]
for each in list:
cmds.parent(each[0],each[1])
armGroup()
def noBendyArm():
def FKarmSetup(side):
#FKarm#
fkarmcontroller = [('%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))]
for each in fkarmcontroller:
cmds.curve(d=1,p=[(0.0, 1.8457071003629746, -6.888272674590291),(0.0, 1.6065215981349992, -5.995620227271308),(0.0, -1.6065234643869502, -5.995624729951774),(0.0, -1.8454397435472047, -6.8872682416730004),(0.0, -5.041829388107622, -5.041831819868864),(0.0, -4.389101595742385, -4.389102497134237),(0.0, -5.995620227271308, -1.6065215981349992),(0.0, -6.888272674590291, -1.8457071003629746),(0.0, -6.8872682416730004, 1.8454397435472047),(0.0, -5.995624729951774, 1.6065234643869502),(0.0, -4.389102497134237, 4.389101595742385),(0.0, -5.041831819868864, 5.041829388107622),(0.0, -1.8457071003629746, 6.888272674590291),(0.0, -1.6065215981349992, 5.995620227271308),(0.0, 1.6065234643869502, 5.995624729951774),(0.0, 1.8454397435472047, 6.8872682416730004),(0.0, 5.041829388107622, 5.041831819868864),(0.0, 4.389101595742385, 4.389102497134237),(0.0, 5.995620227271308, 1.6065215981349992),(0.0, 6.888272674590291, 1.8457071003629746),(0.0, 6.8872682416730004, -1.8454397435472047),(0.0, 5.995624729951774, -1.6065234643869502),(0.0, 4.389102497134237, -4.389101595742385),(0.0, 5.041831819868864, -5.041829388107622),(0.0, 1.8457071003629746, -6.888272674590291)])
cmds.rename(each[0])
cmds.group(n=each[1])
createjoint = ['%s_fk_arm_01_jnt'%(side),'%s_fk_arm_02_jnt'%(side),'%s_fk_arm_03_jnt'%(side)]
for each in createjoint:
cmds.joint(n=each)
toGetJntPos = ('%s_arm_01_setup'%(side),'%s_fk_arm_01_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_fk_arm_02_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_fk_arm_03_jnt'%(side))
for each in toGetJntPos:
forDel = cmds.parentConstraint(each[0],each[1])
cmds.delete(forDel)
cmds.parent('%s_fk_arm_01_jnt'%(side),w=True)
toGetCtrlPos = [('%s_arm_01_setup'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_arm_02_setup'%(side),'%s_fk_arm_02_ctrl_grp'%(side)),('%s_arm_03_setup'%(side),'%s_fk_arm_03_ctrl_grp'%(side))]
for each in toGetCtrlPos:
forDel = cmds.parentConstraint(each[0],each[1])
cmds.delete(forDel)
toParent = [('%s_fk_arm_02_ctrl_grp'%(side),'%s_fk_arm_01_ctrl'%(side)),('%s_fk_arm_03_ctrl_grp'%(side),'%s_fk_arm_02_ctrl'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
toParentCon = [('%s_shoulder_ctrl'%(side),'%s_fk_arm_01_ctrl_grp'%(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))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toLockAttr = [('%s_fk_arm_01_ctrl'%(side)),('%s_fk_arm_02_ctrl'%(side)),('%s_fk_arm_03_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)
FKarmSetup('l')
FKarmSetup('r')
def IKarmSetup(side):
#IKarm#
cmds.joint(n='%s_ik_01_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_01_setup'%(side),'%s_ik_01_jnt'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.joint(n='%s_ik_02_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_02_setup'%(side),'%s_ik_02_jnt'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.joint(n='%s_ik_03_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_03_setup'%(side),'%s_ik_03_jnt'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.makeIdentity( '%s_ik_01_jnt'%(side), apply=True, translate=True, rotate=True)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_ik_01_jnt'%(side),mo=True)
cmds.ikHandle( n='%s_arm_ikh'%(side), sj='%s_ik_01_jnt'%(side), ee='%s_ik_03_jnt'%(side) )
cmds.setAttr('%s_arm_ikh.visibility'%(side),0)
cmds.curve(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.rename('%s_ik_arm_ctrl'%(side))
ControllerAttr('%s_ik_arm_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_ik_arm_ctrl'%(side),sn='stretch',at = 'bool',k=1)
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.orientConstraint('%s_ik_arm_ctrl'%(side), '%s_ik_03_jnt'%(side))
cmds.group(n='%s_ik_arm_ctrl_grp'%(side))
forDel = cmds.parentConstraint('%s_arm_03_setup'%(side),'%s_ik_arm_ctrl_grp'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_ik_arm_ctrl_grp'%(side),mo = True)
cmds.connectAttr('%s_ik_arm_ctrl.follow'%(side),'%s_ik_arm_ctrl_grp_parentConstraint1.%s_shoulder_ctrlW0'%(side,side))
cmds.parent('%s_arm_ikh'%(side), '%s_ik_arm_ctrl'%(side))
cmds.parent('%s_ik_arm_ctrl_grp'%(side),'world_ctrl')
cmds.curve(d=1, p=[(0.0, 3.468342867164149, 0.0),(0.0, 3.468342867164149, 0.5221724371834184),(0.0, 4.967930096687364, 0.0),(0.5221724371834184, 3.468342867164149, 0.0),(-0.5221724371834184, 3.468342867164149, 0.0),(0.0, 4.967930096687364, 0.0),(0.0, 3.468342867164149, -0.5221724371834184),(0.0, 3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(-0.5221724371834184, -3.468342867164149, 0.0),(0.0, -4.967930096687364, 0.0),(0.0, -3.468342867164149, -0.5221724371834184),(0.0, -3.468342867164149, 0.5221724371834184),(0.0, -4.967930096687364, 0.0),(0.5221724371834184, -3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(0.0, 0.0, 0.0),(-3.468342867164149, 0.0, 0.0),(-3.468342867164149, 0.5221724371834184, 0.0),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, 0.0, -0.5221724371834184),(-3.468342867164149, 0.0, 0.5221724371834184),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, -0.5221724371834184, 0.0),(-3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, -0.5221724371834184),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.5221724371834184, 0.0),(3.468342867164149, -0.5221724371834184, 0.0),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.0, 0.5221724371834184),(3.468342867164149, 0.0, 0.0),(0.0, 0.0, 0.0),(0.0, 0.0, 3.468342867164149),(0.0, 0.5221724371834184, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.5221724371834184, 0.0, 3.468342867164149),(-0.5221724371834184, 0.0, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.0, -0.5221724371834184, 3.468342867164149),(0.0, 0.0, 3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.5221724371834184, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(-0.5221724371834184, 0.0, -3.468342867164149),(0.5221724371834184, 0.0, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(0.0, -0.5221724371834184, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149)])
cmds.rename('%s_elbow_ctrl'%(side))
ControllerAttr('%s_elbow_ctrl'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_elbow_ctrl'%(side),sn='follow', min = 0, max=1 ,k=1)
cmds.group()
cmds.rename('%s_elbow_ctrl_grp'%(side))
cmds.parent('%s_elbow_ctrl_grp'%(side),'world_ctrl')
forDel = cmds.pointConstraint('%s_elbow_setup'%(side), '%s_elbow_ctrl_grp'%(side))
deparent = cmds.delete(forDel)
cmds.poleVectorConstraint( '%s_elbow_ctrl'%(side), '%s_arm_ikh'%(side) )
cmds.spaceLocator()
cmds.rename('%s_elbow_loc_world'%(side))
forDel = cmds.parentConstraint('%s_elbow_setup'%(side),'%s_elbow_loc_world'%(side))
cmds.delete(forDel)
cmds.spaceLocator()
cmds.rename('%s_elbow_loc_follow'%(side))
forDel = cmds.parentConstraint('%s_elbow_setup'%(side),'%s_elbow_loc_follow'%(side))
cmds.delete(forDel)
cmds.group()
cmds.rename('%s_elbow_loc_grp'%(side))
cmds.parent('%s_elbow_loc_world'%(side),'%s_elbow_loc_grp'%(side))
cmds.parentConstraint('%s_ik_arm_ctrl'%(side),'%s_elbow_loc_follow'%(side),mo = True)
cmds.parentConstraint('%s_elbow_loc_follow'%(side),'%s_elbow_ctrl_grp'%(side),mo = True)
cmds.parentConstraint('%s_elbow_loc_world'%(side),'%s_elbow_ctrl_grp'%(side),mo = True)
cmds.parentConstraint('world_ctrl','%s_elbow_loc_world'%(side),mo = True)
cmds.shadingNode('reverse',n = '%s_elbow_rev'%(side),asUtility=1)
cmds.connectAttr('%s_elbow_ctrl.follow'%(side), '%s_elbow_ctrl_grp_parentConstraint1.%s_elbow_loc_followW0'%(side,side))
cmds.connectAttr('%s_elbow_ctrl.follow'%(side), '%s_elbow_rev.inputX'%(side))
cmds.connectAttr('%s_elbow_rev.outputX'%(side), '%s_elbow_ctrl_grp_parentConstraint1.%s_elbow_loc_worldW1'%(side,side))
cmds.group(n='%s_ik_arm_jnt_grp'%(side),em=True)
cmds.parent('%s_ik_01_jnt'%(side),'%s_ik_arm_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_ik_arm_jnt_grp'%(side),mo=True)
#IKarmPVcrv#
cmds.curve(d=1, p=[(0, 0, 0),(0, 10, 0)])
cmds.rename('%s_elbow_direction_crv'%(side))
nameOfLoc = ['%s_elbow_01_loc'%(side),'%s_elbow_02_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('%s_elbow_01_loc.translateY'%(side),0),('%s_elbow_02_loc.translateY'%(side),10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_elbow_01_loc.worldPosition[0]'%(side),'%s_elbow_direction_crvShape.controlPoints[0]'%(side)),('%s_elbow_02_loc.worldPosition[0]'%(side),'%s_elbow_direction_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
toSetAttr = [('%s_elbow_direction_crv.overrideEnabled'%(side),1),('%s_elbow_direction_crv.overrideDisplayType'%(side),2),('%s_elbow_01_loc.visibility'%(side),0),('%s_elbow_02_loc.visibility'%(side),0)]
for each in toSetAttr:
cmds.setAttr(each[0],each[1])
toGetParent = [('%s_elbow_ctrl'%(side),'%s_elbow_01_loc'%(side)),('%s_ik_02_jnt'%(side),'%s_elbow_02_loc'%(side))]
for each in toGetParent:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.group(n='%s_elbow_direction_crv_grp'%(side),em = True)
toGetParent = [('%s_elbow_01_loc'%(side),'%s_elbow_direction_crv_grp'%(side)),('%s_elbow_02_loc'%(side),'%s_elbow_direction_crv_grp'%(side)),('%s_elbow_direction_crv'%(side),'%s_elbow_direction_crv_grp'%(side))]
for each in toGetParent:
cmds.parent(each[0],each[1])
IKarmSetup('l')
IKarmSetup('r')
def IKFKarmSetup(side):
nameOfJoint = [('%s_arm_01_bln_jnt'%(side)),('%s_arm_02_bln_jnt'%(side)),('%s_arm_03_bln_jnt'%(side))]
for each in nameOfJoint:
cmds.joint(n=each)
cmds.group(n='%s_arm_bln_jnt_grp'%(side),em=True)
cmds.parent('%s_arm_01_bln_jnt'%(side),'%s_arm_bln_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_bln_jnt_grp'%(side),mo=True)
toGetPos = [('%s_arm_01_setup'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_bln_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_bln_jnt'%(side))]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.setAttr('%s_arm_01_bln_jnt.drawStyle'%(side),2)
cmds.setAttr('%s_arm_02_bln_jnt.drawStyle'%(side),2)
cmds.makeIdentity( '%s_arm_01_bln_jnt'%(side),apply=True, rotate=True)
toParentCon = [('%s_fk_arm_01_jnt'%(side),'%s_arm_01_bln_jnt'%(side)),('%s_ik_01_jnt'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_fk_arm_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_ik_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_fk_arm_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side)),('%s_ik_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo = True)
cmds.curve(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.rename('%s_ik_fk_switch'%(side))
ControllerAttr('%s_ik_fk_switch'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.group(n='%s_ik_fk_switch_grp'%(side))
cmds.parent('%s_ik_fk_switch_grp'%(side), 'world_ctrl')
cmds.addAttr('%s_ik_fk_switch'%(side),sn='IKFK', min = 0, max=1 ,k=1,dv=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='bendyVis',at = 'bool',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='thumbCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='indexCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='middleCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='ringCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='pinkyCurl',k=1)
cmds.parentConstraint('%s_arm_03_bln_jnt'%(side), '%s_ik_fk_switch_grp'%(side))
cmds.shadingNode('reverse',n = '%s_arm_ik_rev'%(side),asUtility=1)
toConnectAttr = [('%s_ik_fk_switch.IKFK'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_fk_arm_03_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_fk_arm_02_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_fk_arm_01_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_ik_rev.inputX'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_ik_03_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_ik_02_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_ik_01_jntW1'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_fk_arm_01_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_ik_arm_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_direction_crv_grp.visibility'%(side))]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
IKFKarmSetup('l')
IKFKarmSetup('r')
def ArmStretchSetup(side):
jointList = ['%s_arm_01_length_jnt'%(side),'%s_arm_02_length_jnt'%(side),'%s_arm_03_length_jnt'%(side)]
for each in jointList:
cmds.joint(n=each)
cmds.group(n='%s_arm_length_jnt_grp'%(side),em=True)
cmds.parent('%s_arm_01_length_jnt'%(side),'%s_arm_length_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_length_jnt_grp'%(side),mo=True)
listOfToGetJointPos = [('%s_arm_01_setup'%(side),'%s_arm_01_length_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_length_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_length_jnt'%(side))]
for each in listOfToGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('distanceBetween','%s_upr_arm_dist'%(side)),('distanceBetween','%s_lwr_arm_dist'%(side)),('addDoubleLinear','%s_arm_full_dist'%(side)),('distanceBetween','%s_arm_stretch_dist'%(side)),('condition','%s_arm_stretch_cond'%(side)),('multiplyDivide','%s_upr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_stretch_mult'%(side)),('multiplyDivide','%s_lwr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_strecth_option_mult'%(side))]
for each in list:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
cmds.spaceLocator(n = '%s_arm_start_dist_loc'%(side))
cmds.group(n='%s_arm_start_dist_loc_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_start_dist_loc_grp'%(side),mo=True)
forDel = cmds.pointConstraint('%s_ik_01_jnt'%(side),'%s_arm_start_dist_loc'%(side),mo = False)
cmds.delete(forDel)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_arm_start_dist_loc'%(side),mo=True)
cmds.spaceLocator(n = '%s_arm_end_dist_loc'%(side))
cmds.setAttr('%s_arm_end_dist_loc.visibility'%(side),0)
forDel = cmds.pointConstraint('%s_ik_03_jnt'%(side),'%s_arm_end_dist_loc'%(side))
cmds.delete(forDel)
cmds.parent('%s_arm_end_dist_loc'%(side),'%s_ik_arm_ctrl'%(side))
cmds.setAttr('%s_arm_stretch_cond.operation'%(side),2)
cmds.setAttr('%s_arm_stretch_mult.operation'%(side),2)
cmds.setAttr('%s_arm_strecth_option_mult.input2X'%(side),2)
toParentRevFootLocAndGrp = [('%s_IK_arm_roll_ctrl_grp'%(side),'%s_IK_arm_ctrl'%(side)),('%s_IK_leg_roll_ctrl_grp'%(side),'%s_IK_leg_ctrl'%(side)),('%s_leg_toe_lift_loc'%(side),'%s_leg_heel_loc'%(side)),('%s_leg_roll_in_loc'%(side),'%s_leg_roll_out_loc'%(side)),('%s_leg_roll_out_loc'%(side),'%s_leg_toe_lift_loc'%(side)),('%s_arm_toe_lift_loc'%(side),'%s_arm_heel_loc'%(side)),('%s_arm_roll_in_loc'%(side),'%s_arm_roll_out_loc'%(side)),('%s_arm_roll_out_loc'%(side),'%s_arm_toe_lift_loc'%(side)),('%s_leg_lwr_ikh'%(side),'%s_leg_roll_in_loc'%(side)),('%s_leg_upr_ikh'%(side),'%s_leg_roll_in_loc'%(side)),('%s_arm_lwr_ikh'%(side),'%s_arm_roll_in_loc'%(side)),('%s_arm_upr_ikh'%(side),'%s_arm_roll_in_loc'%(side)),('%s_leg_heel_loc'%(side),'%s_IK_leg_loc_grp'%(side)),('%s_arm_heel_loc'%(side),'%s_IK_arm_loc_grp'%(side)),('%s_leg_PV_aim_loc'%(side),'%s_IK_leg_PV_loc_grp'%(side)),('%s_leg_PV_aim_up_loc'%(side),'%s_IK_leg_PV_loc_grp'%(side)),('%s_leg_PV_aim_base_loc'%(side),'%s_IK_leg_PV_loc_grp'%(side)),('%s_leg_PV_aim_world_loc'%(side),'%s_IK_leg_PV_loc_grp'%(side)),('%s_arm_PV_aim_loc'%(side),'%s_IK_arm_PV_loc_grp'%(side)),('%s_arm_PV_aim_up_loc'%(side),'%s_IK_arm_PV_loc_grp'%(side)),('%s_arm_PV_aim_base_loc'%(side),'%s_IK_arm_PV_loc_grp'%(side)),('%s_arm_PV_aim_world_loc'%(side),'%s_IK_arm_PV_loc_grp'%(side)),('%s_IK_leg_ctrl_grp'%(side),'%s_IK_leg_grp'%(side)),('%s_leg_PV_ctrl_grp'%(side),'%s_IK_leg_grp'%(side)),('%s_IK_arm_ctrl_grp'%(side),'%s_IK_arm_grp'%(side)),('%s_arm_PV_ctrl_grp'%(side),'%s_IK_arm_grp'%(side))]
for each in toParentRevFootLocAndGrp:
cmds.parent(each[0],each[1])
toParentConIKleg = [('%s_IK_leg_roll_ctrl'%(side),'%s_IK_leg_loc_grp'%(side)),('%s_IK_arm_roll_ctrl'%(side),'%s_IK_arm_loc_grp'%(side)),('%s_IK_leg_ctrl'%(side),'%s_leg_PV_aim_loc'%(side)),('spine_01_bln_jnt','%s_leg_PV_aim_up_loc'%(side)),('world_ctrl','%s_leg_PV_aim_world_loc'%(side)),('%s_IK_arm_ctrl'%(side),'%s_arm_PV_aim_loc'%(side)),('spine_03_bln_jnt','%s_arm_PV_aim_up_loc'%(side)),('world_ctrl','%s_arm_PV_aim_world_loc'%(side)),('spine_01_bln_jnt','%s_IK_leg_ctrl_grp'%(side)),('world_ctrl','%s_IK_leg_ctrl_grp'%(side)),('%s_shoulder_ctrl'%(side),'%s_IK_arm_ctrl_grp'%(side)),('world_ctrl','%s_IK_arm_ctrl_grp'%(side)),('%s_leg_PV_aim_base_loc'%(side),'%s_leg_PV_ctrl_grp'%(side)),('%s_arm_PV_aim_base_loc'%(side),'%s_arm_PV_ctrl_grp'%(side)),('%s_leg_PV_aim_world_loc'%(side),'%s_leg_PV_ctrl_grp'%(side)),('%s_arm_PV_aim_world_loc'%(side),'%s_arm_PV_ctrl_grp'%(side)),('spine_01_bln_jnt','%s_IK_leg_01_jnt'%(side)),('%s_shoulder_ctrl'%(side),'%s_IK_arm_01_jnt'%(side))]
for each in toParentConIKleg:
cmds.parentConstraint(each[0],each[1],mo = True)
toOrientIKleg = [('%s_IK_arm_ctrl'%(side),'%s_IK_arm_04_jnt'%(side)),('%s_IK_leg_ctrl'%(side),'%s_IK_leg_04_jnt'%(side))]
for each in toOrientIKleg:
cmds.orientConstraint(each[0],each[1],mo=True)
toCreateNode = [('multiplyDivide','%s_leg_rock_mult'%(side)),('condition','%s_leg_rock_con'%(side)),('multiplyDivide','%s_arm_rock_mult'%(side)),('condition','%s_arm_rock_con'%(side)),('reverse','%s_leg_follow_rev'%(side)),('reverse','%s_arm_follow_rev'%(side)),('reverse','%s_leg_PV_follow_rev'%(side)),('reverse','%s_arm_PV_follow_rev'%(side))]
for each in toCreateNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
list = [('%s_leg_rock_mult.operation'%(side),1),('%s_arm_rock_mult.operation'%(side),1),('%s_leg_rock_con.operation'%(side),2),('%s_arm_rock_con.operation'%(side),2),('%s_leg_rock_mult.input2X'%(side),-1),('%s_arm_rock_mult.input2X'%(side),-1),('%s_leg_rock_con.colorIfFalseR'%(side),0),('%s_arm_rock_con.colorIfFalseR'%(side),0),('%s_leg_PV_ctrl.follow'%(side),1)]
for each in list:
cmds.setAttr(each[0],each[1])
toConnectNode = [('%s_IK_leg_ctrl.footRock'%(side),'%s_leg_rock_mult.input1X'%(side)),('%s_IK_leg_ctrl.footRock'%(side),'%s_leg_rock_mult.input1Y'%(side)),('%s_leg_rock_mult.outputX'%(side),'%s_leg_rock_con.colorIfFalseG'%(side)),('%s_leg_rock_mult.outputX'%(side),'%s_leg_rock_con.colorIfTrueR'%(side)),('%s_IK_leg_ctrl.footRock'%(side),'%s_leg_rock_con.firstTerm'%(side)),('%s_leg_rock_con.outColorR'%(side),'%s_leg_roll_out_loc.rotateZ'%(side)),('%s_leg_rock_con.outColorG'%(side),'%s_leg_roll_in_loc.rotateZ'%(side)),('%s_IK_arm_ctrl.footRock'%(side),'%s_arm_rock_mult.input1X'%(side)),('%s_IK_arm_ctrl.footRock'%(side),'%s_arm_rock_mult.input1Y'%(side)),('%s_arm_rock_mult.outputX'%(side),'%s_arm_rock_con.colorIfFalseG'%(side)),('%s_arm_rock_mult.outputX'%(side),'%s_arm_rock_con.colorIfTrueR'%(side)),('%s_IK_arm_ctrl.footRock'%(side),'%s_arm_rock_con.firstTerm'%(side)),('%s_arm_rock_con.outColorR'%(side),'%s_arm_roll_out_loc.rotateZ'%(side)),('%s_arm_rock_con.outColorG'%(side),'%s_arm_roll_in_loc.rotateZ'%(side)),('%s_IK_leg_ctrl.heelLift'%(side),'%s_leg_heel_loc.rotateY'%(side)),('%s_IK_arm_ctrl.heelLift'%(side),'%s_arm_heel_loc.rotateY'%(side)),('%s_IK_leg_ctrl.toeLift'%(side),'%s_leg_toe_lift_loc.rotateY'%(side)),('%s_IK_arm_ctrl.toeLift'%(side),'%s_arm_toe_lift_loc.rotateY'%(side)),('%s_IK_leg_ctrl.follow'%(side),'%s_IK_leg_ctrl_grp_parentConstraint1.spine_01_bln_jntW0'%(side)),('%s_IK_leg_ctrl.follow'%(side),'%s_leg_follow_rev.inputX'%(side)),('%s_leg_follow_rev.outputX'%(side),'%s_IK_leg_ctrl_grp_parentConstraint1.world_ctrlW1'%(side)),('%s_IK_arm_ctrl.follow'%(side),'%s_IK_arm_ctrl_grp_parentConstraint1.%s_shoulder_ctrlW0'%(side,side)),('%s_IK_arm_ctrl.follow'%(side),'%s_arm_follow_rev.inputX'%(side)),('%s_arm_follow_rev.outputX'%(side),'%s_IK_arm_ctrl_grp_parentConstraint1.world_ctrlW1'%(side)),('%s_leg_PV_ctrl.follow'%(side),'%s_leg_PV_ctrl_grp_parentConstraint1.%s_leg_PV_aim_base_locW0'%(side,side)),('%s_leg_PV_ctrl.follow'%(side),'%s_leg_PV_follow_rev.inputX'%(side)),('%s_leg_PV_follow_rev.outputX'%(side),'%s_leg_PV_ctrl_grp_parentConstraint1.%s_leg_PV_aim_world_locW1'%(side,side)),('%s_arm_PV_ctrl.follow'%(side),'%s_arm_PV_ctrl_grp_parentConstraint1.%s_arm_PV_aim_base_locW0'%(side,side)),('%s_arm_PV_ctrl.follow'%(side),'%s_arm_PV_follow_rev.inputX'%(side)),('%s_arm_PV_follow_rev.outputX'%(side),'%s_arm_PV_ctrl_grp_parentConstraint1.%s_arm_PV_aim_world_locW1'%(side,side))]
for each in toConnectNode:
cmds.connectAttr(each[0],each[1])
toPointCon = [('%s_IK_leg_01_jnt'%(side),'%s_leg_PV_aim_base_loc'%(side)),('%s_IK_arm_01_jnt'%(side),'%s_arm_PV_aim_base_loc'%(side))]
for each in toPointCon:
cmds.pointConstraint(each[0],each[1],mo = False)
cmds.aimConstraint('%s_arm_PV_aim_loc'%(side),'%s_arm_PV_aim_base_loc'%(side),wut = 'object',wuo = '%s_arm_PV_aim_up_loc'%(side),mo = True)
cmds.aimConstraint('%s_leg_PV_aim_loc'%(side),'%s_leg_PV_aim_base_loc'%(side),wut = 'object',wuo = '%s_leg_PV_aim_up_loc'%(side),mo = True)
toScaleCon = [('world_ctrl','%s_IK_leg_jnt_grp'%(side)),('world_ctrl','%s_IK_arm_jnt_grp'%(side)),('world_ctrl','%s_IK_leg_PV_loc_grp'%(side)),('world_ctrl','%s_IK_arm_PV_loc_grp'%(side))]
for each in toScaleCon:
cmds.scaleConstraint(each[0],each[1],mo=True)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
leftRightIKsetup('l')
leftRightIKsetup('r')
#create IKFK setup#
def IKFKsetup(side):
nameOfIKFKjoint = [('%s_bln_leg_01_jnt'%(side)),('%s_bln_leg_02_jnt'%(side)),('%s_bln_leg_03_jnt'%(side)),('%s_bln_leg_04_jnt'%(side)),('%s_bln_arm_01_jnt'%(side)),('%s_bln_arm_02_jnt'%(side)),('%s_bln_arm_03_jnt'%(side)),('%s_bln_arm_04_jnt'%(side))]
for each in nameOfIKFKjoint:
cmds.joint(n=each)
nameOfGroup = [('%s_bln_leg_jnt_grp'%(side)),('%s_bln_arm_jnt_grp'%(side))]
for each in nameOfGroup:
cmds.group(n=each,em=True)
toParent = [('%s_bln_leg_01_jnt'%(side),'%s_bln_leg_jnt_grp'%(side)),('%s_bln_arm_01_jnt'%(side),'%s_bln_arm_jnt_grp'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
toGetPos = [('%s_leg_01_setup_jnt'%(side),'%s_bln_leg_01_jnt'%(side)),('%s_leg_02_setup_jnt'%(side),'%s_bln_leg_02_jnt'%(side)),('%s_leg_03_setup_jnt'%(side),'%s_bln_leg_03_jnt'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_bln_leg_04_jnt'%(side)),('%s_arm_01_setup_jnt'%(side),'%s_bln_arm_01_jnt'%(side)),('%s_arm_02_setup_jnt'%(side),'%s_bln_arm_02_jnt'%(side)),('%s_arm_03_setup_jnt'%(side),'%s_bln_arm_03_jnt'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_bln_arm_04_jnt'%(side))]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_bln_leg_01_jnt'%(side),'%s_bln_arm_01_jnt'%(side),apply=True,translate=True,rotate=True)
toCreateController = [('%s_IKFK_leg_switch'%(side),'%s_IKFK_leg_switch_grp'%(side)),('%s_IKFK_arm_switch'%(side),'%s_IKFK_arm_switch_grp'%(side))]
for each in toCreateController:
cmds.curve(n=each[0],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=each[1])
toParentCon = [('%s_FK_leg_01_jnt'%(side),'%s_bln_leg_01_jnt'%(side)),('%s_IK_leg_01_jnt'%(side),'%s_bln_leg_01_jnt'%(side)),('%s_FK_leg_02_jnt'%(side),'%s_bln_leg_02_jnt'%(side)),('%s_IK_leg_02_jnt'%(side),'%s_bln_leg_02_jnt'%(side)),('%s_FK_leg_03_jnt'%(side),'%s_bln_leg_03_jnt'%(side)),('%s_IK_leg_03_jnt'%(side),'%s_bln_leg_03_jnt'%(side)),('%s_FK_leg_04_jnt'%(side),'%s_bln_leg_04_jnt'%(side)),('%s_IK_leg_04_jnt'%(side),'%s_bln_leg_04_jnt'%(side)),('%s_FK_arm_01_jnt'%(side),'%s_bln_arm_01_jnt'%(side)),('%s_IK_arm_01_jnt'%(side),'%s_bln_arm_01_jnt'%(side)),('%s_FK_arm_02_jnt'%(side),'%s_bln_arm_02_jnt'%(side)),('%s_IK_arm_02_jnt'%(side),'%s_bln_arm_02_jnt'%(side)),('%s_FK_arm_03_jnt'%(side),'%s_bln_arm_03_jnt'%(side)),('%s_IK_arm_03_jnt'%(side),'%s_bln_arm_03_jnt'%(side)),('%s_FK_arm_04_jnt'%(side),'%s_bln_arm_04_jnt'%(side)),('%s_IK_arm_04_jnt'%(side),'%s_bln_arm_04_jnt'%(side)),('%s_bln_leg_04_jnt'%(side),'%s_IKFK_leg_switch_grp'%(side)),('%s_bln_arm_04_jnt'%(side),'%s_IKFK_arm_switch_grp'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toGetPos = [('%s_leg_04_setup_jnt'%(side),'%s_IKFK_leg_switch'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_IKFK_arm_switch'%(side))]
for each in toGetPos:
forDel = cmds.pointConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
toLockIKFKcontroller = [('%s_IKFK_leg_switch'%(side)),('%s_IKFK_arm_switch'%(side))]
for each in toLockIKFKcontroller:
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+'.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+'.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+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,15)
cmds.addAttr (each,sn='IKFK',min=0,max=1,k=1)
toCreateNode = [('reverse','%s_IKFK_leg_rev'%(side)),('reverse','%s_IKFK_arm_rev'%(side))]
for each in toCreateNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
toConnectNode = [('%s_IKFK_leg_switch.IKFK'%(side),'%s_bln_leg_01_jnt_parentConstraint1.%s_FK_leg_01_jntW0'%(side,side)),('%s_IKFK_leg_switch.IKFK'%(side),'%s_IKFK_leg_rev.inputX'%(side)),('%s_IKFK_leg_rev.outputX'%(side),'%s_bln_leg_01_jnt_parentConstraint1.%s_IK_leg_01_jntW1'%(side,side)),('%s_IKFK_leg_switch.IKFK'%(side),'%s_bln_leg_02_jnt_parentConstraint1.%s_FK_leg_02_jntW0'%(side,side)),('%s_IKFK_leg_rev.outputX'%(side),'%s_bln_leg_02_jnt_parentConstraint1.%s_IK_leg_02_jntW1'%(side,side)),('%s_IKFK_leg_switch.IKFK'%(side),'%s_bln_leg_03_jnt_parentConstraint1.%s_FK_leg_03_jntW0'%(side,side)),('%s_IKFK_leg_rev.outputX'%(side),'%s_bln_leg_03_jnt_parentConstraint1.%s_IK_leg_03_jntW1'%(side,side)),('%s_IKFK_leg_switch.IKFK'%(side),'%s_bln_leg_04_jnt_parentConstraint1.%s_FK_leg_04_jntW0'%(side,side)),('%s_IKFK_leg_rev.outputX'%(side),'%s_bln_leg_04_jnt_parentConstraint1.%s_IK_leg_04_jntW1'%(side,side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_bln_arm_01_jnt_parentConstraint1.%s_FK_arm_01_jntW0'%(side,side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_IKFK_arm_rev.inputX'%(side)),('%s_IKFK_arm_rev.outputX'%(side),'%s_bln_arm_01_jnt_parentConstraint1.%s_IK_arm_01_jntW1'%(side,side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_bln_arm_02_jnt_parentConstraint1.%s_FK_arm_02_jntW0'%(side,side)),('%s_IKFK_arm_rev.outputX'%(side),'%s_bln_arm_02_jnt_parentConstraint1.%s_IK_arm_02_jntW1'%(side,side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_bln_arm_03_jnt_parentConstraint1.%s_FK_arm_03_jntW0'%(side,side)),('%s_IKFK_arm_rev.outputX'%(side),'%s_bln_arm_03_jnt_parentConstraint1.%s_IK_arm_03_jntW1'%(side,side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_bln_arm_04_jnt_parentConstraint1.%s_FK_arm_04_jntW0'%(side,side)),('%s_IKFK_arm_rev.outputX'%(side),'%s_bln_arm_04_jnt_parentConstraint1.%s_IK_arm_04_jntW1'%(side,side)),('%s_IKFK_leg_switch.IKFK'%(side),'%s_FK_leg_01_ctrl_grp.visibility'%(side)),('%s_IKFK_leg_rev.outputX'%(side),'%s_IK_leg_grp.visibility'%(side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_FK_arm_01_ctrl_grp.visibility'%(side)),('%s_IKFK_arm_rev.outputX'%(side),'%s_IK_arm_grp.visibility'%(side))]
for each in toConnectNode:
cmds.connectAttr(each[0],each[1])
toScaleCon = [('%s_bln_leg_04_jnt'%(side),'%s_IKFK_leg_switch_grp'%(side)),('%s_bln_arm_04_jnt'%(side),'%s_IKFK_arm_switch_grp'%(side)),('world_ctrl','%s_bln_leg_04_jnt'%(side)),('world_ctrl','%s_bln_arm_04_jnt'%(side))]
for each in toScaleCon:
cmds.scaleConstraint(each[0],each[1],mo=True)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
IKFKsetup('l')
IKFKsetup('r')
#create bind joint#
def createSpineBindJoint():
SpineBindJoint = [('root_bind_jnt'),('spine_01_bind_jnt'),('spine_02_bind_jnt'),('tail_01_bind_jnt'),('tail_02_bind_jnt'),('tail_03_bind_jnt'),('tail_04_bind_jnt'),('tail_05_bind_jnt'),('neck_01_bind_jnt'),('neck_02_bind_jnt'),('head_bind_jnt')]
for each in SpineBindJoint:
cmds.joint(n=each)
toGetPos = [('spine_01_bln_jnt','root_bind_jnt'),('spine_02_bln_jnt','spine_01_bind_jnt'),('spine_03_bln_jnt','spine_02_bind_jnt'),('tail_bln_01_jnt','tail_01_bind_jnt'),('tail_bln_02_jnt','tail_02_bind_jnt'),('tail_bln_03_jnt','tail_03_bind_jnt'),('tail_bln_04_jnt','tail_04_bind_jnt'),('tail_bln_05_jnt','tail_05_bind_jnt'),('neck_01_jnt','neck_01_bind_jnt'),('neck_02_jnt','neck_02_bind_jnt'),('head_jnt','head_bind_jnt')]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
toParent = [('tail_01_bind_jnt','root_bind_jnt'),('neck_01_bind_jnt','spine_02_bind_jnt')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity('root_bind_jnt',apply=True,translate=True,rotate=True)
toParentCon = [('spine_01_bln_jnt','root_bind_jnt'),('spine_02_bln_jnt','spine_01_bind_jnt'),('spine_03_bln_jnt','spine_02_bind_jnt'),('tail_bln_01_jnt','tail_01_bind_jnt'),('tail_bln_02_jnt','tail_02_bind_jnt'),('tail_bln_03_jnt','tail_03_bind_jnt'),('tail_bln_04_jnt','tail_04_bind_jnt'),('tail_bln_05_jnt','tail_05_bind_jnt'),('neck_01_jnt','neck_01_bind_jnt'),('neck_02_jnt','neck_02_bind_jnt'),('head_jnt','head_bind_jnt')]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
createSpineBindJoint()
def createLeftRightBindJoint(side):
LeftRightBindJoint = [('%s_leg_01_bind_jnt'%(side)),('%s_leg_02_bind_jnt'%(side)),('%s_leg_03_bind_jnt'%(side)),('%s_leg_04_bind_jnt'%(side)),('%s_arm_01_bind_jnt'%(side)),('%s_arm_02_bind_jnt'%(side)),('%s_arm_03_bind_jnt'%(side)),('%s_arm_04_bind_jnt'%(side)),('%s_shoulder_bind_jnt'%(side))]
for each in LeftRightBindJoint:
cmds.joint(n=each)
toGetPos = [('%s_bln_leg_01_jnt'%(side),'%s_leg_01_bind_jnt'%(side)),('%s_bln_leg_02_jnt'%(side),'%s_leg_02_bind_jnt'%(side)),('%s_bln_leg_03_jnt'%(side),'%s_leg_03_bind_jnt'%(side)),('%s_bln_leg_04_jnt'%(side),'%s_leg_04_bind_jnt'%(side)),('%s_bln_arm_01_jnt'%(side),'%s_arm_01_bind_jnt'%(side)),('%s_bln_arm_02_jnt'%(side),'%s_arm_02_bind_jnt'%(side)),('%s_bln_arm_03_jnt'%(side),'%s_arm_03_bind_jnt'%(side)),('%s_bln_arm_04_jnt'%(side),'%s_arm_04_bind_jnt'%(side)),('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.parent('%s_shoulder_bind_jnt'%(side),w=True)
toParent = [('%s_leg_01_bind_jnt'%(side),'root_bind_jnt'),('%s_arm_01_bind_jnt'%(side),'%s_shoulder_bind_jnt'%(side)),('%s_shoulder_bind_jnt'%(side),'spine_02_bind_jnt')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity('%s_leg_01_bind_jnt'%(side),'%s_arm_01_bind_jnt'%(side),'%s_shoulder_bind_jnt'%(side),apply=True,translate=True,rotate=True)
toParentCon = [('%s_bln_leg_01_jnt'%(side),'%s_leg_01_bind_jnt'%(side)),('%s_bln_leg_02_jnt'%(side),'%s_leg_02_bind_jnt'%(side)),('%s_bln_leg_03_jnt'%(side),'%s_leg_03_bind_jnt'%(side)),('%s_bln_leg_04_jnt'%(side),'%s_leg_04_bind_jnt'%(side)),('%s_bln_arm_01_jnt'%(side),'%s_arm_01_bind_jnt'%(side)),('%s_bln_arm_02_jnt'%(side),'%s_arm_02_bind_jnt'%(side)),('%s_bln_arm_03_jnt'%(side),'%s_arm_03_bind_jnt'%(side)),('%s_bln_arm_04_jnt'%(side),'%s_arm_04_bind_jnt'%(side)),('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
createLeftRightBindJoint('l')
createLeftRightBindJoint('r')
def groupAll():
nameOfGroup = [('ctrl_grp'),('jnt_grp'),('bind_jnt_grp'),('extra'),('mesh'),('rename')]
for each in nameOfGroup:
cmds.group(n=each,em=True)
toParentGroup = [('tail_setup_grp','extra'),('spine_IK_setup_grp','extra'),('spine_IK_chest_jnt','jnt_grp'),('spine_IK_root_jnt','jnt_grp'),('spine_IK_jnt_grp','jnt_grp'),('spine_01_FK_jnt','jnt_grp'),('cog_ctrl_grp','world_ctrl'),('l_FK_leg_01_ctrl_grp','world_ctrl'),('r_FK_leg_01_ctrl_grp','world_ctrl'),('l_shoulder_ctrl_grp','world_ctrl'),('r_shoulder_ctrl_grp','world_ctrl'),('tail_ctrl_grp','world_ctrl'),('neck_01_ctrl_grp','world_ctrl'),('l_IK_leg_grp','world_ctrl'),('l_IK_arm_grp','world_ctrl'),('r_IK_leg_grp','world_ctrl'),('r_IK_arm_grp','world_ctrl'),('l_IKFK_leg_switch_grp','world_ctrl'),('r_IKFK_leg_switch_grp','world_ctrl'),('spine_01_setup_jnt','extra'),('world_ctrl_grp','ctrl_grp'),('spine_01_bln_jnt_grp','jnt_grp'),('l_FK_leg_01_jnt','jnt_grp'),('l_FK_arm_01_jnt','jnt_grp'),('l_shoulder_jnt','jnt_grp'),('r_FK_leg_01_jnt','jnt_grp'),('r_FK_arm_01_jnt','jnt_grp'),('r_shoulder_jnt','jnt_grp'),('tail_jnt_grp','jnt_grp'),('neck_01_jnt','jnt_grp'),('l_IK_leg_jnt_grp','jnt_grp'),('l_IK_arm_jnt_grp','jnt_grp'),('r_IK_leg_jnt_grp','jnt_grp'),('r_IK_arm_jnt_grp','jnt_grp'),('l_bln_leg_jnt_grp','jnt_grp'),('l_bln_arm_jnt_grp','jnt_grp'),('r_bln_leg_jnt_grp','jnt_grp'),('r_bln_arm_jnt_grp','jnt_grp'),('l_IK_leg_loc_grp','extra'),('l_IK_arm_loc_grp','extra'),('l_IK_arm_PV_loc_grp','extra'),('l_IK_leg_PV_loc_grp','extra'),('r_IK_leg_loc_grp','extra'),('r_IK_arm_loc_grp','extra'),('r_IK_arm_PV_loc_grp','extra'),('r_IK_leg_PV_loc_grp','extra'),('l_IKFK_arm_switch_grp','world_ctrl'),('r_IKFK_arm_switch_grp','world_ctrl'),('root_bind_jnt','bind_jnt_grp'),('ctrl_grp','rename'),('jnt_grp','rename'),('bind_jnt_grp','rename'),('extra','rename'),('mesh','rename')]
for each in toParentGroup:
cmds.parent(each[0],each[1])
cmds.setAttr('jnt_grp.visibility',0)
cmds.setAttr('extra.visibility',0)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
groupAll()
def progressBarWindowClose():
# the command to close the progress bar
cmds.deleteUI('QuadrupedProgress',window=True)
progressBarWindowClose()
#create setup joint function#
def setupjoint():
#create setup jnt#
nameOfSpineArmSetupJnt = [('world_setup',(0, 0, 0),(0,0,0)),('cog_setup',(0, 95, 0),(0,0,0)),('pelvis_setup',(0, 95, 0),(0,0,0)),('root_setup',(0, 95, 0),(0,0,0)),('spine_setup',(0, 110, 0),(0,0,0)),('chest_setup',(0, 125, 0),(0,0,0)),('l_shoulder_setup',(7, 140, -5),(0,0,0)),('l_arm_01_setup',(22, 140, -5),(0,0,0)),('l_arm_02_setup',(50, 140, -5),(0,0,0)),('l_elbow_setup',(50, 140, -40),(0,0,0)),('l_arm_03_setup',(74, 140, -5),(0,0,0)),('l_fingers_setup',(110, 140, -5),(0,0,0)),('l_thumb_01_setup',(77, 140, 3),(0,0,0)),('l_thumb_02_setup',(80, 140, 3),(0,0,0)),('l_thumb_03_setup',(83, 140, 3),(0,0,0)),('l_index_01_setup',(80, 140, 0),(0,0,0)),('l_index_02_setup',(85, 140, 0),(0,0,0)),('l_index_03_setup',(90, 140, 0),(0,0,0)),('l_index_04_setup',(95, 140, 0),(0,0,0)),('l_middle_01_setup',(80, 140, -3),(0,0,0)),('l_middle_02_setup',(87, 140, -3),(0,0,0)),('l_middle_03_setup',(94, 140, -3),(0,0,0)),('l_middle_04_setup',(101, 140, -3),(0,0,0)),('l_ring_01_setup',(80, 140, -6),(0,0,0)),('l_ring_02_setup',(86, 140, -6),(0,0,0)),('l_ring_03_setup',(92, 140, -6),(0,0,0)),('l_ring_04_setup',(98, 140, -6),(0,0,0)),('l_pinky_01_setup',(80, 140, -9),(0,0,0)),('l_pinky_02_setup',(84, 140, -9),(0,0,0)),('l_pinky_03_setup',(88, 140, -9),(0,0,0)),('l_pinky_04_setup',(92, 140, -9),(0,0,0)),('r_shoulder_setup',(-7, 140, -5),(180,0,0)),('r_arm_01_setup',(-22, 140, -5),(0,0,0)),('r_arm_02_setup',(-50, 140, -5),(0,0,0)),('r_elbow_setup',(-50, 140, -40),(0,0,0)),('r_arm_03_setup',(-74, 140, -5),(0,0,0)),('r_fingers_setup',(-110, 140, -5),(0,0,0)),('r_thumb_01_setup',(-77, 140, 3),(0,0,0)),('r_thumb_02_setup',(-80, 140, 3),(0,0,0)),('r_thumb_03_setup',(-83, 140, 3),(0,0,0)),('r_index_01_setup',(-80, 140, 0),(0,0,0)),('r_index_02_setup',(-85, 140, 0),(0,0,0)),('r_index_03_setup',(-90, 140, 0),(0,0,0)),('r_index_04_setup',(-95, 140, 0),(0,0,0)),('r_middle_01_setup',(-80, 140, -3),(0,0,0)),('r_middle_02_setup',(-87, 140, -3),(0,0,0)),('r_middle_03_setup',(-94, 140, -3),(0,0,0)),('r_middle_04_setup',(-101, 140, -3),(0,0,0)),('r_ring_01_setup',(-80, 140, -6),(0,0,0)),('r_ring_02_setup',(-86, 140, -6),(0,0,0)),('r_ring_03_setup',(-92, 140, -6),(0,0,0)),('r_ring_04_setup',(-98, 140, -6),(0,0,0)),('r_pinky_01_setup',(-80, 140, -9),(0,0,0)),('r_pinky_02_setup',(-84, 140, -9),(0,0,0)),('r_pinky_03_setup',(-88, 140, -9),(0,0,0)),('r_pinky_04_setup',(-92, 140, -9),(0,0,0)),('l_leg_01_setup',(11, 88, 0),(-90,0,90)),('l_leg_02_setup',(11, 50, 0),(0,0,0)),('l_knee_setup',(11, 50, 40),(0,0,0)),('l_leg_03_setup',(11, 15, 0),(0,0,0)),('l_leg_heel_setup',(11, 3, -5),(0,0,90)),('l_leg_04_setup',(11, 3, 15),(0,0,0)),('l_leg_roll_out_setup',(13, 3, 15),(0,0,0)),('l_leg_roll_in_setup',(9, 3, 15),(0,0,0)),('l_leg_05_setup',(11, 3, 20),(0,0,0)),('l_leg_06_setup',(11, 3, 25),(0,0,0)),('r_leg_01_setup',(-11, 88, 0),(0,0,-90)),('r_leg_02_setup',(-11, 50, 0),(0,0,0)),('r_knee_setup',(-11, 50, 40),(0,0,0)),('r_leg_03_setup',(-11, 15, 0),(0,0,0)),('r_leg_heel_setup',(-11, 3, -5),(0,0,-90)),('r_leg_04_setup',(-11, 3, 15),(0,0,180)),('r_leg_roll_out_setup',(-13, 3, 15),(0,0,-180)),('r_leg_roll_in_setup',(-9, 3, 15),(0,0,0)),('r_leg_05_setup',(-11, 3, 20),(0,0,0)),('r_leg_06_setup',(-11, 3, 25),(0,0,0)),('neck_setup',(0, 145, 0),(0,90,180)),('head_setup',(0, 155, 0),(0,0,0)),('head_end_setup',(0, 170, 0),(0,0,0)),('l_eye_setup',(5, 165, 10),(0,0,0)),('r_eye_setup',(-5, 165, 10),(0,0,0)),('eye_aim_setup',(0, 165, 50),(0,0,0))]
for each in nameOfSpineArmSetupJnt:
cmds.joint(n=each[0],p=each[1],o=each[2])
parentJnt = [('root_setup','cog_setup'),('l_arm_03_setup','l_arm_02_setup'),('l_thumb_01_setup','l_arm_03_setup'),('l_index_01_setup','l_arm_03_setup'),('l_middle_01_setup','l_arm_03_setup'),('l_ring_01_setup','l_arm_03_setup'),('l_pinky_01_setup','l_arm_03_setup'),('r_shoulder_setup','chest_setup'),('r_thumb_01_setup','r_arm_03_setup'),('r_index_01_setup','r_arm_03_setup'),('r_middle_01_setup','r_arm_03_setup'),('r_pinky_01_setup','r_arm_03_setup'),('r_ring_01_setup','r_arm_03_setup'),('l_leg_01_setup','pelvis_setup'),('l_leg_03_setup','l_leg_02_setup'),('l_leg_roll_in_setup','l_leg_04_setup'),('l_leg_05_setup','l_leg_04_setup'),('l_leg_04_setup','l_leg_03_setup'),('r_arm_03_setup','r_arm_02_setup'),('r_leg_01_setup','pelvis_setup'),('r_leg_03_setup','r_leg_02_setup'),('r_leg_04_setup','r_leg_03_setup'),('r_leg_roll_in_setup','r_leg_04_setup'),('r_leg_05_setup','r_leg_04_setup'),('neck_setup','chest_setup'),('l_eye_setup','head_setup'),('r_eye_setup','head_setup'),('eye_aim_setup','head_setup')]
for each in parentJnt:
cmds.parent(each[0],each[1])
toGetIKrotation = [('l_arm_02_setup','l_leg_02_setup'),('r_arm_02_setup','r_leg_02_setup')]
for each in toGetIKrotation:
cmds.setAttr(each[0]+'.rotateY',-5)
cmds.setAttr(each[1]+'.rotateZ',-2)
toLockSetupFoot = [('l_leg_04_setup.rotateX'),('l_leg_04_setup.rotateY'),('l_leg_04_setup.rotateZ'),('l_leg_05_setup.rotateX'),('l_leg_05_setup.rotateY'),('l_leg_05_setup.rotateZ'),('l_leg_06_setup.rotateX'),('l_leg_06_setup.rotateY'),('l_leg_06_setup.rotateZ'),('l_leg_04_setup.scaleX'),('l_leg_04_setup.scaleY'),('l_leg_04_setup.scaleZ'),('l_leg_05_setup.scaleX'),('l_leg_05_setup.scaleY'),('l_leg_05_setup.scaleZ'),('l_leg_06_setup.scaleX'),('l_leg_06_setup.scaleY'),('l_leg_06_setup.scaleZ'),('l_leg_roll_out_setup.rotateX'),('l_leg_roll_out_setup.rotateY'),('l_leg_roll_out_setup.rotateZ'),('l_leg_roll_in_setup.rotateX'),('l_leg_roll_in_setup.rotateY'),('l_leg_roll_in_setup.rotateZ'),('l_leg_heel_setup.rotateX'),('l_leg_heel_setup.rotateY'),('l_leg_heel_setup.rotateZ'),('l_leg_roll_out_setup.scaleX'),('l_leg_roll_out_setup.scaleY'),('l_leg_roll_out_setup.scaleZ'),('l_leg_roll_in_setup.scaleX'),('l_leg_roll_in_setup.scaleY'),('l_leg_roll_in_setup.scaleZ'),('l_leg_heel_setup.scaleX'),('l_leg_heel_setup.scaleY'),('l_leg_heel_setup.scaleZ'),('r_leg_04_setup.rotateX'),('r_leg_04_setup.rotateY'),('r_leg_04_setup.rotateZ'),('r_leg_05_setup.rotateX'),('r_leg_05_setup.rotateY'),('r_leg_05_setup.rotateZ'),('r_leg_06_setup.rotateX'),('r_leg_06_setup.rotateY'),('r_leg_06_setup.rotateZ'),('r_leg_04_setup.scaleX'),('r_leg_04_setup.scaleY'),('r_leg_04_setup.scaleZ'),('r_leg_05_setup.scaleX'),('r_leg_05_setup.scaleY'),('r_leg_05_setup.scaleZ'),('r_leg_06_setup.scaleX'),('r_leg_06_setup.scaleY'),('r_leg_06_setup.scaleZ'),('r_leg_roll_out_setup.rotateX'),('r_leg_roll_out_setup.rotateY'),('r_leg_roll_out_setup.rotateZ'),('r_leg_roll_in_setup.rotateX'),('r_leg_roll_in_setup.rotateY'),('r_leg_roll_in_setup.rotateZ'),('r_leg_heel_setup.rotateX'),('r_leg_heel_setup.rotateY'),('r_leg_heel_setup.rotateZ'),('r_leg_roll_out_setup.scaleX'),('r_leg_roll_out_setup.scaleY'),('r_leg_roll_out_setup.scaleZ'),('r_leg_roll_in_setup.scaleX'),('r_leg_roll_in_setup.scaleY'),('r_leg_roll_in_setup.scaleZ'),('r_leg_heel_setup.scaleX'),('r_leg_heel_setup.scaleY'),('r_leg_heel_setup.scaleZ')]
for each in toLockSetupFoot:
cmds.setAttr(each, lock = True)
#######################################################################################
def mirrorSetupjoint():
toUnlockSetupFoot = [('l_leg_04_setup.rotateX'),('l_leg_04_setup.rotateY'),('l_leg_04_setup.rotateZ'),('l_leg_05_setup.rotateX'),('l_leg_05_setup.rotateY'),('l_leg_05_setup.rotateZ'),('l_leg_06_setup.rotateX'),('l_leg_06_setup.rotateY'),('l_leg_06_setup.rotateZ'),('l_leg_04_setup.scaleX'),('l_leg_04_setup.scaleY'),('l_leg_04_setup.scaleZ'),('l_leg_05_setup.scaleX'),('l_leg_05_setup.scaleY'),('l_leg_05_setup.scaleZ'),('l_leg_06_setup.scaleX'),('l_leg_06_setup.scaleY'),('l_leg_06_setup.scaleZ'),('l_leg_roll_out_setup.rotateX'),('l_leg_roll_out_setup.rotateY'),('l_leg_roll_out_setup.rotateZ'),('l_leg_roll_in_setup.rotateX'),('l_leg_roll_in_setup.rotateY'),('l_leg_roll_in_setup.rotateZ'),('l_leg_heel_setup.rotateX'),('l_leg_heel_setup.rotateY'),('l_leg_heel_setup.rotateZ'),('l_leg_roll_out_setup.scaleX'),('l_leg_roll_out_setup.scaleY'),('l_leg_roll_out_setup.scaleZ'),('l_leg_roll_in_setup.scaleX'),('l_leg_roll_in_setup.scaleY'),('l_leg_roll_in_setup.scaleZ'),('l_leg_heel_setup.scaleX'),('l_leg_heel_setup.scaleY'),('l_leg_heel_setup.scaleZ'),('r_leg_04_setup.rotateX'),('r_leg_04_setup.rotateY'),('r_leg_04_setup.rotateZ'),('r_leg_05_setup.rotateX'),('r_leg_05_setup.rotateY'),('r_leg_05_setup.rotateZ'),('r_leg_06_setup.rotateX'),('r_leg_06_setup.rotateY'),('r_leg_06_setup.rotateZ'),('r_leg_04_setup.scaleX'),('r_leg_04_setup.scaleY'),('r_leg_04_setup.scaleZ'),('r_leg_05_setup.scaleX'),('r_leg_05_setup.scaleY'),('r_leg_05_setup.scaleZ'),('r_leg_06_setup.scaleX'),('r_leg_06_setup.scaleY'),('r_leg_06_setup.scaleZ'),('r_leg_roll_out_setup.rotateX'),('r_leg_roll_out_setup.rotateY'),('r_leg_roll_out_setup.rotateZ'),('r_leg_roll_in_setup.rotateX'),('r_leg_roll_in_setup.rotateY'),('r_leg_roll_in_setup.rotateZ'),('r_leg_heel_setup.rotateX'),('r_leg_heel_setup.rotateY'),('r_leg_heel_setup.rotateZ'),('r_leg_roll_out_setup.scaleX'),('r_leg_roll_out_setup.scaleY'),('r_leg_roll_out_setup.scaleZ'),('r_leg_roll_in_setup.scaleX'),('r_leg_roll_in_setup.scaleY'),('r_leg_roll_in_setup.scaleZ'),('r_leg_heel_setup.scaleX'),('r_leg_heel_setup.scaleY'),('r_leg_heel_setup.scaleZ')]
for each in toUnlockSetupFoot:
cmds.setAttr(each, lock = False)
cmds.mirrorJoint('l_shoulder_setup',mb = True,myz = True,sr = ('l_','r_mirror_'))
#parentConArmJointForPosition#
parentConArmMirrorJntForPos = [('r_mirror_shoulder_setup','r_shoulder_setup')],[('r_mirror_arm_01_setup','r_arm_01_setup')],[('r_mirror_elbow_setup','r_elbow_setup')],[('r_mirror_arm_02_setup','r_arm_02_setup')],[('r_mirror_arm_03_setup','r_arm_03_setup')],[('r_mirror_fingers_setup','r_fingers_setup')],[('r_mirror_thumb_01_setup','r_thumb_01_setup')],[('r_mirror_thumb_02_setup','r_thumb_02_setup')],[('r_mirror_thumb_03_setup','r_thumb_03_setup')],[('r_mirror_index_01_setup','r_index_01_setup')],[('r_mirror_index_02_setup','r_index_02_setup')],[('r_mirror_index_03_setup','r_index_03_setup')],[('r_mirror_index_04_setup','r_index_04_setup')],[('r_mirror_middle_01_setup','r_middle_01_setup')],[('r_mirror_middle_02_setup','r_middle_02_setup')],[('r_mirror_middle_03_setup','r_middle_03_setup')],[('r_mirror_middle_04_setup','r_middle_04_setup')],[('r_mirror_ring_01_setup','r_ring_01_setup')],[('r_mirror_ring_02_setup','r_ring_02_setup')],[('r_mirror_ring_03_setup','r_ring_03_setup')],[('r_mirror_ring_04_setup','r_ring_04_setup')],[('r_mirror_pinky_01_setup','r_pinky_01_setup')],[('r_mirror_pinky_02_setup','r_pinky_02_setup')],[('r_mirror_pinky_03_setup','r_pinky_03_setup')],[('r_mirror_pinky_04_setup','r_pinky_04_setup')]
for armJnt in parentConArmMirrorJntForPos:
for jnt in armJnt:
parentConArmMirrorForDel = cmds.parentConstraint(jnt[0],jnt[1],mo = False)
cmds.delete(parentConArmMirrorForDel)
cmds.delete('r_mirror_shoulder_setup')
#parentConLegJointForPosition#
cmds.mirrorJoint('l_leg_01_setup',mb = True,myz = True)
forDel = cmds.parentConstraint('l_leg_01_setup1','r_leg_01_setup',mo=False)
cmds.delete(forDel)
cmds.makeIdentity('r_leg_01_setup',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_01_setup.rotateZ',180)
forDel = cmds.parentConstraint('l_leg_02_setup1','r_leg_02_setup',mo=False)
cmds.delete(forDel)
cmds.makeIdentity('r_leg_02_setup',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_02_setup.rotateZ',180)
forDel = cmds.parentConstraint('l_leg_03_setup1','r_leg_03_setup',mo=False)
cmds.delete(forDel)
cmds.makeIdentity('r_leg_03_setup',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_03_setup.rotateZ',180)
forDel = cmds.parentConstraint('l_leg_04_setup1','r_leg_04_setup',mo=False)
cmds.delete(forDel)
cmds.makeIdentity('r_leg_04_setup',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_04_setup.rotateZ',180)
list = [('l_knee_setup1','r_knee_setup'),('l_leg_heel_setup1','r_leg_heel_setup'),('l_leg_roll_out_setup1','r_leg_roll_out_setup'),('l_leg_roll_in_setup1','r_leg_roll_in_setup'),('l_leg_05_setup1','r_leg_05_setup'),('l_leg_06_setup1','r_leg_06_setup')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1])
cmds.delete(forDel)
cmds.delete('l_leg_01_setup1')
cmds.mirrorJoint('l_eye_setup',mb = False,myz = True,sr = ('l_','r_mirror_'))
cmds.parentConstraint('r_mirror_eye_setup','r_eye_setup',mo=False)
cmds.delete('r_mirror_eye_setup')
def buildsetup():
def progressBarWindow():
# this command opens the window
window = cmds.window('EugenesProgress',title='Building')
cmds.columnLayout()
cmds.progressBar('EugenesProgressBar',maxValue=10, width=300)
cmds.showWindow( window )
progressBarWindow()
def ControllerAttr(controllerName,visKeyableOrnot,scaleXKeyableOrnot,scaleYKeyableOrnot,scaleZKeyableOrnot,rotateXKeyableOrnot,rotateYKeyableOrnot,rotateZKeyableOrnot,visLockOrnot,scaleXLockOrnot,scaleYLockOrnot,scaleZLockOrnot,rotateXLockOrnot,rotateYLockOrnot,rotateZLockOrnot,colorEnableOrnot,colorNumber,translateXKeyableOrnot,translateYKeyableOrnot,translateZKeyableOrnot,translateXLockOrnot,translateYLockOrnot,translateZLockOrnot):
cmds.setAttr ((controllerName) +'.visibility',keyable = visKeyableOrnot, cb = False, lock = visLockOrnot)
cmds.setAttr ((controllerName) +'.scaleX',keyable = scaleXKeyableOrnot, cb = False, lock = scaleXLockOrnot)
cmds.setAttr ((controllerName) +'.scaleY',keyable = scaleYKeyableOrnot, cb = False, lock = scaleYLockOrnot)
cmds.setAttr ((controllerName) +'.scaleZ',keyable = scaleZKeyableOrnot, cb = False, lock = scaleZLockOrnot)
cmds.setAttr ((controllerName) +'.rotateX',keyable = rotateXKeyableOrnot, cb = False, lock = rotateXLockOrnot)
cmds.setAttr ((controllerName) +'.rotateY',keyable = rotateYKeyableOrnot, cb = False, lock = rotateYLockOrnot)
cmds.setAttr ((controllerName) +'.rotateZ',keyable = rotateZKeyableOrnot, cb = False, lock = rotateZLockOrnot)
cmds.setAttr ((controllerName) +'.translateX',keyable = translateXKeyableOrnot, cb = False, lock = translateXLockOrnot)
cmds.setAttr ((controllerName) +'.translateY',keyable = translateYKeyableOrnot, cb = False, lock = translateYLockOrnot)
cmds.setAttr ((controllerName) +'.translateZ',keyable = translateZKeyableOrnot, cb = False, lock = translateZLockOrnot)
cmds.setAttr ((controllerName) + '.overrideEnabled' ,colorEnableOrnot)
cmds.setAttr ((controllerName) + '.overrideColor' ,colorNumber)
def spineSetup():
#FK spine#
toUnlockSetupFoot = [('l_leg_04_setup.rotateX'),('l_leg_04_setup.rotateY'),('l_leg_04_setup.rotateZ'),('l_leg_05_setup.rotateX'),('l_leg_05_setup.rotateY'),('l_leg_05_setup.rotateZ'),('l_leg_06_setup.rotateX'),('l_leg_06_setup.rotateY'),('l_leg_06_setup.rotateZ'),('l_leg_04_setup.scaleX'),('l_leg_04_setup.scaleY'),('l_leg_04_setup.scaleZ'),('l_leg_05_setup.scaleX'),('l_leg_05_setup.scaleY'),('l_leg_05_setup.scaleZ'),('l_leg_06_setup.scaleX'),('l_leg_06_setup.scaleY'),('l_leg_06_setup.scaleZ'),('l_leg_roll_out_setup.rotateX'),('l_leg_roll_out_setup.rotateY'),('l_leg_roll_out_setup.rotateZ'),('l_leg_roll_in_setup.rotateX'),('l_leg_roll_in_setup.rotateY'),('l_leg_roll_in_setup.rotateZ'),('l_leg_heel_setup.rotateX'),('l_leg_heel_setup.rotateY'),('l_leg_heel_setup.rotateZ'),('l_leg_roll_out_setup.scaleX'),('l_leg_roll_out_setup.scaleY'),('l_leg_roll_out_setup.scaleZ'),('l_leg_roll_in_setup.scaleX'),('l_leg_roll_in_setup.scaleY'),('l_leg_roll_in_setup.scaleZ'),('l_leg_heel_setup.scaleX'),('l_leg_heel_setup.scaleY'),('l_leg_heel_setup.scaleZ'),('r_leg_04_setup.rotateX'),('r_leg_04_setup.rotateY'),('r_leg_04_setup.rotateZ'),('r_leg_05_setup.rotateX'),('r_leg_05_setup.rotateY'),('r_leg_05_setup.rotateZ'),('r_leg_06_setup.rotateX'),('r_leg_06_setup.rotateY'),('r_leg_06_setup.rotateZ'),('r_leg_04_setup.scaleX'),('r_leg_04_setup.scaleY'),('r_leg_04_setup.scaleZ'),('r_leg_05_setup.scaleX'),('r_leg_05_setup.scaleY'),('r_leg_05_setup.scaleZ'),('r_leg_06_setup.scaleX'),('r_leg_06_setup.scaleY'),('r_leg_06_setup.scaleZ'),('r_leg_roll_out_setup.rotateX'),('r_leg_roll_out_setup.rotateY'),('r_leg_roll_out_setup.rotateZ'),('r_leg_roll_in_setup.rotateX'),('r_leg_roll_in_setup.rotateY'),('r_leg_roll_in_setup.rotateZ'),('r_leg_heel_setup.rotateX'),('r_leg_heel_setup.rotateY'),('r_leg_heel_setup.rotateZ'),('r_leg_roll_out_setup.scaleX'),('r_leg_roll_out_setup.scaleY'),('r_leg_roll_out_setup.scaleZ'),('r_leg_roll_in_setup.scaleX'),('r_leg_roll_in_setup.scaleY'),('r_leg_roll_in_setup.scaleZ'),('r_leg_heel_setup.scaleX'),('r_leg_heel_setup.scaleY'),('r_leg_heel_setup.scaleZ')]
for each in toUnlockSetupFoot:
cmds.setAttr(each, lock = False)
cmds.makeIdentity( 'cog_setup',apply=True,translate=True,rotate=True)
cmds.curve(p=[(0.0, 0.0, 107.43535641560554),(0.0, 0.0, 107.43535641560554),(24.915725527215045, 0.0, 75.00395255193817),(24.915725527215045, 0.0, 75.00395255193817),(11.244867487196904, 8.522407998048963e-16, 75.00395255193817),(11.244867487196904, 8.522407998048963e-16, 75.00395255193817),(11.245769514449382, -8.522407998048963e-16, 58.21954194768595),(11.245769514449382, -8.522407998048963e-16, 58.21954194768595),(23.21945878815599, 0.0, 56.05673231731379),(42.90396545838193, -6.817926398439171e-15, 42.90396545838193),(56.05673231731379, -1.7044815996097927e-15, 23.219458788155972),(58.21954194768592, -5.113444798829372e-15, 11.245317823980379),(58.21954194768592, -5.113444798829372e-15, 11.245317823980379),(75.00395255193817, 0.0, 11.245307123418877),(75.00395255193817, 0.0, 11.245307123418877),(75.00395255193817, 0.0, 24.915725527215034),(75.00395255193817, 0.0, 24.915725527215034),(107.43535641560554, -2.0453779195317487e-14, 0.0),(107.43535641560554, -2.0453779195317487e-14, 0.0),(75.00395255193817, 0.0, -24.915725527215034),(75.00395255193817, 0.0, -24.915725527215034),(75.00395255193817, 0.0, -11.245149376085063),(75.00395255193817, 0.0, -11.245149376085063),(58.21954194768592, -5.113444798829372e-15, -11.245479986907359),(58.21954194768592, -5.113444798829372e-15, -11.245479986907359),(56.05673231731379, -1.7044815996097927e-15, -23.219458788155972),(42.90396545838193, -6.817926398439171e-15, -42.90396545838193),(23.21945878815599, 0.0, -56.05673231731379),(11.245769514449382, -8.522407998048963e-16, -58.21954194768595),(11.245769514449382, -8.522407998048963e-16, -58.21954194768595),(11.244855432949919, 0.0, -75.00395255193817),(11.244855432949919, 0.0, -75.00395255193817),(24.915725527215045, 0.0, -75.00395255193817),(24.915725527215045, 0.0, -75.00395255193817),(0.0, 0.0, -107.43535641560554),(0.0, 0.0, -107.43535641560554),(-24.915725527215045, 0.0, -75.00395255193817),(-24.915725527215045, 0.0, -75.00395255193817),(-11.245232466589695, 2.9828427993171384e-15, -75.00395255193817),(-11.245232466589695, 2.9828427993171384e-15, -75.00395255193817),(-11.245388215625923, 0.0, -58.21954194768595),(-11.245388215625923, 0.0, -58.21954194768595),(-23.21945878815599, 0.0, -56.05673231731379),(-42.90396545838193, 6.817926398439171e-15, -42.90396545838193),(-56.05673231731379, 1.7044815996097927e-15, -23.219458788155972),(-58.21954194768592, 5.113444798829372e-15, -11.245479986907359),(-58.21954194768592, 5.113444798829372e-15, -11.245479986907359),(-75.00395255193817, 0.0, -11.245144960491917),(-75.00395255193817, 0.0, -11.245144960491917),(-75.00395255193817, 0.0, -24.915725527215034),(-75.00395255193817, 0.0, -24.915725527215034),(-107.43535641560554, 2.0453779195317487e-14, 0.0),(-107.43535641560554, 2.0453779195317487e-14, 0.0),(-75.00395255193817, 0.0, 24.915725527215034),(-75.00395255193817, 0.0, 24.915725527215034),(-75.00395255193817, 0.0, 11.245307273828363),(-75.00395255193817, 0.0, 11.245307273828363),(-58.21954194768592, 5.113444798829372e-15, 11.245317823980379),(-58.21954194768592, 5.113444798829372e-15, 11.245317823980379),(-56.05673231731379, 1.7044815996097927e-15, 23.219458788155972),(-42.90396545838193, 6.817926398439171e-15, 42.90396545838193),(-23.21945878815599, 0.0, 56.05673231731379),(-11.245394640260228, -8.522407998048963e-16, 58.21954194768595),(-11.245394640260228, -8.522407998048963e-16, 58.21954194768595),(-11.245230307139062, 4.2612039990244817e-16, 75.00395255193817),(-11.245230307139062, 4.2612039990244817e-16, 75.00395255193817),(-24.915725527215045, 0.0, 75.00395255193817),(-24.915725527215045, 0.0, 75.00395255193817),(0.0, 0.0, 107.43535641560554)], d=2)
cmds.rename('main_ctrl')
cmds.setAttr('main_ctrl.overrideEnabled' ,True)
cmds.setAttr('main_ctrl.overrideColor' ,20)
cmds.setAttr ('main_ctrl.visibility',keyable = False, cb = False, lock = True)
cmds.group(n='main_ctrl_grp')
cmds.circle(n='world_ctrl',r=50, nry = 90)
cmds.setAttr('world_ctrl.overrideEnabled' ,True)
cmds.setAttr('world_ctrl.overrideColor' ,20)
cmds.setAttr ('world_ctrl.visibility',keyable = False, cb = False, lock = True)
cmds.group(n='world_ctrl_grp')
cmds.parent('world_ctrl_grp','main_ctrl')
cmds.curve(d=1, p=[(-4.0751377334481305, 0.0, 24.450826400688754),(-24.450826400688754, 0.0, 4.075137733448116),(-24.450826400688754, 0.0, 8.150275466896261),(-32.601101867585015, 0.0, 0.0),(-24.450826400688754, 0.0, -8.150275466896261),(-24.450826400688754, 0.0, -4.075137733448116),(-4.0751377334481305, 0.0, -24.450826400688754),(-4.0751377334481305, 0.0, -24.450826400688754),(-8.150275466896247, 0.0, -24.450826400688754),(0.0, 0.0, -32.60110186758499),(8.150275466896247, 0.0, -24.450826400688754),(4.0751377334481305, 0.0, -24.450826400688754),(24.450826400688754, 0.0, -4.075137733448116),(24.450826400688754, 0.0, -8.150275466896261),(24.450826400688754, 0.0, -8.150275466896261),(32.60110186758501, 0.0, 0.0),(24.450826400688754, 0.0, 8.150275466896261),(24.450826400688754, 0.0, 4.075137733448116),(4.0751377334481305, 0.0, 24.450826400688754),(4.0751377334481305, 0.0, 24.450826400688754),(8.150275466896247, 0.0, 24.450826400688754),(0.0, 0.0, 32.601101867585015),(-8.150275466896247, 0.0, 24.450826400688754),(-4.0751377334481305, 0.0, 24.450826400688754)])
cmds.rename('cog_ctrl')
cmds.setAttr ('cog_ctrl.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr ('cog_ctrl.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr ('cog_ctrl.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr ('cog_ctrl.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr ('cog_ctrl.overrideEnabled' ,True)
cmds.setAttr ('cog_ctrl.overrideColor' ,20)
cmds.group(n='cog_ctrl_grp',em=True)
cmds.parent('cog_ctrl','cog_ctrl_grp')
cmds.group(n='jnt_grp',em=True)
nameOfFKspineController = [('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 nameOfFKspineController:
cmds.curve(d=1, p=[(-6.5, 2, 18),(6.5, 2, 18),(18, 2, 6.5),(18, 2, -6.5),(6.5, 2, -18),(-6.5, 2, -18),(-18, 2, -6.5),(-18, 2, 6.5),(-6.5, 2, 18),(-6.5, -2, 18),(-18, -2, 6.5),(-18, 2, 6.5),(-18, -2, 6.5),(-18, -2, -6.5),(-18, 2, -6.5),(-18, -2, -6.5),(-6.5, -2, -18),(-6.5, 2, -18),(-6.5, -2, -18),(6.5, -2, -18),(6.5, 2, -18),(6.5, -2, -18),(18, -2, -6.5),(18, 2, -6.5),(18, -2, -6.5),(18, -2, 6.5),(18, 2, 6.5),(18, -2, 6.5),(6.5, -2, 18),(6.5, 2, 18),(6.5, -2, 18),(-6.5, -2, 18)])
cmds.rename(each[0])
cmds.group(n=each[1])
nameOfFKspineJoint = ['spine_FK_01_jnt','spine_FK_02_jnt','spine_FK_03_jnt']
for each in nameOfFKspineJoint:
cmds.joint(n=each)
cmds.parent('spine_FK_01_jnt',w=True)
toGetFkspineJointPos = [('root_setup','spine_FK_01_jnt'),('spine_setup','spine_FK_02_jnt'),('chest_setup','spine_FK_03_jnt'),('root_setup','spine_01_FK_ctrl_grp'),('spine_setup','spine_02_FK_ctrl_grp'),('chest_setup','spine_03_FK_ctrl_grp'),('root_setup','cog_ctrl_grp')]
for each in toGetFkspineJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
forParentCon = [('spine_01_FK_ctrl','spine_FK_01_jnt'),('spine_02_FK_ctrl','spine_FK_02_jnt'),('spine_03_FK_ctrl','spine_FK_03_jnt'),('cog_ctrl','spine_01_FK_ctrl_grp')]
for each in forParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toParent = [('spine_03_FK_ctrl_grp','spine_02_FK_ctrl'),('spine_02_FK_ctrl_grp','spine_01_FK_ctrl')]
for each in toParent:
cmds.parent(each[0],each[1])
#IK spine#
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,nry = 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 = [('root_setup','spine_IK_01_jnt'),('root_setup','spine_IK_02_jnt'),('spine_setup','spine_IK_02_jnt'),('spine_setup','spine_IK_03_jnt'),('spine_setup','spine_IK_04_jnt'),('chest_setup','spine_IK_04_jnt'),('chest_setup','spine_IK_05_jnt'),('root_setup','spine_01_IK_ctrl_grp'),('spine_setup','spine_02_IK_ctrl_grp'),('chest_setup','spine_03_IK_ctrl_grp'),('root_setup','spine_start_length_jnt'),('chest_setup','spine_end_length_jnt'),('root_setup','spine_01_length_jnt'),('root_setup','spine_01_loc'),('spine_setup','spine_03_loc'),('chest_setup','spine_05_loc'),('root_setup','spine_IK_root_jnt'),('chest_setup','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('root_setup','spine_02_length_jnt',mo=False)
forDelspine_02_lenghtJntParentCon = cmds.parentConstraint('spine_setup','spine_02_length_jnt',mo=False)
forDelspine_03_lenghtJntParentCon = cmds.parentConstraint('spine_setup','spine_03_length_jnt',mo=False)
forDelspine_04_lenghtJntParentCon = cmds.parentConstraint('spine_setup','spine_04_length_jnt',mo=False)
forDelspine_04_lenghtJntParentCon = cmds.parentConstraint('chest_setup','spine_04_length_jnt',mo=False)
forDelspine_05_lenghtJntParentCon = cmds.parentConstraint('chest_setup','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('root_setup','spine_02_loc',mo=False)
forDelspine_02_locParentCon = cmds.parentConstraint('spine_setup','spine_02_loc',mo=False)
forDelspine_04_locParentCon = cmds.parentConstraint('spine_setup','spine_04_loc',mo=False)
forDelspine_04_locParentCon = cmds.parentConstraint('chest_setup','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.rotateY','spine_twist_mult.input1X'),('spine_03_IK_ctrl.rotateY','spine_twist_pma.input1D[0]'),('spine_01_IK_ctrl.rotateY','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.translateY','spine_stretch_02_mult.input2X'),('spine_stretch_02_mult.outputX','spine_IK_02_jnt.translateY'),('spine_stretch_02_mult.outputX','spine_IK_03_jnt.translateY'),('spine_stretch_02_mult.outputX','spine_IK_04_jnt.translateY'),('spine_stretch_02_mult.outputX','spine_IK_05_jnt.translateY'),('spine_end_length_jnt.translateY','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')]
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 = ['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 = [('root_setup','spine_01_bln_jnt'),('spine_setup','spine_02_bln_jnt'),('chest_setup','spine_03_bln_jnt')]
for each in toGetSpineBindJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
toParentConIKFKspine = [('spine_FK_01_jnt','spine_01_bln_jnt'),('spine_IK_root_jnt','spine_01_bln_jnt'),('spine_FK_02_jnt','spine_02_bln_jnt'),('spine_IK_03_jnt','spine_02_bln_jnt'),('spine_FK_03_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')
ControllerAttr('spine_ik_fk_switch',False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.parent('spine_ik_fk_switch_grp', 'world_ctrl')
cmds.addAttr('spine_ik_fk_switch',sn='IKFK', min = 0, max=1 ,k=1,dv=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_FK_01_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_FK_02_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_FK_03_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])
#group all spine joint#
cmds.group(n='spine_jnt_grp',em=True)
spineJointList = [('spine_FK_01_jnt','spine_jnt_grp'),('spine_IK_root_jnt','spine_jnt_grp'),('spine_IK_chest_jnt','spine_jnt_grp'),('spine_IK_jnt_grp','spine_jnt_grp'),('spine_01_bln_jnt_grp','spine_jnt_grp')]
for each in spineJointList:
cmds.parent(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
spineSetup()
def ShoulderSetup(side):
cmds.curve(d=1, p=[(-5, -10, 10),(-5, 10, 10),(5, 10, 10),(5, -10, 10),(5, -10, -10),(5, 10, -10),(-5, 10, -10),(-5, -10, -10),(-5, -10, 10),(5, -10, 10),(5, 10, 10),(5, 10, -10),(5, -10, -10),(-5, -10, -10),(-5, 10, -10),(-5, 10, 10)])
cmds.rename('%s_shoulder_ctrl'%(side))
ControllerAttr('%s_shoulder_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.group(n='%s_shoulder_ctrl_grp'%(side))
forDel = cmds.parentConstraint('%s_shoulder_setup'%(side),'%s_shoulder_ctrl_grp'%(side),mo=False)
cmds.delete(forDel)
cmds.joint(n='%s_shoulder_jnt'%(side))
cmds.parent('%s_shoulder_ctrl_grp'%(side),'world_ctrl')
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_shoulder_jnt'%(side),mo=False)
cmds.parentConstraint('spine_03_bln_jnt','%s_shoulder_ctrl_grp'%(side),mo=True)
ShoulderSetup('l')
ShoulderSetup('r')
def buildBendyArm():
def FKarmSetup(side):
#FKarm#
fkarmcontroller = [('%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))]
for each in fkarmcontroller:
ctrl = cmds.curve(d=1,p=[(0.0, 1.8457071003629746, -6.888272674590291),(0.0, 1.6065215981349992, -5.995620227271308),(0.0, -1.6065234643869502, -5.995624729951774),(0.0, -1.8454397435472047, -6.8872682416730004),(0.0, -5.041829388107622, -5.041831819868864),(0.0, -4.389101595742385, -4.389102497134237),(0.0, -5.995620227271308, -1.6065215981349992),(0.0, -6.888272674590291, -1.8457071003629746),(0.0, -6.8872682416730004, 1.8454397435472047),(0.0, -5.995624729951774, 1.6065234643869502),(0.0, -4.389102497134237, 4.389101595742385),(0.0, -5.041831819868864, 5.041829388107622),(0.0, -1.8457071003629746, 6.888272674590291),(0.0, -1.6065215981349992, 5.995620227271308),(0.0, 1.6065234643869502, 5.995624729951774),(0.0, 1.8454397435472047, 6.8872682416730004),(0.0, 5.041829388107622, 5.041831819868864),(0.0, 4.389101595742385, 4.389102497134237),(0.0, 5.995620227271308, 1.6065215981349992),(0.0, 6.888272674590291, 1.8457071003629746),(0.0, 6.8872682416730004, -1.8454397435472047),(0.0, 5.995624729951774, -1.6065234643869502),(0.0, 4.389102497134237, -4.389101595742385),(0.0, 5.041831819868864, -5.041829388107622),(0.0, 1.8457071003629746, -6.888272674590291)])
cmds.rename(each[0])
cmds.group(n=each[1])
createjoint = ['%s_fk_arm_01_jnt'%(side),'%s_fk_arm_02_jnt'%(side),'%s_fk_arm_03_jnt'%(side)]
for each in createjoint:
cmds.joint(n=each)
toGetJntPos = ('%s_arm_01_setup'%(side),'%s_fk_arm_01_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_fk_arm_02_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_fk_arm_03_jnt'%(side))
for each in toGetJntPos:
forDel = cmds.parentConstraint(each[0],each[1])
cmds.delete(forDel)
cmds.parent('%s_fk_arm_01_jnt'%(side),w=True)
toGetCtrlPos = [('%s_arm_01_setup'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_arm_02_setup'%(side),'%s_fk_arm_02_ctrl_grp'%(side)),('%s_arm_03_setup'%(side),'%s_fk_arm_03_ctrl_grp'%(side))]
for each in toGetCtrlPos:
forDel = cmds.parentConstraint(each[0],each[1])
cmds.delete(forDel)
toParent = [('%s_fk_arm_02_ctrl_grp'%(side),'%s_fk_arm_01_ctrl'%(side)),('%s_fk_arm_03_ctrl_grp'%(side),'%s_fk_arm_02_ctrl'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
toParentCon = [('%s_shoulder_ctrl'%(side),'%s_fk_arm_01_ctrl_grp'%(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))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toLockAttr = [('%s_fk_arm_01_ctrl'%(side)),('%s_fk_arm_02_ctrl'%(side)),('%s_fk_arm_03_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)
FKarmSetup('l')
FKarmSetup('r')
def IKarmSetup(side):
#IKarm#
cmds.joint(n='%s_ik_01_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_01_setup'%(side),'%s_ik_01_jnt'%(side),mo = False)
cmds.delete(forDel)
cmds.joint(n='%s_ik_02_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_02_setup'%(side),'%s_ik_02_jnt'%(side),mo = False)
cmds.delete(forDel)
cmds.joint(n='%s_ik_03_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_03_setup'%(side),'%s_ik_03_jnt'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.makeIdentity( '%s_ik_01_jnt'%(side), apply=True, translate=True, rotate=True)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_ik_01_jnt'%(side),mo=True)
cmds.ikHandle( n='%s_arm_ikh'%(side), sj='%s_ik_01_jnt'%(side), ee='%s_ik_03_jnt'%(side) )
cmds.setAttr('%s_arm_ikh.visibility'%(side),0)
cmds.curve(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.rename('%s_ik_arm_ctrl'%(side))
ControllerAttr('%s_ik_arm_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_ik_arm_ctrl'%(side),sn='stretch',at = 'bool',k=1)
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.orientConstraint('%s_ik_arm_ctrl'%(side), '%s_ik_03_jnt'%(side))
cmds.group(n='%s_ik_arm_ctrl_grp'%(side))
forDel = cmds.parentConstraint('%s_arm_03_setup'%(side),'%s_ik_arm_ctrl_grp'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_ik_arm_ctrl_grp'%(side),mo = True)
cmds.connectAttr('%s_ik_arm_ctrl.follow'%(side),'%s_ik_arm_ctrl_grp_parentConstraint1.%s_shoulder_ctrlW0'%(side,side))
cmds.parent('%s_arm_ikh'%(side), '%s_ik_arm_ctrl'%(side))
cmds.parent('%s_ik_arm_ctrl_grp'%(side),'world_ctrl')
cmds.curve(d=1, p=[(0.0, 3.468342867164149, 0.0),(0.0, 3.468342867164149, 0.5221724371834184),(0.0, 4.967930096687364, 0.0),(0.5221724371834184, 3.468342867164149, 0.0),(-0.5221724371834184, 3.468342867164149, 0.0),(0.0, 4.967930096687364, 0.0),(0.0, 3.468342867164149, -0.5221724371834184),(0.0, 3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(-0.5221724371834184, -3.468342867164149, 0.0),(0.0, -4.967930096687364, 0.0),(0.0, -3.468342867164149, -0.5221724371834184),(0.0, -3.468342867164149, 0.5221724371834184),(0.0, -4.967930096687364, 0.0),(0.5221724371834184, -3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(0.0, 0.0, 0.0),(-3.468342867164149, 0.0, 0.0),(-3.468342867164149, 0.5221724371834184, 0.0),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, 0.0, -0.5221724371834184),(-3.468342867164149, 0.0, 0.5221724371834184),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, -0.5221724371834184, 0.0),(-3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, -0.5221724371834184),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.5221724371834184, 0.0),(3.468342867164149, -0.5221724371834184, 0.0),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.0, 0.5221724371834184),(3.468342867164149, 0.0, 0.0),(0.0, 0.0, 0.0),(0.0, 0.0, 3.468342867164149),(0.0, 0.5221724371834184, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.5221724371834184, 0.0, 3.468342867164149),(-0.5221724371834184, 0.0, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.0, -0.5221724371834184, 3.468342867164149),(0.0, 0.0, 3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.5221724371834184, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(-0.5221724371834184, 0.0, -3.468342867164149),(0.5221724371834184, 0.0, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(0.0, -0.5221724371834184, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149)])
cmds.rename('%s_elbow_ctrl'%(side))
ControllerAttr('%s_elbow_ctrl'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_elbow_ctrl'%(side),sn='follow', min = 0, max=1 ,k=1)
cmds.group(n='%s_elbow_ctrl_grp'%(side))
cmds.parent('%s_elbow_ctrl_grp'%(side),'world_ctrl')
forDel = cmds.pointConstraint('%s_elbow_setup'%(side), '%s_elbow_ctrl_grp'%(side))
deparent = cmds.delete(forDel)
cmds.poleVectorConstraint( '%s_elbow_ctrl'%(side), '%s_arm_ikh'%(side) )
cmds.spaceLocator(n='%s_elbow_loc_world'%(side))
forDel = cmds.parentConstraint('%s_elbow_setup'%(side),'%s_elbow_loc_world'%(side))
cmds.delete(forDel)
cmds.spaceLocator(n='%s_elbow_loc_follow'%(side))
forDel = cmds.parentConstraint('%s_elbow_setup'%(side),'%s_elbow_loc_follow'%(side))
cmds.delete(forDel)
cmds.group(n='%s_elbow_loc_grp'%(side))
cmds.parent('%s_elbow_loc_world'%(side),'%s_elbow_loc_grp'%(side))
cmds.parentConstraint('%s_ik_arm_ctrl'%(side),'%s_elbow_loc_follow'%(side),mo = True)
cmds.parentConstraint('%s_elbow_loc_follow'%(side),'%s_elbow_ctrl_grp'%(side),mo = True)
cmds.parentConstraint('%s_elbow_loc_world'%(side),'%s_elbow_ctrl_grp'%(side),mo = True)
cmds.parentConstraint('world_ctrl','%s_elbow_loc_world'%(side),mo = True)
cmds.shadingNode('reverse',n = '%s_elbow_rev'%(side),asUtility=1)
cmds.connectAttr('%s_elbow_ctrl.follow'%(side), '%s_elbow_ctrl_grp_parentConstraint1.%s_elbow_loc_followW0'%(side,side))
cmds.connectAttr('%s_elbow_ctrl.follow'%(side), '%s_elbow_rev.inputX'%(side))
cmds.connectAttr('%s_elbow_rev.outputX'%(side), '%s_elbow_ctrl_grp_parentConstraint1.%s_elbow_loc_worldW1'%(side,side))
cmds.group(n='%s_ik_arm_jnt_grp'%(side),em=True)
cmds.parent('%s_ik_01_jnt'%(side),'%s_ik_arm_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_ik_arm_jnt_grp'%(side),mo=True)
#IKarmPVcrv#
cmds.curve(d=1, p=[(0, 0, 0),(0, 10, 0)])
cmds.rename('%s_elbow_direction_crv'%(side))
nameOfLoc = ['%s_elbow_01_loc'%(side),'%s_elbow_02_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('%s_elbow_01_loc.translateY'%(side),0),('%s_elbow_02_loc.translateY'%(side),10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_elbow_01_loc.worldPosition[0]'%(side),'%s_elbow_direction_crvShape.controlPoints[0]'%(side)),('%s_elbow_02_loc.worldPosition[0]'%(side),'%s_elbow_direction_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
toSetAttr = [('%s_elbow_direction_crv.overrideEnabled'%(side),1),('%s_elbow_direction_crv.overrideDisplayType'%(side),2),('%s_elbow_01_loc.visibility'%(side),0),('%s_elbow_02_loc.visibility'%(side),0)]
for each in toSetAttr:
cmds.setAttr(each[0],each[1])
toGetParent = [('%s_elbow_ctrl'%(side),'%s_elbow_01_loc'%(side)),('%s_ik_02_jnt'%(side),'%s_elbow_02_loc'%(side))]
for each in toGetParent:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.group(n='%s_elbow_direction_crv_grp'%(side),em = True)
toGetParent = [('%s_elbow_01_loc'%(side),'%s_elbow_direction_crv_grp'%(side)),('%s_elbow_02_loc'%(side),'%s_elbow_direction_crv_grp'%(side)),('%s_elbow_direction_crv'%(side),'%s_elbow_direction_crv_grp'%(side))]
for each in toGetParent:
cmds.parent(each[0],each[1])
IKarmSetup('l')
IKarmSetup('r')
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))
from maya import cmds, OpenMaya
def ui():
if cmds.workspaceControl("Rig Tools",ex = True):
cmds.deleteUI("Rig Tools")
myWin = cmds.workspaceControl("Rig Tools")
myWin = cmds.tabLayout()
cmds.scrollLayout(': : : : : : : : : : : : : : : : : : : : : : : : Tools : : : : : : : : : : : : : : : : : : : : : : : :',hst=16,vst=16,w=340)
cmds.columnLayout(adj = True)
cmds.showWindow("Rig Tools")
cmds.frameLayout(label='Rig Help', collapsable=True, collapse=True,w=330)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to create locator, group, joint, parent and scale constraint.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=5)
cmds.button('1',vis=False,w=20)
cmds.button(label='Create Locators', command=create_locator_on_selection,w=139)
cmds.button('2',vis=False)
cmds.button(label="Create Group", command=create_group_on_selection,w=139)
cmds.button('3',vis=False)
cmds.separator(h=15,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button('4',vis=False)
cmds.button("Create Joint",c = "jnt()")
cmds.button('6',vis=False)
cmds.button("Parent Scale Constraint",c="parentscale()")
cmds.setParent('..')
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
#Controller tab
cmds.frameLayout(label='Controller', collapsable=True, collapse=True)
cmds.rowColumnLayout(nr=4)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.frameLayout(label='Shape', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout( nc=1 )
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to create different type of controller.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=5)
cmds.button(w=20,vis=False)
cmds.button("cube",command=create_cube_on_selection,w = 130)
cmds.button(w=20,vis=False)
cmds.button("circle",command=create_circle_on_selection,w = 130)
cmds.button(w=20,vis=False)
cmds.separator(h=15,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button(w=20,vis=False)
cmds.button("square",command=create_square_on_selection)
cmds.button(w=20,vis=False)
cmds.button("cross",command=create_x_on_selection)
cmds.button(w=20,vis=False)
cmds.separator(h=15,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button(w=20,vis=False)
cmds.button("pyramid",command=create_pyramid_on_selection)
cmds.button(w=20,vis=False)
cmds.button("trianglecube",command=create_trianglecube_on_selection)
cmds.setParent('..')
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#Color tab
cmds.frameLayout(label='Color', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to change color of selected controller.',align='left')
cmds.separator(h=10,vis=False)
cmds.gridLayout(nr=1,nc=10,cellWidthHeight=(31,20))
backgroundColor = [((0.348,0.057,0.064),"DarkRed()"),((0.081,0.115,0.404),"darkBlue()"),((0.100,0.031,3.658),"blue()"),((0.052,0.013,0.114),"black()"),((0.531,0.091,0.768),"purple()"),((0.288,0.145,0.088),"brown()"),((0.096,0.058,0.049),"darkBrown()"),((0.333,0.089,0.016),"darkOrange()"),((1.240,0.106,0.018),"red()"),((0.294,5.113,0.000),"lightGreen()"),((8.423,2.724,0.000),"yellow()"),((0.423,1.213,8.659),"lightBlue()"),((2.320,0.606,0.574),"pink()"),((1.094,0.572,0.285),"lightOrange()"),((0.175,0.402,0.174),"darkGreen()"),((0.443,0.469,0.104),"darkYellow()"),((0.210,0.448,0.198),"green()"),((0.350,0.109,0.219),"darkPink()"),((0.208,0.096,0.447),"darkPurple()"),((0.147,0.211,0.456),"navy()")]
for each in backgroundColor:
cmds.iconTextButton(bgc=each[0],c=each[1])
cmds.setParent('..')
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
#Lock attributes tab
cmds.frameLayout(label='Attributes Lock / Unlock', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to lock or unlock attributes of selected controller.',align='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=5)
cmds.button('1',vis=False,w=17)
cmds.button("lock / unlock translate",c = "LockTranslate()",w=134)
cmds.button('2',vis=False,w=17)
cmds.button("lock / unlock rotate",c = "LockRotate()",w=134)
cmds.button('3',vis=False,w=17)
cmds.separator(h=15,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button('4',vis=False,w=17)
cmds.button("lock / unlock scale",c = "LockScale()")
cmds.button('5',vis=False,w=17)
cmds.button("lock / unlock visibility",c = "LockVisibility()")
cmds.setParent('..')
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
#Mirror controller tab
cmds.frameLayout(label='Mirror', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to mirror controller.',align='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=7)
cmds.button(w=10,vis=False)
cmds.button("Left To Right",c = "MirrorFromLeft()",w=90)
cmds.button(w=10,vis=False)
cmds.button("Right To Left",c = "MirrorFromRight()",w=90)
cmds.button(w=10,vis=False)
cmds.button("Selected",c = "MirrorFromSelected()",w=90)
cmds.button(w=10,vis=False)
cmds.separator(h=5,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#Connect attributes tab
cmds.frameLayout(label='Connect Attr', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to connect atrribute of selected object.',align='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=7)
cmds.button(w=10,vis=False)
cmds.button("Connect Translate",c = "ConnectTanslate()",w=96)
cmds.button(w=10,vis=False)
cmds.button("Connect Rotate",c = "ConnectRotate()",w=96)
cmds.button(w=10,vis=False)
cmds.button("Connect Scale",c = "ConnectScale()",w=96)
cmds.button(w=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#follicle tab
cmds.frameLayout(label='Create Follicle', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Select a plane and locators then click "Create Follicles".',align='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=3)
cmds.button(w=63,vis=False)
cmds.button("Create Follicles",c = 'createFollicles()',w=200)
cmds.button(w=63,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Rename', collapsable=True, collapse=True)
cmds.rowColumnLayout(nr=5)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
#rename tab#
cmds.frameLayout(label='Search And Replace', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=5,vis=False)
cmds.text('Help to search and replace name of selected object.',al='left')
cmds.rowColumnLayout(nc=4)
cmds.separator(h=10,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.text(label='Search:',w=70,al='left')
cmds.button(w=20,vis=False)
cmds.textField('search_field',w=190)
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.text(label='Replace:',al='left')
cmds.button(w=20,vis=False)
cmds.textField('replace_field')
cmds.button(vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button(vis=False)
cmds.button(w=20,vis=False)
cmds.button(label='Rename', command='search_replace()')
cmds.button(vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
# Prefix UI elements
cmds.frameLayout(label='Add Prefix', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=5,vis=False)
cmds.text('Help to add prefix name of selected object.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=4)
cmds.text(label='Prefix:',w=70,al='left')
cmds.button(w=20,vis=False)
cmds.textField('prefix_field',w=190)
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button(vis=False)
cmds.button(w=20,vis=False)
cmds.button(label='Add Prefix',c='addPrefix()')
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
# Suffix UI elements
cmds.frameLayout(label='Add Suffix', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=5,vis=False)
cmds.text('Help to add suffix name of selected object.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=4)
cmds.text(label='Suffix:',w=70,al = 'left')
cmds.button(w=20,vis=False)
cmds.textField('suffix_field',w=190)
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button(vis=False)
cmds.button(w=20,vis=False)
cmds.button(label='Add Suffix',c='addSuffix()')
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#add suffix name#
cmds.frameLayout(label='Add Prefix or Suffix Name', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=5,vis=False)
cmds.text('Help to add suffix name of selected object.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=7)
cmds.button(w=10,vis=False)
cmds.button(label='_jnt',c='addSuffixJnt()',w=88)
cmds.button(w=10,vis=False)
cmds.button(label='_grp',c='addSuffixGrp()',w=88)
cmds.button(w=10,vis=False)
cmds.button(label='_ctrl',c='addSuffixCtrl()',w=88)
cmds.button(w=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#add number suffix name#
cmds.frameLayout(label='Add Number Suffix Name', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=5,vis=False)
cmds.text('Help to add number suffix name of selected object.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=4)
cmds.text(label="Start number:",al='left')
cmds.button(w=20,vis=False)
cmds.intField('startNumField',value=1, minValue=1,w=190)
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.text(label="Increment:",al='left')
cmds.button(w=20,vis=False)
cmds.intField('incrementField',value=1, minValue=1)
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.button(w=20,vis=False)
cmds.button(w=20,vis=False)
cmds.button(label="Add Suffix", command='add_suffix()')
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#Auto rig tab
cmds.frameLayout(label='Auto Rig', collapsable=True, collapse=True)
cmds.rowColumnLayout(nr=4)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.frameLayout(label='Biped', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout( nc=1 )
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=3)
cmds.text('Biped Setup:',al='left')
cmds.button("SetupJoint",c = "setupjoint()",w = 150)
cmds.button(w = 150,vis=0)
cmds.separator(h=25,w=100)
cmds.separator()
cmds.separator()
cmds.text('Mirror Setup:',al='left')
cmds.button("MirrorSetupJoint",c = "mirrorSetupjoint()",w = 90)
cmds.button(w = 150,vis=0)
cmds.separator(h=25)
cmds.separator()
cmds.separator()
cmds.text('Build Setup:',al='left')
cmds.button("BuildSetup",c = "buildsetup()",w = 90)
cmds.button(w = 150,vis=0)
cmds.separator(h=25)
cmds.separator()
cmds.separator()
cmds.text('Bendy Setup:',al='left')
cmds.checkBox('bendyArm', label='BendyArm')
cmds.button(w = 150,vis=0)
cmds.button(w = 150,vis=0)
cmds.checkBox('bendyLeg', label='BendyLeg')
cmds.separator(vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Extra Rig', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.rowColumnLayout(nr=3)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.frameLayout(label='IK Spring Rig', collapsable=True, collapse=True,w=285)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=4)
cmds.text('IK Spring Setup:',al='left')
cmds.button(w=40,vis=False)
cmds.button("BuildIKSpringSetupJoint",c = "BuildIKSpringSetupJoint()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Build Setup:',al='left')
cmds.button(w=40,vis=False)
cmds.button("BuildIKSpringSetupRig",c = "BuildIKSpringSetupRig()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Tail Rig', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout( nc=4 )
cmds.text('Tail Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("BuildTailSetupJoint",c = "BuildTailSetupJoint()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Build Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("BuildTailSetupRig",c = "BuildTailSetupRig()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Motion Path Rig', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=3)
cmds.text('Path Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("MotionPathSetupLocator",c = "createLocator()",w = 150)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Joints Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.intField('numbersOfLocator',min=1,value=1)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Build Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("BuildMotionPathSetupRig",c = "createMotionPath()",w = 150)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Quadruped Rig', collapsable=True, collapse=True)
cmds.rowColumnLayout( nc=1 )
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout( nc=4 )
cmds.text('Quadruped Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("BuildQuadrupedSetupJoint",c = "BuildQuadrupedSetupJoint()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Mirror Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("MirrorQuadrupedSetupJoint",c = "MirrorQuadrupedSetupJoint()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Build Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("BuildQuadrupedRig",c = "BuildQuadrupedSetupRig()",w = 150)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Facial', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout(nc=1)
cmds.rowColumnLayout(nr=3)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.frameLayout(label='Eyelid', collapsable=True, collapse=True,w=285)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout( nc=4 )
cmds.text('Eye Locator Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Eye Placement",c = "create_display_eye()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Eye Upper Lid Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Upper Eyelid Vertex",c = "store_vertex_ids()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Eye Lower Lid Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Lower Eyelid Vertex",c = "store_lower_vertex_ids()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Eyelid Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Build Eyelid",c = "create_joints_and_parent_joints()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.text('Eyelid Curve Reverse:',al='left')
cmds.button(w=20,vis=False)
cmds.checkBox('reversecrv', label='Reverse Curve')
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Eyelid Rename:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Left Eyelid",c = "rename_left()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=20,vis=False)
cmds.separator(h=20,vis=False)
cmds.button("Right Eyelid",c = "rename_right()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Lip', collapsable=True, collapse=True,w=285)
global head_joint_field
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout( nc=4 )
cmds.text('Head Joint Name:',al='left')
cmds.button(w=5,vis=False)
head_joint_field = cmds.textField(placeholderText="Enter Head Joint Name")
cmds.button(w=20,vis=False)
cmds.button(w=20,vis=False)
cmds.button(w=20,vis=False)
cmds.button(label="Store Selected", command=store_head_joint_name)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Lip Upper Curve Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Upper Lip Edge",c = "create_upper_lip_edge()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Lip Lower Curve Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Lower Lip Edge",c = "create_lower_lip_edge()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Lip Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Build Lip Setup",c = "build_lip_setup()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Eyebrow and Cheek', collapsable=True, collapse=True,w=285)
cmds.rowColumnLayout(nc=1)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout( nc=4 )
cmds.text('Inner Eyebrow Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button(label="Place Selected", command=build_inner_eyebrow_locator,w = 140)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Middle Eyebrow Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button(label="Place Selected", command=build_middle_eyebrow_locator,w = 140)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Outer Eyebrow Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button(label="Place Selected", command=build_outer_eyebrow_locator,w = 140)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Cheek Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button(label="Place Selected", command=build_cheek_locator,w = 140)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Build Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button(label="Build All", command=build_all,w = 140)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
#locator function#
def create_locator(position):
locator = cmds.spaceLocator()[0]
cmds.move(position[0], position[1], position[2], locator)
return locator
def create_locator_with_values(selected_object):
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
locator_name = '{}_loc'.format(selected_object)
locator = create_locator(position)
cmds.rotate(rotation[0], rotation[1], rotation[2], locator)
cmds.rename(locator, locator_name)
return locator
def create_locator_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_locator_with_values(selected_object)
else:
create_locator([0, 0, 0])
#group function#
def create_group_with_values(selected_object=None):
group_name = selected_object + "_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
cmds.group(empty=True, name=group_name)
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_group_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_values(selected_object)
else:
cmds.group(em=True)
#joint function#
def jnt():
selected = cmds.ls(sl = True)
if selected:
for each in selected:
cmds.select(each)
newJoint = cmds.joint(n=each+'_jnt')
cmds.parent(newJoint,w = True)
else:
cmds.joint()
#parentscale function#
def parentscale():
lst = cmds.ls(sl = True)
cmds.parentConstraint(lst,mo = True)
cmds.scaleConstraint(lst,mo = True)
#cube function#
def create_group_with_cube_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
cube = cmds.curve(d=1, p=[(-0.5, -0.5, 0.5),(-0.5, 0.5, 0.5),(0.5, 0.5, 0.5),(0.5, -0.5, 0.5),(0.5, -0.5, -0.5),(0.5, 0.5, -0.5),(-0.5, 0.5, -0.5),(-0.5, -0.5, -0.5),(-0.5, -0.5, 0.5),(0.5, -0.5, 0.5),(0.5, 0.5, 0.5),(0.5, 0.5, -0.5),(0.5, -0.5, -0.5),(-0.5, -0.5, -0.5),(-0.5, 0.5, -0.5),(-0.5, 0.5, 0.5)])
cmds.parent(cube,group)
cmds.rename(cube,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_cube_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_cube_values(selected_object)
else:
cmds.curve(d=1, p=[(-0.5, -0.5, 0.5),(-0.5, 0.5, 0.5),(0.5, 0.5, 0.5),(0.5, -0.5, 0.5),(0.5, -0.5, -0.5),(0.5, 0.5, -0.5),(-0.5, 0.5, -0.5),(-0.5, -0.5, -0.5),(-0.5, -0.5, 0.5),(0.5, -0.5, 0.5),(0.5, 0.5, 0.5),(0.5, 0.5, -0.5),(0.5, -0.5, -0.5),(-0.5, -0.5, -0.5),(-0.5, 0.5, -0.5),(-0.5, 0.5, 0.5)])
cmds.group()
#circle function#
def create_group_with_circle_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
curvecircle = cmds.circle()[0]
cmds.delete(curvecircle,constructionHistory = True)
cmds.parent(curvecircle,group)
cmds.rename(curvecircle,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_circle_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_circle_values(selected_object)
else:
ctrl = cmds.circle()
cmds.group()
cmds.delete(ctrl,constructionHistory = True)
#square function#
def create_group_with_square_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
square = cmds.curve(d=1, p=[(0.5, 0, 0.5),(-0.5, 0, 0.5),(-0.5, 0, -0.5),(0.5, 0, -0.5),(0.5, 0, 0.5)])
cmds.parent(square,group)
cmds.rename(square,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_square_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_square_values(selected_object)
else:
cmds.curve(d=1, p=[(0.5, 0, 0.5),(-0.5, 0, 0.5),(-0.5, 0, -0.5),(0.5, 0, -0.5),(0.5, 0, 0.5)])
cmds.group()
#X function#
def create_group_with_x_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
x = 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.parent(x,group)
cmds.rename(x,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_x_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_x_values(selected_object)
else:
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.group()
#pyramid function#
def create_group_with_pyramid_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
pyramid = cmds.curve(d=1, p=[(1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, 1), (1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, -1), (1, -0.75, -1), (0, 0.5, 0), (1, -0.75, -1), (1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, 1), (-1, -0.75, -1)])
cmds.parent(pyramid,group)
cmds.rename(pyramid,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_pyramid_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_pyramid_values(selected_object)
else:
cmds.curve(d=1, p=[(1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, 1), (1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, -1), (1, -0.75, -1), (0, 0.5, 0), (1, -0.75, -1), (1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, 1), (-1, -0.75, -1)])
cmds.group()
#trianglecube function#
def create_group_with_trianglecube_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
trianglecube = cmds.curve(d = 1, p = [(0, 0.5, 0), (0, 0, 0.5), (0, -0.5, 0), (0, 0, -0.5), (0, 0.5, 0), (0.5, 0, 0), (0, -0.5, 0), (-0.5, 0, 0), (0, 0, 0.5), (0.5, 0, 0), (0, 0, -0.5), (-0.5, 0, 0), (0, 0.5, 0)])
cmds.parent(trianglecube,group)
cmds.rename(trianglecube,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_trianglecube_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_trianglecube_values(selected_object)
else:
cmds.curve(d = 1, p = [(0, 0.5, 0), (0, 0, 0.5), (0, -0.5, 0), (0, 0, -0.5), (0, 0.5, 0), (0.5, 0, 0), (0, -0.5, 0), (-0.5, 0, 0), (0, 0, 0.5), (0.5, 0, 0), (0, 0, -0.5), (-0.5, 0, 0), (0, 0.5, 0)])
cmds.group()
#dark red function#
def DarkRed():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,4)
#dark blue function#
def darkBlue():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,5)
#blue function#
def blue():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,6)
#black function#
def black():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,8)
#pink function#
def purple():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,9)
#brown function#
def brown():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,10)
#dark brown function#
def darkBrown():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,11)
#dark orange function#
def darkOrange():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,12)
#red function#
def red():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,13)
#light green function#
def lightGreen():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,14)
#yellow function#
def yellow():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,17)
#lightblue function#
def lightBlue():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,18)
#pink function#
def pink():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,20)
#light orange function#
def lightOrange():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,21)
#dark green function#
def darkGreen():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,7)
#dark yellow function#
def darkYellow():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,25)
#green function#
def green():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,26)
#dark pink function#
def darkPink():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,31)
#dark purple function#
def darkPurple():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,30)
#navy function#
def navy():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,29)
#lock translate function#
def LockTranslate():
sel = cmds.ls(sl = True)
for obj in sel:
lockOrNot = cmds.getAttr (obj +'.translateX',lock = True)
if lockOrNot == False:
cmds.setAttr (obj +'.translateX',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.translateY',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.translateZ',keyable = False, cb = False, lock = True)
else:
cmds.setAttr (obj +'.translateX',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.translateY',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.translateZ',keyable = True, cb = False, lock = False)
#lock rotate function#
def LockRotate():
sel = cmds.ls(sl = True)
for obj in sel:
lockOrNot = cmds.getAttr (obj +'.rotateX',lock = True)
if lockOrNot == False:
cmds.setAttr (obj +'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.rotateZ',keyable = False, cb = False, lock = True)
else:
cmds.setAttr (obj +'.rotateX',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.rotateY',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.rotateZ',keyable = True, cb = False, lock = False)
#lock scale function#
def LockScale():
sel = cmds.ls(sl = True)
for obj in sel:
lockOrNot = cmds.getAttr (obj +'.scaleX',lock = True)
if lockOrNot == False:
cmds.setAttr (obj +'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.scaleZ',keyable = False, cb = False, lock = True)
else:
cmds.setAttr (obj +'.scaleX',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.scaleY',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.scaleZ',keyable = True, cb = False, lock = False)
#lock visibility function#
def LockVisibility():
sel = cmds.ls(sl = True)
for obj in sel:
lockOrNot = cmds.getAttr (obj +'.visibility',lock = True)
if lockOrNot == False:
cmds.setAttr (obj +'.visibility',keyable = False, cb = False, lock = True)
else:
cmds.setAttr (obj +'.visibility',keyable = True, cb = False, lock = False)
#connect tanslation function#
def ConnectTanslate():
selection = cmds.ls(selection=True)
if len(selection) != 2:
cmds.warning("Please select exactly two objects.")
else:
source_obj = selection[0]
destination_obj = selection[1]
attrs = ["translateX", "translateY", "translateZ"]
for attr in attrs:
cmds.connectAttr(source_obj + "." + attr, destination_obj + "." + attr)
#connect roration function#
def ConnectRotate():
selection = cmds.ls(selection=True)
if len(selection) != 2:
cmds.warning("Please select exactly two objects.")
else:
source_obj = selection[0]
destination_obj = selection[1]
attrs = ["rotateX", "rotateY", "rotateZ"]
for attr in attrs:
cmds.connectAttr(source_obj + "." + attr, destination_obj + "." + attr)
#connect scaling function#
def ConnectScale():
selection = cmds.ls(selection=True)
if len(selection) != 2:
cmds.warning("Please select exactly two objects.")
else:
source_obj = selection[0]
destination_obj = selection[1]
attrs = ["scaleX", "scaleY", "scaleZ"]
for attr in attrs:
cmds.connectAttr(source_obj + "." + attr, destination_obj + "." + attr)
# Mirror controllers function
def MirrorFromLeft():
# Define your left and right prefixes
left_prefix = "l_"
right_prefix = "r_"
# Get a list of NURBS curves with the left prefix
left_curves = cmds.ls(left_prefix + "*", type="nurbsCurve")
# Specify the names of the curves to skip
curves_to_skip = ["r_elbow_direction_crvShape", "l_elbow_direction_crvShape","r_knee_direction_crvShape","l_knee_direction_crvShape","r_lwr_bendy_arm_crvShape","l_lwr_bendy_arm_crvShape","r_lwr_bendy_leg_crvShape","l_lwr_bendy_leg_crvShape","r_upr_bendy_arm_crvShape","l_upr_bendy_arm_crvShape","r_upr_bendy_leg_crvShape","l_upr_bendy_leg_crvShape"]
# Iterate through the left curves
for left_curve in left_curves:
# Check if the curve is in the list of curves to skip
if left_curve in curves_to_skip:
print(f"Skipping {left_curve}.")
continue
# Construct the corresponding right curve name
right_curve = left_curve.replace(left_prefix, right_prefix)
# Check if the right curve exists
if cmds.objExists(right_curve):
# Retrieve the CVs from the left curve
left_cvs = cmds.getAttr(f"{left_curve}.cv[*]")
# Get the number of CVs
num_cvs = len(left_cvs)
# Apply the copied CVs to the right curve
for i in range(num_cvs):
target_cv_attr = "{0}.cv[{1}]".format(right_curve, i)
cmds.setAttr(target_cv_attr, *left_cvs[i], type="double3")
print("CVs copied from '{0}' to '{1}'.".format(left_curve, right_curve))
else:
cmds.warning("Corresponding right curve '{0}' not found for '{1}'. Skipping.".format(right_curve, left_curve))
print("CV copy completed.")
def MirrorFromRight():
# Define your left and right prefixes
left_prefix = "l_"
right_prefix = "r_"
# Get a list of NURBS curves with the left prefix
right_curves = cmds.ls(right_prefix + "*", type="nurbsCurve")
# Specify the names of the curves to skip
curves_to_skip = ["r_elbow_direction_crvShape", "l_elbow_direction_crvShape","r_knee_direction_crvShape","l_knee_direction_crvShape","r_lwr_bendy_arm_crvShape","l_lwr_bendy_arm_crvShape","r_lwr_bendy_leg_crvShape","l_lwr_bendy_leg_crvShape","r_upr_bendy_arm_crvShape","l_upr_bendy_arm_crvShape","r_upr_bendy_leg_crvShape","l_upr_bendy_leg_crvShape"]
# Iterate through the left curves
for right_curve in right_curves:
# Check if the curve is in the list of curves to skip
if right_curve in curves_to_skip:
print(f"Skipping {right_curve}.")
continue
# Construct the corresponding right curve name
left_curve = right_curve.replace(right_prefix, left_prefix)
# Check if the right curve exists
if cmds.objExists(left_curve):
# Retrieve the CVs from the left curve
right_cvs = cmds.getAttr(f"{right_curve}.cv[*]")
# Get the number of CVs
num_cvs = len(right_cvs)
# Apply the copied CVs to the right curve
for i in range(num_cvs):
target_cv_attr = "{0}.cv[{1}]".format(left_curve, i)
cmds.setAttr(target_cv_attr, *right_cvs[i], type="double3")
print("CVs copied from '{0}' to '{1}'.".format(right_curve, left_curve))
else:
cmds.warning("Corresponding left curve '{0}' not found for '{1}'. Skipping.".format(left_curve, right_curve))
print("CV copy completed.")
def MirrorFromSelected():
# Get the selected control shapes (NURBS curves)
selected_objects = cmds.ls(selection=True)
# Ensure there are exactly two selected control shapes
if len(selected_objects) != 2:
cmds.warning("Please select exactly two NURBS curves to copy from and copy to.")
else:
# Sort the selected objects
selected_objects.sort()
# Extract CVs from the first selected control shape
source_cvs = cmds.getAttr(f"{selected_objects[0]}.cp[*]")
# Extract the number of CVs in the source curve
num_cvs = len(source_cvs)
# Apply the copied CVs to the second selected control shape
for i in range(num_cvs):
target_cv_attr = "{0}.cp[{1}]".format(selected_objects[1], i)
cmds.setAttr(target_cv_attr, *source_cvs[i])
print("CVs copied from '{0}' to '{1}'.".format(selected_objects[0], selected_objects[1]))
#create follicles function#
def createFollicles(*args):
sel = cmds.ls(selection=True)
if len(sel) < 2:
cmds.warning('Please select a plane and at least one locator.')
return
plane = sel[0]
locators = sel[1:]
minX, minY, minZ, maxX, maxY, maxZ = cmds.xform(plane, q=True, ws=True, bb=True)
width = maxX - minX
height = maxZ - minZ
for loc in locators:
posX, posY, posZ = cmds.xform(loc, q=True, ws=True, translation=True)
u = (posX - minX) / width
v = (posZ - minZ) / height
follicleX = u * width + minX
follicleY = maxY
follicleZ = v * height + minZ
follicle = cmds.createNode('follicle')
cmds.connectAttr('%s.outMesh' % plane, '%s.inputMesh' % follicle)
cmds.connectAttr('%s.worldMatrix[0]' % plane, '%s.inputWorldMatrix' % follicle)
cmds.setAttr('%s.parameterU' % follicle, u)
cmds.setAttr('%s.parameterV' % follicle, v)
cmds.move(follicleX, follicleY, follicleZ, follicle)
cmds.setAttr('%s.visibility' % follicle, 0)
follicleTransform = cmds.listRelatives(follicle, parent=True)[0]
cmds.connectAttr('%s.outTranslate' % follicle, '%s.translate' % follicleTransform)
cmds.connectAttr('%s.outRotate' % follicle, '%s.rotate' % follicleTransform)
#rename function#
def search_replace():
selection = cmds.ls(selection=True)
search_text = cmds.textField('search_field', query=True, text=True)
replace_text = cmds.textField('replace_field', query=True, text=True)
for node in selection:
new_name = node.replace(search_text, replace_text)
cmds.rename(node, new_name)
cmds.textField('search_field',edit=True,text = '')
cmds.textField('replace_field',edit=True,text = '')
#prefix and suffix functions#
def addPrefix():
selection = cmds.ls(selection=True)
prefix = cmds.textField('prefix_field', query=True, text=True)
for node in selection:
new_name = prefix + node
cmds.rename(node, new_name)
cmds.textField('prefix_field',edit=True,text = '')
def addSuffix():
selection = cmds.ls(selection=True)
suffix = cmds.textField('suffix_field', query=True, text=True)
for node in selection:
new_name = node + suffix
cmds.rename(node, new_name)
cmds.textField('suffix_field',edit=True,text = '')
def addSuffixJnt():
selection = cmds.ls(selection=True)
for node in selection:
new_name = node + '_jnt'
cmds.rename(node, new_name)
def addSuffixGrp():
selection = cmds.ls(selection=True)
for node in selection:
new_name = node + '_grp'
cmds.rename(node, new_name)
def addSuffixCtrl():
selection = cmds.ls(selection=True)
for node in selection:
new_name = node + '_ctrl'
cmds.rename(node, new_name)
#add number suffix function#
def add_suffix():
start_num = cmds.intField('startNumField', query=True, value=True)
increment = cmds.intField('incrementField', query=True, value=True)
selected_objects = cmds.ls(selection=True)
for i, obj in enumerate(selected_objects):
new_suffix = "_{:02d}".format(start_num + i*increment)
new_name = obj + new_suffix
cmds.rename(obj, new_name)
#build IK spring setup joint#
def BuildIKSpringSetupJoint():
nameOfIKSpringSetupJnt = [('ikSpring_01_setup_jnt',(0,0,0)),('ikSpring_02_setup_jnt',(5,0,0)),('ikSpring_03_setup_jnt',(10,0,0)),('ikSpring_04_setup_jnt',(15,0,0)),('ikSpring_05_setup_jnt',(20,0,0))]
for each in nameOfIKSpringSetupJnt:
cmds.joint(n=each[0],p=each[1])
cmds.setAttr('ikSpring_01_setup_jnt.rotateY',30)
cmds.setAttr('ikSpring_02_setup_jnt.rotateY',-60)
cmds.setAttr('ikSpring_03_setup_jnt.rotateY',60)
cmds.setAttr('ikSpring_04_setup_jnt.rotateY',-60)
#build IK spring setup rig#
def BuildIKSpringSetupRig():
def ControllerAttr(controllerName,visKeyableOrnot,scaleXKeyableOrnot,scaleYKeyableOrnot,scaleZKeyableOrnot,rotateXKeyableOrnot,rotateYKeyableOrnot,rotateZKeyableOrnot,visLockOrnot,scaleXLockOrnot,scaleYLockOrnot,scaleZLockOrnot,rotateXLockOrnot,rotateYLockOrnot,rotateZLockOrnot,colorEnableOrnot,colorNumber,translateXKeyableOrnot,translateYKeyableOrnot,translateZKeyableOrnot,translateXLockOrnot,translateYLockOrnot,translateZLockOrnot):
cmds.setAttr ((controllerName) +'.visibility',keyable = visKeyableOrnot, cb = False, lock = visLockOrnot)
cmds.setAttr ((controllerName) +'.scaleX',keyable = scaleXKeyableOrnot, cb = False, lock = scaleXLockOrnot)
cmds.setAttr ((controllerName) +'.scaleY',keyable = scaleYKeyableOrnot, cb = False, lock = scaleYLockOrnot)
cmds.setAttr ((controllerName) +'.scaleZ',keyable = scaleZKeyableOrnot, cb = False, lock = scaleZLockOrnot)
cmds.setAttr ((controllerName) +'.rotateX',keyable = rotateXKeyableOrnot, cb = False, lock = rotateXLockOrnot)
cmds.setAttr ((controllerName) +'.rotateY',keyable = rotateYKeyableOrnot, cb = False, lock = rotateYLockOrnot)
cmds.setAttr ((controllerName) +'.rotateZ',keyable = rotateZKeyableOrnot, cb = False, lock = rotateZLockOrnot)
cmds.setAttr ((controllerName) +'.translateX',keyable = translateXKeyableOrnot, cb = False, lock = translateXLockOrnot)
cmds.setAttr ((controllerName) +'.translateY',keyable = translateYKeyableOrnot, cb = False, lock = translateYLockOrnot)
cmds.setAttr ((controllerName) +'.translateZ',keyable = translateZKeyableOrnot, cb = False, lock = translateZLockOrnot)
cmds.setAttr ((controllerName) + '.overrideEnabled' ,colorEnableOrnot)
cmds.setAttr ((controllerName) + '.overrideColor' ,colorNumber)
nameOfIKSpringSetupRigUprJnt = [('ik_upr_01_jnt'),('ik_upr_02_jnt'),('ik_upr_03_jnt')]
for each in nameOfIKSpringSetupRigUprJnt:
cmds.joint(n=each)
toGetPosUprJnt = [('ikSpring_01_setup_jnt','ik_upr_01_jnt'),('ikSpring_02_setup_jnt','ik_upr_02_jnt'),('ikSpring_03_setup_jnt','ik_upr_03_jnt')]
for each in toGetPosUprJnt:
parentConForDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(parentConForDel)
orientConForDel = cmds.orientConstraint('ikSpring_02_setup_jnt','ik_upr_03_jnt',mo=False)
cmds.delete(orientConForDel)
cmds.makeIdentity( 'ik_upr_01_jnt', apply=True, translate=True, rotate=True )
nameOfIKSpringSetupRigLwrJnt = [('ik_lwr_01_jnt'),('ik_lwr_02_jnt'),('ik_lwr_03_jnt')]
for each in nameOfIKSpringSetupRigLwrJnt:
cmds.joint(n=each)
cmds.parent(w=True)
toGetPosLwrJnt = [('ikSpring_03_setup_jnt','ik_lwr_01_jnt'),('ikSpring_04_setup_jnt','ik_lwr_02_jnt'),('ikSpring_05_setup_jnt','ik_lwr_03_jnt')]
for each in toGetPosLwrJnt:
parentConForDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(parentConForDel)
nameOfFKSetupJnt = [('fk_01_jnt'),('fk_02_jnt'),('fk_03_jnt'),('fk_04_jnt'),('fk_05_jnt')]
for each in nameOfFKSetupJnt:
cmds.joint(n=each)
cmds.parent(w=True)
toGetPosFKJnt = [('ikSpring_01_setup_jnt','fk_01_jnt'),('ikSpring_02_setup_jnt','fk_02_jnt'),('ikSpring_03_setup_jnt','fk_03_jnt'),('ikSpring_04_setup_jnt','fk_04_jnt'),('ikSpring_05_setup_jnt','fk_05_jnt')]
for each in toGetPosFKJnt:
parentConForDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(parentConForDel)
nameOfIKSpringSetupRigJnt = [('ikSpring_01_jnt'),('ikSpring_02_jnt'),('ikSpring_03_jnt'),('ikSpring_04_jnt'),('ikSpring_05_jnt')]
for each in nameOfIKSpringSetupRigJnt:
cmds.joint(n=each)
cmds.parent(w=True)
toGetPosIKSpringJnt = [('ikSpring_01_setup_jnt','ikSpring_01_jnt'),('ikSpring_02_setup_jnt','ikSpring_02_jnt'),('ikSpring_03_setup_jnt','ikSpring_03_jnt'),('ikSpring_04_setup_jnt','ikSpring_04_jnt'),('ikSpring_05_setup_jnt','ikSpring_05_jnt')]
for each in toGetPosIKSpringJnt:
parentConForDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(parentConForDel)
toParent = [('fk_05_jnt','fk_04_jnt'),('fk_04_jnt','fk_03_jnt'),('fk_03_jnt','fk_02_jnt'),('fk_02_jnt','fk_01_jnt'),('ik_lwr_03_jnt','ik_lwr_02_jnt'),('ik_lwr_02_jnt','ik_lwr_01_jnt'),('ikSpring_05_jnt','ikSpring_04_jnt'),('ikSpring_04_jnt','ikSpring_03_jnt'),('ikSpring_03_jnt','ikSpring_02_jnt'),('ikSpring_02_jnt','ikSpring_01_jnt')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity( 'ik_lwr_01_jnt','fk_01_jnt','ikSpring_01_jnt', apply=True, translate=True, rotate=True )
#ik Rig#
cmds.ikHandle(n='upr_ikh', sj='ik_upr_01_jnt', ee='ik_upr_03_jnt')
cmds.ikHandle(n='lwr_ikh', sj='ik_lwr_01_jnt', ee='ik_lwr_03_jnt')
cmds.ikHandle(n='spring_ikh', sj='ikSpring_01_jnt', ee='ikSpring_05_jnt',sol='ikSpringSolver')
cmds.curve(d=1, p=[(-1, -1, 1),(-1, 1, 1),(1, 1, 1),(1, -1, 1),(1, -1, -1),(1, 1, -1),(-1, 1, -1),(-1, -1, -1),(-1, -1, 1),(1, -1, 1),(1, 1, 1),(1, 1, -1),(1, -1, -1),(-1, -1, -1),(-1, 1, -1),(-1, 1, 1)])
cmds.rename('ik_mid_ctrl')
ControllerAttr('ik_mid_ctrl',False,False,False,False,False,False,False,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.group()
cmds.rename('ik_mid_ctrl_grp')
parentCon = cmds.parentConstraint('ik_upr_03_jnt','ik_mid_ctrl_grp',mo = False)
cmds.delete(parentCon)
cmds.curve(d=1, p=[(-1, -1, 1),(-1, 1, 1),(1, 1, 1),(1, -1, 1),(1, -1, -1),(1, 1, -1),(-1, 1, -1),(-1, -1, -1),(-1, -1, 1),(1, -1, 1),(1, 1, 1),(1, 1, -1),(1, -1, -1),(-1, -1, -1),(-1, 1, -1),(-1, 1, 1)])
cmds.rename('ik_inr_ctrl')
ControllerAttr('ik_inr_ctrl',False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.group()
cmds.rename('ik_inr_ctrl_grp')
parentCon = cmds.parentConstraint('ik_lwr_03_jnt','ik_inr_ctrl_grp',mo = False)
cmds.delete(parentCon)
cmds.curve(d=1, p=[(-2, -2, 2),(-2, 2, 2),(2, 2, 2),(2, -2, 2),(2, -2, -2),(2, 2, -2),(-2, 2, -2),(-2, -2, -2),(-2, -2, 2),(2, -2, 2),(2, 2, 2),(2, 2, -2),(2, -2, -2),(-2, -2, -2),(-2, 2, -2),(-2, 2, 2)])
cmds.rename('ik_ctrl')
ControllerAttr('ik_ctrl',False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.group()
cmds.rename('ik_ctrl_grp')
parentCon = cmds.parentConstraint('ik_lwr_03_jnt','ik_ctrl_grp',mo = False)
cmds.delete(parentCon)
cmds.pointConstraint('ik_ctrl','spring_ikh',mo = True)
cmds.parentConstraint('ikSpring_05_jnt','ik_inr_ctrl_grp',mo = True)
cmds.parentConstraint('ikSpring_03_jnt','ik_mid_ctrl_grp',mo = True)
cmds.pointConstraint('ik_mid_ctrl','upr_ikh',mo = True)
cmds.pointConstraint('ik_inr_ctrl','lwr_ikh',mo = True)
cmds.pointConstraint('ik_mid_ctrl','ik_lwr_01_jnt',mo = True)
cmds.orientConstraint('ik_inr_ctrl','ik_lwr_03_jnt',mo = True)
#fk Rig#
nameOfFKctrl = [('fk_01_ctrl','fk_01_ctrl_grp'),('fk_02_ctrl','fk_02_ctrl_grp'),('fk_03_ctrl','fk_03_ctrl_grp'),('fk_04_ctrl','fk_04_ctrl_grp'),('fk_05_ctrl','fk_05_ctrl_grp')]
for each in nameOfFKctrl:
FKctrl = cmds.circle(n=each[0],r=1,nrx = 90)
cmds.group(n=each[1])
ControllerAttr(each[0],False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
toGetPosOfFKctrl = [('ikSpring_01_setup_jnt','fk_01_ctrl_grp'),('ikSpring_02_setup_jnt','fk_02_ctrl_grp'),('ikSpring_03_setup_jnt','fk_03_ctrl_grp'),('ikSpring_04_setup_jnt','fk_04_ctrl_grp'),('ikSpring_05_setup_jnt','fk_05_ctrl_grp')]
for each in toGetPosOfFKctrl:
parentCon = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(parentCon)
toGetParent = [('fk_05_ctrl_grp','fk_04_ctrl'),('fk_04_ctrl_grp','fk_03_ctrl'),('fk_03_ctrl_grp','fk_02_ctrl'),('fk_02_ctrl_grp','fk_01_ctrl')]
for each in toGetParent:
cmds.parent(each[0],each[1])
parentCon = [('fk_01_ctrl','fk_01_jnt'),('fk_02_ctrl','fk_02_jnt'),('fk_03_ctrl','fk_03_jnt'),('fk_04_ctrl','fk_04_jnt'),('fk_05_ctrl','fk_05_jnt')]
for each in parentCon:
cmds.parentConstraint(each[0],each[1],mo = True)
#IKFK Setup Rig#
nameOfIKFKSetupJnt = [('bln_01_jnt'),('bln_02_jnt'),('bln_03_jnt'),('bln_04_jnt'),('bln_05_jnt')]
for each in nameOfIKFKSetupJnt:
cmds.joint(n=each)
cmds.parent(w = True)
toGetPosOfIKFKjnt = [('ikSpring_01_setup_jnt','bln_01_jnt'),('ikSpring_02_setup_jnt','bln_02_jnt'),('ikSpring_03_setup_jnt','bln_03_jnt'),('ikSpring_04_setup_jnt','bln_04_jnt'),('ikSpring_05_setup_jnt','bln_05_jnt')]
for each in toGetPosOfIKFKjnt:
parentCon = cmds.parentConstraint(each[0],each[1])
cmds.delete(parentCon)
toGetParent = [('bln_05_jnt','bln_04_jnt'),('bln_04_jnt','bln_03_jnt'),('bln_03_jnt','bln_02_jnt'),('bln_02_jnt','bln_01_jnt')]
for each in toGetParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity( 'bln_01_jnt', apply=True, translate=True, rotate=True )
parentConIKFKjnt = [('ik_upr_01_jnt','bln_01_jnt'),('ik_upr_02_jnt','bln_02_jnt'),('ik_lwr_01_jnt','bln_03_jnt'),('ik_lwr_02_jnt','bln_04_jnt'),('ik_lwr_03_jnt','bln_05_jnt'),('fk_01_jnt','bln_01_jnt'),('fk_02_jnt','bln_02_jnt'),('fk_03_jnt','bln_03_jnt'),('fk_04_jnt','bln_04_jnt'),('fk_05_jnt','bln_05_jnt')]
for each in parentConIKFKjnt:
cmds.parentConstraint(each[0],each[1],mo = True)
cmds.curve(d=1, p=[(0.5, 0, 2.25),(-0.5, 0, 2.25),(-0.5, 0, 0.5),(-2.25, 0, 0.5),(-2.25, 0, -0.5),(-0.5, 0, -0.5),(-0.5, 0, -2.25),(0.5, 0 ,-2.25),(0.5, 0, -0.5),(2.25, 0, -0.5),(2.25, 0, 0.5,),(0.5, 0 ,0.5),(0.5, 0, 2.25)])
cmds.rename('ik_fk_switch')
ControllerAttr('ik_fk_switch',False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.group()
cmds.rename('ik_fk_switch_grp')
cmds.addAttr('ik_fk_switch',sn='IKFK', min = 0, max=1 ,k=1)
cmds.parentConstraint('bln_05_jnt', 'ik_fk_switch_grp')
cmds.shadingNode('reverse',n = 'ik_fk_rev',asUtility=1)
toConect = [('ik_fk_switch.IKFK','bln_01_jnt_parentConstraint1.fk_01_jntW1'),('ik_fk_switch.IKFK','bln_02_jnt_parentConstraint1.fk_02_jntW1'),('ik_fk_switch.IKFK', 'bln_03_jnt_parentConstraint1.fk_03_jntW1'),('ik_fk_switch.IKFK', 'bln_04_jnt_parentConstraint1.fk_04_jntW1'),('ik_fk_switch.IKFK', 'bln_05_jnt_parentConstraint1.fk_05_jntW1'),('ik_fk_rev.outputX', 'bln_01_jnt_parentConstraint1.ik_upr_01_jntW0'),('ik_fk_rev.outputX', 'bln_02_jnt_parentConstraint1.ik_upr_02_jntW0'),('ik_fk_switch.IKFK', 'ik_fk_rev.inputX'),('ik_fk_rev.outputX', 'bln_03_jnt_parentConstraint1.ik_lwr_01_jntW0'),('ik_fk_rev.outputX', 'bln_04_jnt_parentConstraint1.ik_lwr_02_jntW0'),('ik_fk_rev.outputX', 'bln_05_jnt_parentConstraint1.ik_lwr_03_jntW0'),('ik_fk_switch.IKFK','fk_01_ctrl_grp.visibility'),('ik_fk_rev.outputX','ik_mid_ctrl_grp.visibility'),('ik_fk_rev.outputX','ik_inr_ctrl_grp.visibility'),('ik_fk_rev.outputX','ik_ctrl_grp.visibility')]
for each in toConect:
cmds.connectAttr(each[0],each[1])
toHide = [('ikSpring_01_setup_jnt.visibility'),('ik_lwr_01_jnt.visibility'),('fk_01_jnt.visibility'),('ikSpring_01_jnt.visibility'),('ik_upr_01_jnt.visibility'),('upr_ikh.visibility'),('lwr_ikh.visibility'),('spring_ikh.visibility')]
for each in toHide:
cmds.setAttr(each,0)
createGroup = ('rig_grp','jnt_grp','rename')
for each in createGroup:
cmds.group(w=1,n=each,em=1)
toGroup = [('ikSpring_01_setup_jnt','rig_grp'),('ik_lwr_01_jnt','rig_grp'),('fk_01_jnt','rig_grp'),('ikSpring_01_jnt','rig_grp'),('upr_ikh','rig_grp'),('lwr_ikh','rig_grp'),('spring_ikh','rig_grp'),('fk_01_ctrl_grp','rig_grp'),('ik_mid_ctrl_grp','rig_grp'),('ik_inr_ctrl_grp','rig_grp'),('ik_ctrl_grp','rig_grp'),('ik_fk_switch_grp','rig_grp'),('bln_01_jnt','jnt_grp'),('jnt_grp','rename'),('rig_grp','rename')]
for each in toGroup:
cmds.parent(each[0],each[1])
#create tail setup joint function#
def BuildTailSetupJoint():
list = [('tail_01_setup_jnt',(0, 0, 0)),('tail_02_setup_jnt',(10, 0, 0)),('tail_03_setup_jnt',(20, 0, 0)),('tail_04_setup_jnt',(30, 0, 0)),('tail_05_setup_jnt',(40, 0, 0))]
for each in list:
cmds.joint(n=each[0],p=each[1])
#create tail setup rig function#
def BuildTailSetupRig():
#create FK tail setup
list = ['tail_01_FK_jnt','tail_02_FK_jnt','tail_03_FK_jnt','tail_04_FK_jnt','tail_05_FK_jnt']
for each in list:
cmds.joint(n=each)
list = [('tail_01_FK_ctrl','tail_01_FK_ctrl_grp'),('tail_02_FK_ctrl','tail_02_FK_ctrl_grp'),('tail_03_FK_ctrl','tail_03_FK_ctrl_grp'),('tail_04_FK_ctrl','tail_04_FK_ctrl_grp'),('tail_05_FK_ctrl','tail_05_FK_ctrl_grp')]
for each in list:
ctrl = cmds.circle(n=each[0],r=5,nrx = 90)
cmds.delete(ctrl,constructionHistory = True)
cmds.group(n=each[1])
cmds.parent('tail_01_FK_jnt',w=True)
list = [('tail_01_setup_jnt','tail_01_FK_ctrl_grp'),('tail_02_setup_jnt','tail_02_FK_ctrl_grp'),('tail_03_setup_jnt','tail_03_FK_ctrl_grp'),('tail_04_setup_jnt','tail_04_FK_ctrl_grp'),('tail_05_setup_jnt','tail_05_FK_ctrl_grp'),('tail_01_setup_jnt','tail_01_FK_jnt'),('tail_02_setup_jnt','tail_02_FK_jnt'),('tail_03_setup_jnt','tail_03_FK_jnt'),('tail_04_setup_jnt','tail_04_FK_jnt'),('tail_05_setup_jnt','tail_05_FK_jnt')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('tail_05_FK_ctrl_grp','tail_04_FK_ctrl'),('tail_04_FK_ctrl_grp','tail_03_FK_ctrl'),('tail_03_FK_ctrl_grp','tail_02_FK_ctrl'),('tail_02_FK_ctrl_grp','tail_01_FK_ctrl')]
for each in list:
cmds.parent(each[0],each[1])
list = [('tail_01_FK_ctrl','tail_01_FK_jnt'),('tail_02_FK_ctrl','tail_02_FK_jnt'),('tail_03_FK_ctrl','tail_03_FK_jnt'),('tail_04_FK_ctrl','tail_04_FK_jnt'),('tail_05_FK_ctrl','tail_05_FK_jnt')]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
#create IK tail
list = ['tail_01_IK_jnt','tail_02_IK_jnt','tail_03_IK_jnt','tail_04_IK_jnt','tail_05_IK_jnt','tail_01_length_jnt','tail_02_length_jnt','tail_03_length_jnt','tail_04_length_jnt','tail_05_length_jnt','tail_start_length_jnt','tail_end_length_jnt']
for each in list:
cmds.joint(n=each)
list = [('tail_01_IK_ctrl','tail_01_IK_ctrl_grp'),('tail_02_IK_ctrl','tail_02_IK_ctrl_grp'),('tail_03_IK_ctrl','tail_03_IK_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])
cmds.parent('tail_01_IK_jnt','tail_start_length_jnt','tail_01_length_jnt',w=True)
from maya import cmds , OpenMaya
def getUParam( pnt = [], crv = None):
point = OpenMaya.MPoint(pnt[0],pnt[1],pnt[2])
curveFn = OpenMaya.MFnNurbsCurve(getDagPath(crv))
paramUtill=OpenMaya.MScriptUtil()
paramPtr=paramUtill.asDoublePtr()
isOnCurve = curveFn.isPointOnCurve(point)
if isOnCurve == True:
curveFn.getParamAtPoint(point , paramPtr,0.001,OpenMaya.MSpace.kObject )
else :
point = curveFn.closestPoint(point,paramPtr,0.001,OpenMaya.MSpace.kObject)
curveFn.getParamAtPoint(point , paramPtr,0.001,OpenMaya.MSpace.kObject )
param = paramUtill.getDouble(paramPtr)
return param
def getDagPath( objectName):
if isinstance(objectName, list)==True:
oNodeList=[]
for o in objectName:
selectionList = OpenMaya.MSelectionList()
selectionList.add(o)
oNode = OpenMaya.MDagPath()
selectionList.getDagPath(0, oNode)
oNodeList.append(oNode)
return oNodeList
else:
selectionList = OpenMaya.MSelectionList()
selectionList.add(objectName)
oNode = OpenMaya.MDagPath()
selectionList.getDagPath(0, oNode)
return oNode
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int min_jumps(int nums[], int n)
{
if (n <= 1) {
return 0; // No jumps needed if the array has only one element
}
// Initialize variables
int jumps = 0;
int farthest = 0;
int current_end = 0;
for (int i = 0; i < n - 1; i++)
{
// Update the farthest we can reach
farthest = max(farthest, i + nums[i]);
// When we reach the end of the current range, we must jump
if (i == current_end)
{
jumps++;
current_end = farthest;
// If we can already reach the last index, break early
if (current_end >= n - 1)
{
break;
}
}
}
return jumps;
}
int main()
{
int n;
cout << "Enter the size of the array: ";
cin >> n;
int nums[n];
cout << "Enter the elements of the array: ";
for (int i = 0; i < n; i++)
{
cin >> nums[i];
}
int result = min_jumps(nums, n);
cout << "Minimum number of jumps to reach the last index: " << result << endl;
return 0;
}
ssh-keygen -t ed25519 -C "your_email@example.com"
public with sharing class ImpersonationUtil {
public static String getImpersonatorEmail() {
String query = 'SELECT CreatedById FROM AuthSession WHERE UsersId = :UserInfo.getUserId() AND SessionType = \'SubstituteUser\' ORDER BY CreatedDate DESC LIMIT 1';
AuthSession session = Database.query(query);
if (session != null) {
User creator = [SELECT Email FROM User WHERE Id = :session.CreatedById LIMIT 1];
return creator.Email;
}
return null;
}
}
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
// FAP nghĩa là find all path
vector<vector<int>> FAP(int A, int B, vector<vector<int>>& S) {
deque<vector<int>> dq;
vector<vector<int>> all;
dq.push_back({A});
while (!dq.empty()) {
vector<int> path = dq.front();
dq.pop_front();
int end = path.back();
if (end == B) {
all.push_back(path);
} else {
for (int i = 0; i < S[end].size(); i++) {
int nei = S[end][i];
if (find(path.begin(), path.end(), nei) == path.end()) {
vector<int> newpath = path;
newpath.push_back(nei);
dq.push_back(newpath);
}
}
}
}
// In tất cả các đường đi tìm được
cout << "Tất cả các đường đi từ " << A << " đến " << B << ":\n";
for (const auto& p : all) {
for (int i = 0; i < p.size(); i++) {
cout << p[i];
if (i < p.size() - 1) cout << " -> ";
}
cout << endl;
}
return all; // Trả về kết quả tìm được
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> S(n + 1); // Sử dụng vector 2D để lưu đồ thị
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
S[u].push_back(v);
S[v].push_back(u); // Đồ thị vô hướng
}
int A, B; // Đỉnh bắt đầu A và đỉnh đích B
cin >> A >> B;
vector<vector<int>> all = FAP(A, B, S);
vector<int> LT(n + 1, 0); // Khởi tạo mảng đếm với kích thước n+1
for (const auto& p : all) {
for (int i = 0; i < p.size(); i++) {
LT[p[i]]++;
}
}
int maxx = *max_element(LT.begin(), LT.end());
for (int i = 0; i < LT.size(); i++) {
if(i == A || i == B){
continue;
}
else if (LT[i] == maxx) {
cout << i << " ";
}
}
return 0;
}
$args = [ \
'title' => 'Test Recurring Event', \
'status' => 'publish', \
'start_date' => '2022-09-01 14:00:00', \
'end_date' => '2022-09-01 17:00:00', \
'timezone' => 'America/New_York', \
'recurrence' => 'RRULE:FREQ=DAILY;COUNT=10', \
];
$recurring_event = tribe_events()->set_args( $args )->create()->ID;
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":star: What's on in Melbourne this week! :star:"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n\n Hey Melbourne, happy Monday! Please see below for what's on this week. "
}
},
{
"type": "divider"
},
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Xero Café :coffee:",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n :new-thing: *This week we are offering:* \n\n Chocolate Freckle Cookies, Brownies (GF), and Melting Moments Cookies \n\n *Weekly Café Special*: _Turmeric Latte_"
}
},
{
"type": "header",
"text": {
"type": "plain_text",
"text": " Wednesday, 18th September :calendar-date-18:",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n\n:footprint: *STEPtember Afternoon Tea*: From *2pm* in the L3 kitchen + breakout space! \n\n :walking:*STEPtember Office Walk:* Take 30 minutes to join in the STEPtember office walk\n\n:yoga2:*Wellbeing - Yin Yoga & Breathwork*: Confirm your spot <https://docs.google.com/spreadsheets/d/1iKMQtSaawEdJluOmhdi_r_dAifeIg0JGCu7ZSPuwRbo/edit?gid=0#gid=0/|*here*>. Please note we have a maximum of 15 participants per class, a minimum notice period of 4 hours is required if you can no longer attend."
}
},
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Thursday, 19th September :calendar-date-19:",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":breakfast: *Breakfast*: Provided by *Kartel Catering* from *8:30am - 10:30am* in the Wominjeka Breakout Space.\n\n"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Later this month:* We have our Grand Final Eve-Eve BBQ Social on the 26th of September! Make sure to wear your team colours (can be NRL or AFL) and come along for some fun! \n\nStay tuned to this channel for more details, and make sure you're subscribed to the <https://calendar.google.com/calendar/u/0?cid=Y19xczkyMjk5ZGlsODJzMjA4aGt1b3RnM2t1MEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t|*Melbourne Social Calendar*> :party-wx:"
}
}
]
}
from bs4 import BeautifulSoup
import requests
import json
# Initialize the list to store API data
api = []
# Base URL for Yahoo News
base_url = 'https://www.yahoo.com'
# Fetch the main page
url = f'{base_url}/news/'
response = requests.get(url)
# Check if the request was successful
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# Find all news items
for news_item in soup.find_all('ul', class_='stream-items'):
for item in news_item.find_all('li', class_='stream-item'):
# Extract the article link
item_id = item.find('a', class_='js-content-viewer')
if item_id:
link = item_id.get('href')
full_link = f'{base_url}{link}'
# Fetch the article page
response2 = requests.get(full_link)
if response2.status_code == 200:
soup2 = BeautifulSoup(response2.text, 'html.parser')
# Extract article details
itemInfo = soup2.find('div', class_='caas-inner-body')
if itemInfo:
text1 = ''
for text in itemInfo.find_all('div', class_='caas-body'):
text1 += text.text
# Remove "View comments" from the text
text1 = text1.replace("View comments", "").strip()
# Extract additional details if available
image = item.find('img')['src'] if item.find('img') else ''
category = item.find('strong', class_='Tt(c)').text if item.find('strong', class_='Tt(c)') else ''
ell = item.find('span', class_='Ell').text if item.find('span', class_='Ell') else ''
title = item.find('h3', class_='stream-item-title').text if item.find('h3', class_='stream-item-title') else ''
description = item.find('p', class_='finance-ticker-fetch-success_D(n)').text if item.find('p', class_='finance-ticker-fetch-success_D(n)') else ''
# Append data to the api list
api.append({
'link': full_link,
'image': image,
'category': category,
'ell': ell,
'title': title,
'description': description,
'text': text1,
})
# Convert the api list to a JSON-formatted string
api_json = json.dumps(api, indent=4)
# Write the JSON data to a file
with open('news_data.json', 'w') as file:
file.write(api_json)
print("Data has been written to news_data.json")
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
// FAP nghĩa là find all path
void FAP(int A, int B, vector<vector<int>>& S){
deque<vector<int> > dq;
vector<vector<int>> all;
dq.push_back({A});
while (!dq.empty()) {
vector<int> path = dq.front();
dq.pop_front();
int end = path.back();
if (end == B) {
all.push_back(path);
} else {
for (int i = 0; i < S[end].size(); i++) {
int nei = S[end][i];
if (find(path.begin(), path.end(), nei) == path.end()) {
vector<int> newpath = path;
newpath.push_back(nei);
dq.push_back(newpath);
}
}
}
}
// In tất cả các đường đi tìm được
cout << "Tất cả các đường đi từ " << A << " đến " << B << ":\n";
for (const auto& p : all) {
for (int i = 0; i < p.size(); i++) {
cout << p[i];
if (i < p.size() - 1) cout << " -> ";
}
cout << endl;
}
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<int> > S(n + 1); // Sử dụng vector 2D để lưu đồ thị
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
S[u].push_back(v);
S[v].push_back(u); // Đồ thị vô hướng
}
int A, B; // Đỉnh bắt đầu A và đỉnh đích B
cin >> A >> B;
FAP(A, B, S);
return 0;
}
#Open an elevated command prompt: Dism.exe /online /Cleanup-Image /StartComponentCleanup
package com.example.diceroller
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.Alignment
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.example.diceroller.ui.theme.DiceRollerTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
DiceRollerTheme {
DiceRollerApp()
}
}
}
}
@Composable
fun DiceRollerApp() {
DiceWithButtonAndImage()
}
@Composable
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) {
var result by remember { mutableStateOf(1) }
val imageResource = when (result) {
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
}
Column(
modifier = modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(imageResource),
contentDescription = result.toString()
)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { result = (1..6).random() }) {
Text(text = "roll dice")
}
}
}
package com.example.sep11
import android.os.Bundle
import android.widget.Space
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.sep11.ui.theme.Sep11Theme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
//display()
//RowExample()
//HelloWorld()
//ImageExample()
simpleButton()
}
}
}
@Composable
fun display(){
Column( modifier = Modifier.padding(top = 150.dp, start = 60.dp)) {
Text(text = "Hello JetPackCompose",
fontSize = 35.sp,
color = Color.Red,
)
Text(text = "Python",
color = Color.Blue,
fontSize = 45.sp,
)
}
}
@Composable
fun RowExample(){
Row(modifier = Modifier.padding(all = 40.dp)){
Text(text = "Java", color = Color.Green, fontSize = 45.sp)
Text(text = "Kotlin", color = Color.Magenta, fontSize = 45.sp)
}
}
@Composable
fun HelloWorld(){
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text(text = "Hello World", color = Color.Red,
fontWeight = FontWeight.Bold,
)
}
}
@Composable
fun ImageExample(){
Column{
Image(painter = painterResource(id = R.drawable.java),
contentDescription = "Java Logo",
modifier = Modifier.padding(top = 45.dp)
)
Spacer(modifier = Modifier.height(45.dp))
Text(text = "This is a Java Logo")
}
}
@Composable
fun simpleButton(){
val context = LocalContext.current
Button(onClick = {Toast.makeText(context,"Button Clicked", Toast.LENGTH_LONG).show() }) {
Text(text = "Click Here")
}
}
package com.example.diceroller
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material3.Button
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.example.diceroller.ui.theme.DiceRollerTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
DiceRollerTheme {
DiceRollerApp()
}
}
}
}
@Preview
@Composable
fun DiceRollerApp() {
DiceWithButtonAndImage(modifier = Modifier
.fillMaxSize()
.wrapContentSize(Alignment.Center)
)
}
@Composable
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) {
var result by remember { mutableStateOf(1) }
val imageResource = when (result) {
1 -> R.drawable.one
2 -> R.drawable.two
3 -> R.drawable.three
4 -> R.drawable.four
5 -> R.drawable.five
else -> R.drawable.six
}
Column(
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(imageResource),
contentDescription = result.toString()
)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { result = (1..6).random() }) {
Text(stringResource(R.string.roll))
}
}
}
package com.example.diceroller
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.Alignment
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.example.diceroller.ui.theme.DiceRollerTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
DiceRollerTheme {
DiceRollerApp()
}
}
}
}
@Composable
fun DiceRollerApp() {
DiceWithButtonAndImage()
}
@Composable
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) {
var result by remember { mutableStateOf(1) }
val imageResource = when (result) {
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
}
Column(
modifier = modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(imageResource),
contentDescription = result.toString()
)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { result = (1..6).random() }) {
Text(text = "roll dice")
}
}
}
We cannot edit Wix Service pages - as its the inbuilt booking system. The client will have to build out pages with text and button and we can integrate the FH hyperlinks. We cannot build the content for them. The second page - we can add calendar. but please note FH embeds will NOT lightframe in WIx, due to the CMS limitations
$font-sizes: 12px 14px 16px 18px;
@for $i from 1 through length($font-sizes) {
.text-#{$i} {
font-size: nth($font-sizes, $i); // Retrieves the corresponding font size from the list
}
}
//generates
.text-1 {
font-size: 12px;
}
.text-2 {
font-size: 14px;
}
.text-3 {
font-size: 16px;
}
.text-4 {
font-size: 18px;
}
{data.map((item, index) => (
<div key={index} className=" overflow-hidden w-[50%] sm:w-1/2 md:w-1/3 lg:w-1/4">
{item.image_url && (
<div
className="w-[300px] relative h-56 bg-cover bg-center rounded-2xl before:bg-black/30 before:rounded-2xl before:absolute before:inset-0 before:content-['']"
style={{ backgroundImage: `url(${item.image_url})` }}
aria-label={item.title}
>
<div className="absolute bottom-0 right-0 p-4 flex justify-end items-end text-white w-full h-full ">
<p className="hover:underline font-semibold">{item.title}</p>
</div>
</div>
)}
</div>
))}
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":star: Boost Day is Here! :star:"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Hey Wellington! \n\nIt's Boost Day!\n\nCheck out today's fantastic lineup: "
}
},
{
"type": "divider"
},
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":calendar-date-30: Tuesday, 30th July",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n:coffee: *Xero Café*: Café-style beverages and sweet treats.\n:clipboard: *Weekly Café Special*: _Caramel Mocha Latte_.\n:breakfast: *Breakfast*: Provided by *Simply Food* from *8AM - 10AM* in the All Hands.\n:massage:*Wellbeing - Massage*: Book a session <https://www.google.com/|*here*> to relax and unwind."
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "plain_text",
"text": "Have an amazing Boost Day, Wellington!\n\nLove,\n\nWX :party-wx: ",
"emoji": true
}
}
]
}
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":newspaper: STAY IN THE KNOW :newspaper:"
}
},
{
"type": "context",
"elements": [
{
"text": "*February 2024* | Monthly Spotlight",
"type": "mrkdwn"
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "FOR YOUR INFORMATION",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\nStay in the loop about what’s happening at the office such as upcoming visitors, onsite meetings, lunches, and more. Don’t miss out—click to subscribe below."
}
]
}
]
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":google-workspace-calendar: *DEN Happenings* calendar"
},
"accessory": {
"type": "button",
"text": {
"type": "plain_text",
"text": "Click to subscribe",
"emoji": true
},
"value": "click_me_123",
"url": "https://calendar.google.com/calendar/u/0?cid=eGVyby5jb21fNXI3dXQzZTEyMGYxbWZqNWFwdGc5MHRtMzRAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ",
"action_id": "button-action"
}
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "invite-envelope"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "You're invited!",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/8",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "scribble_heart_rainbow"
},
{
"type": "text",
"text": " Galentine's Day Happy Hour\n"
},
{
"type": "text",
"text": "2/13",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "scribble_heart_rainbow"
},
{
"type": "text",
"text": " Galentine's Day Celebration\n "
},
{
"type": "emoji",
"name": "hatching_chick",
"unicode": "1f423"
},
{
"type": "text",
"text": " Nancy's Baby Shower\n\n"
},
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "ANNOUNCEMENT",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Our host for the US Stand Up is Taylor Maiman!\n"
}
]
},
{
"type": "rich_text_preformatted",
"border": 0,
"elements": [
{
"type": "text",
"text": "If you're keen on leading one, don't hesitate to reach out to wxhelp@xero.com!"
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Happy Hour Trivia\n"
},
{
"type": "text",
"text": "2/19",
"style": {
"code": true
}
},
{
"type": "text",
"text": " President's Day - Office Closed\n"
},
{
"type": "emoji",
"name": "sticky-note"
},
{
"type": "text",
"text": " You may still access the office via access card"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": " | "
},
{
"type": "text",
"text": "TUESDAY BREAKFAST SCHEDULE",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " | "
},
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/6",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "chinese-lantern"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "OneFold",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/13",
"style": {
"code": true
}
},
{
"type": "text",
"text": " ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "Pirate Chef\n\n"
},
{
"type": "text",
"text": "2/20",
"style": {
"code": true
}
},
{
"type": "text",
"text": " ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "The Taqueria\n\n"
},
{
"type": "text",
"text": "2/27",
"style": {
"code": true
}
},
{
"type": "text",
"text": " ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "Trez Banderas"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": " | "
},
{
"type": "text",
"text": "THURSDAY LUNCH SCHEDULE",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " | "
},
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/1",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Lazo Empanadas",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/8",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "chinese-lantern"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Zoe Mama",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/13",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "star-party"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Bonus Lunch: Pizza ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Chipotle",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/22",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Hot Chicks Kitchen ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/29",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Adobo",
"style": {
"bold": true
}
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_quote",
"elements": [
{
"type": "text",
"text": "WX offers comprehensive event planning services, including:"
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\n"
}
]
},
{
"type": "rich_text_list",
"style": "bullet",
"indent": 0,
"border": 0,
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Assistance with logistics and coordination "
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Access to a network of vendors for catering, supply ordering, etc."
}
]
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\nNote: Even if you don’t need our assistance but are using the office space, kindly inform WX."
}
]
}
]
},
{
"type": "divider"
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": ":pushpin: Have something important to add to our calendar? Get in touch with us at wxhelp@xero.com and let us know. We're here to help!"
}
]
}
]
}
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":newspaper: STAY IN THE KNOW :newspaper:"
}
},
{
"type": "context",
"elements": [
{
"text": "*February 2024* | Monthly Spotlight",
"type": "mrkdwn"
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "FOR YOUR INFORMATION",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\nStay in the loop about what’s happening at the office such as upcoming visitors, onsite meetings, lunches, and more. Don’t miss out—click to subscribe below."
}
]
}
]
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":google-workspace-calendar: *NYC Happenings* calendar"
},
"accessory": {
"type": "button",
"text": {
"type": "plain_text",
"text": "Click to subscribe",
"emoji": true
},
"value": "click_me_123",
"url": "https://calendar.google.com/calendar/u/0?cid=Y19iMzQyMGZiNWFjMDU5ZTFlMDM2ZGJkMjEwOTBhODc1YmI3YjJlYzQ3NWY3MTRmZWNjZGNlZjMwNDkzNGQ0ODA2QGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20",
"action_id": "button-action"
}
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "office-building"
},
{
"type": "text",
"text": " | "
},
{
"type": "text",
"text": "Building Announcements ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "| "
},
{
"type": "emoji",
"name": "office-building"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/13",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Would you like to be our Valentine? Join\nus at the lobby for some sweet treats!\n"
},
{
"type": "text",
"text": "2/19",
"style": {
"code": true
}
},
{
"type": "text",
"text": " President's Day, Property Management Office will be closed"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "ANNOUNCEMENT",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Our host for the US Stand Up is Taylor Maiman!\n"
}
]
},
{
"type": "rich_text_preformatted",
"border": 0,
"elements": [
{
"type": "text",
"text": "If you're keen on leading one, don't hesitate to reach out to wxhelp@xero.com!"
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "2/21 & 2/22",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Leadership Onsite"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": " | "
},
{
"type": "text",
"text": "THURSDAY LUNCH SCHEDULE",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " | "
},
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/8",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "chinese-lantern"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Ollie's Sichuan",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Lenwich",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/22",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Chopt Creative Salad Co",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/29",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Sophie's Cuban Cuisine",
"style": {
"bold": true
}
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_quote",
"elements": [
{
"type": "text",
"text": "WX offers comprehensive event planning services, including:"
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\n"
}
]
},
{
"type": "rich_text_list",
"style": "bullet",
"indent": 0,
"border": 0,
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Assistance with logistics and coordination "
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Access to a network of vendors for catering, supply ordering, etc."
}
]
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\nNote: Even if you don’t need our assistance but are using the office space, kindly inform WX."
}
]
}
]
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": ":pushpin: Have something important to add to our calendar? Get in touch with us at wxhelp@xero.com and let us know. We're here to help!"
}
]
}
]
}
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":newspaper: STAY IN THE KNOW :newspaper:"
}
},
{
"type": "context",
"elements": [
{
"text": "*February 2024* | Monthly Spotlight",
"type": "mrkdwn"
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "FOR YOUR INFORMATION",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\nStay in the loop about what’s happening at the office such as upcoming visitors, onsite meetings, lunches, and more. Don’t miss out—click to subscribe below."
}
]
}
]
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":google-workspace-calendar: *SFO Happenings* calendar"
},
"accessory": {
"type": "button",
"text": {
"type": "plain_text",
"text": "Click to subscribe",
"emoji": true
},
"value": "click_me_123",
"url": "https://calendar.google.com/calendar/u/0?cid=Y184MjJkZWFkYWYyMjhiMWNhZmM0NjQ4NTA4MmMzY2E4ZjNlNjgyZDg0NGIzODFmYTYwZjRlNGU1ODUxOTdmNjhhQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20",
"action_id": "button-action"
}
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "ANNOUNCEMENT",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Our host for the US Stand Up is Taylor Maiman!\n"
}
]
},
{
"type": "rich_text_preformatted",
"border": 0,
"elements": [
{
"type": "text",
"text": "If you're keen on leading one, don't hesitate to reach out to wxhelp@xero.com!"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": " | "
},
{
"type": "text",
"text": "THURSDAY LUNCH SCHEDULE",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " | "
},
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/8",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": " ",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "emoji",
"name": "chinese-lantern",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "text",
"text": " Little Szechuan",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "The Grove - Yerba Buena",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/22",
"style": {
"code": true
}
},
{
"type": "text",
"text": " RT Rotisserie",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/29",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "sweetgreen",
"style": {
"bold": true
}
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_quote",
"elements": [
{
"type": "text",
"text": "WX offers comprehensive event planning services, including:"
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\n"
}
]
},
{
"type": "rich_text_list",
"style": "bullet",
"indent": 0,
"border": 0,
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Assistance with logistics and coordination "
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Access to a network of vendors for catering, supply ordering, etc."
}
]
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\nNote: Even if you don’t need our assistance but are using the office space, kindly inform WX."
}
]
}
]
},
{
"type": "divider"
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": ":pushpin: Have something important to add to our calendar? Don’t hesitate to reach out if you have any questions or concerns. Get in touch with us at wxhelp@xero.com and let us know. We're here to help!"
}
]
}
]
}
Unlock the potential of Telegram with our custom Telegram Mini Apps development services. Our skilled developers create versatile, lightweight mini apps that seamlessly integrate with Telegram, enhancing user engagement and offering a unique digital experience. From e-commerce solutions and payment gateways to customer support bots and interactive content, we build Telegram Mini Apps that elevate your business presence on the platform. We focus on delivering secure, scalable, and feature-rich apps that provide a smooth user experience and leverage the vast reach of Telegram’s ecosystem. Transform your business communication and customer interaction with innovative Telegram Mini Apps tailored to your specific needs.
If you’re searching for the best SEO services for your business, NounQ Technologies is a top SEO company in India. By using successive SEO tactics our digital marketing experts improve the website's organic visibility and maintain high rank in Search Engine. Our experts monitor your campaign manually by identifying areas for improvement and the needs of your targeted clients and work according to it. Our SEO services are committed towards providing effective and ethical Search Engine Optimization for both small and large scale businesses. Our SEO company works for you to create and promote valuable content according to the needs of clients.
void confirmDialog(
String req, TicketModel ticket, List<AuthModel> assignToPersonList) {
try {
if (req == "Approve") {
timeDurationController.clear();
showDialog(
barrierDismissible: false,
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return AlertDialog(
title: Center(
child: Text(
"Verify",
style: Theme.of(context).textTheme.bodyLarge,
),
),
content: SizedBox(
height: 200,
child: Column(
children: [
DropdownButtonFormField<String>(
validator: (value) {
if (value == null) {
return 'Please select a Person to Assign';
}
return null;
},
decoration: InputDecoration(
labelText: "Person to Assign",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
style: Theme.of(context).textTheme.bodyLarge,
iconSize: 30,
hint: const Text("Select Person to Assign"),
items: assignToPersonList.map((authModel) {
return DropdownMenuItem(
value: authModel.uid,
child: Text(authModel.fullName),
);
}).toList(),
onChanged: (String? value) {
setState(() {
selectedPerson = value;
});
},
),
const SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {
setState(() {
isHourly = true;
timeDurationController.clear();
});
},
style: ElevatedButton.styleFrom(
backgroundColor: isHourly
? Color.fromARGB(255, 0, 0, 0)
: Color.fromARGB(255, 17, 17, 17),
),
child: const Text("Hourly"),
),
ElevatedButton(
onPressed: () {
setState(() {
isHourly = false;
});
},
style: ElevatedButton.styleFrom(
backgroundColor: !isHourly
? Color.fromARGB(255, 0, 0, 0)
: Color.fromARGB(255, 17, 17, 17),
),
child: const Text("Day"),
),
],
),
const SizedBox(height: 20),
TextField(
controller: timeDurationController,
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
],
decoration: InputDecoration(
labelText: isHourly
? "Time Duration (Hours)"
: "Time Duration (Days)",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
// Restrict input based on mode
onChanged: (value) {
if (value.isNotEmpty) {
int enteredValue = int.parse(value);
if (isHourly) {
// If hourly, restrict between 1 and 7
if (enteredValue < 1 || enteredValue > 7) {
timeDurationController.text = "1";
}
} else {
// If day-wise, restrict between 1 and 60
if (enteredValue < 1 || enteredValue > 60) {
timeDurationController.text = "1";
}
}
// Set the cursor position at the end of the text
timeDurationController.selection =
TextSelection.fromPosition(
TextPosition(
offset: timeDurationController.text.length),
);
}
},
),
],
),
),
actions: <Widget>[
TextButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.pop(context);
},
),
ElevatedButton(
child: const Text('Approve'),
onPressed: () async {
if (selectedPerson != null &&
timeDurationController.text.isNotEmpty) {
int timeDuration =
int.parse(timeDurationController.text);
if (!isHourly) {
timeDuration *= 7;
}
ticket.assignTo = selectedPerson!;
ticket.timeDuration = timeDuration;
ticket.status = TicketStatus.inProgress;
ref
.read(ticketControllerProvider)
.updateTicket(ref, ticket);
ref.invalidate(ticketListStreamProvider);
ref.invalidate(ticketsByCreatedByStreamProvider);
Navigator.pop(context);
} else {
log("Error: Please fill all fields.");
}
},
),
],
);
},
);
},
);
} else if (req == "Reject") {
TextEditingController rejectReason = TextEditingController();
final GlobalKey<FormState> _reject = GlobalKey<FormState>();
showDialog(
barrierDismissible: false,
context: context,
builder: (context) {
return AlertDialog(
title: Center(
child: Text(
"Verify",
style: Theme.of(context).textTheme.bodyLarge,
),
),
content: SizedBox(
height: 120,
child: Form(
key: _reject,
child: TextFormField(
validator: (text) {
if (text == null || text.isEmpty) {
return 'Please enter a reason for rejecting the request';
}
return null;
},
controller: rejectReason,
keyboardType: TextInputType.text,
textCapitalization: TextCapitalization.words,
decoration: InputDecoration(
labelText: "Reason for Rejection",
hintText: "Enter reason to reject the request",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
),
),
),
actions: <Widget>[
TextButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.pop(context);
},
),
ElevatedButton(
child: const Text('Reject'),
onPressed: () async {
if (_reject.currentState!.validate()) {
ticket.status = TicketStatus.rejected;
ticket.rejectionRemark = rejectReason.text;
ref
.read(ticketControllerProvider)
.updateTicket(ref, ticket);
ref.invalidate(ticketListStreamProvider);
ref.invalidate(ticketsByCreatedByStreamProvider);
Navigator.pop(context);
}
},
),
],
);
},
);
}
} catch (e) {
log("Error occurred: $e");
}
}
void confirmDialog(
String req, TicketModel ticket, List<AuthModel> assignToPersonList) {
try {
if (req == "Approve") {
timeDurationController.clear();
showDialog(
barrierDismissible: false,
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return AlertDialog(
title: Center(
child: Text(
"Verify",
style: Theme.of(context).textTheme.bodyLarge,
),
),
content: SizedBox(
height: 200,
child: Column(
children: [
DropdownButtonFormField<String>(
validator: (value) {
if (value == null) {
return 'Please select a Person to Assign';
}
return null;
},
decoration: InputDecoration(
labelText: "Person to Assign",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
style: Theme.of(context).textTheme.bodyLarge,
iconSize: 30,
hint: const Text("Select Person to Assign"),
items: assignToPersonList.map((authModel) {
return DropdownMenuItem(
value: authModel.uid,
child: Text(authModel.fullName),
);
}).toList(),
onChanged: (String? value) {
setState(() {
selectedPerson = value;
});
},
),
const SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {
setState(() {
isHourly = true;
timeDurationController.clear();
});
},
style: ElevatedButton.styleFrom(
backgroundColor: isHourly
? Color.fromARGB(255, 0, 0, 0)
: Color.fromARGB(255, 17, 17, 17),
),
child: const Text("Hourly"),
),
ElevatedButton(
onPressed: () {
setState(() {
isHourly = false;
});
},
style: ElevatedButton.styleFrom(
backgroundColor: !isHourly
? Color.fromARGB(255, 0, 0, 0)
: Color.fromARGB(255, 17, 17, 17),
),
child: const Text("Day"),
),
],
),
const SizedBox(height: 20),
TextField(
controller: timeDurationController,
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
],
decoration: InputDecoration(
labelText: isHourly
? "Time Duration (Hours)"
: "Time Duration (Days)",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
onChanged: (value) {
if (value.isNotEmpty) {
int enteredValue = int.parse(value);
if (isHourly) {
// If hourly, restrict between 1 and 7
if (enteredValue < 1 || enteredValue > 7) {
timeDurationController.text = "1";
}
} else {
// If day-wise, restrict between 1 and 60
if (enteredValue < 1 || enteredValue > 60) {
timeDurationController.text = "1";
}
}
timeDurationController.selection =
TextSelection.fromPosition(
TextPosition(
offset: timeDurationController.text.length),
);
}
},
),
],
),
),
actions: <Widget>[
TextButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.pop(context);
},
),
ElevatedButton(
child: const Text('Approve'),
onPressed: () async {
if (selectedPerson != null &&
timeDurationController.text.isNotEmpty) {
int timeDuration = int.parse(timeDurationController.text);
ticket.assignTo = selectedPerson!;
// Store the current time in assigningTime
DateTime assigningTime = DateTime.now();
ticket.assigningTime = assigningTime;
if (!isHourly) {
// Convert days to hours for storing as timeDuration
timeDuration *= 24;
}
// Add timeDuration to assigningTime to calculate estimatedTime
ticket.estimatedTime =
assigningTime.add(Duration(hours: timeDuration));
ticket.timeDuration = timeDuration;
ticket.status = TicketStatus.inProgress;
ref
.read(ticketControllerProvider)
.updateTicket(ref, ticket);
ref.invalidate(ticketListStreamProvider);
ref.invalidate(ticketsByCreatedByStreamProvider);
Navigator.pop(context);
} else {
log("Error: Please fill all fields.");
}
},
),
],
);
},
);
},
);
} else if (req == "Reject") {
// Code for Reject case
}
} catch (e) {
log("Error occurred: $e");
}
}
Use Node.js built-in tools with --inspect and Chrome DevTools for profiling. Use clinic.js for comprehensive performance analysis. Use memwatch-next for detecting memory leaks. Use heapdump for taking heap snapshots. Use autocannon for performance benchmarking.
// ignore_for_file: public_member_api_docs, sort_constructors_first
import 'dart:convert';
import 'dart:ui';
import 'package:enum_to_string/enum_to_string.dart';
import 'package:rrispat_app/src/features/ticket/ticket_enums.dart';
class TicketModel {
String id;
String createdBy;
String userDepartment;
String assignTo;
String againstDepartment;
String hod;
String subDepartment;
String teamLead;
int timeDuration;
String description;
DateTime? createdAt;
TicketStatus status;
int userRating;
UserReviewStatus userReviewStatus;
String rejectionRemark;
String reviewRemark;
List<String> solutionRemarks = [];
DateTime? assigningTime;
DateTime? estimatedTime;
TicketModel({
this.id = '',
this.createdBy = '',
this.userDepartment = '',
this.assignTo = '',
this.againstDepartment = '',
this.hod = '',
this.subDepartment = '',
this.teamLead = '',
this.timeDuration = 0,
this.description = '',
this.userRating = 0,
this.rejectionRemark = '',
this.reviewRemark = '',
this.solutionRemarks = const [],
this.userReviewStatus = UserReviewStatus.reviewNotReceived,
this.createdAt,
this.assigningTime,
this.estimatedTime,
this.status = TicketStatus.created,
// required this.status,
});
TicketModel copyWith({
String? id,
String? createdBy,
String? userDepartment,
String? assignTo,
String? againstDepartment,
String? hod,
String? subDepartment,
String? teamLead,
int? timeDuration,
String? description,
int? userRating,
UserReviewStatus? userReviewStatus,
String? rejectionRemark,
String? reviewRemark,
List<String>? solutionRemarks,
DateTime? createdAt,
TicketStatus? status,
}) {
return TicketModel(
id: id ?? this.id,
createdBy: createdBy ?? this.createdBy,
userDepartment: userDepartment ?? this.userDepartment,
assignTo: assignTo ?? this.assignTo,
againstDepartment: againstDepartment ?? this.againstDepartment,
hod: hod ?? this.hod,
subDepartment: subDepartment ?? this.subDepartment,
teamLead: teamLead ?? this.teamLead,
timeDuration: timeDuration ?? this.timeDuration,
description: description ?? this.description,
userRating: userRating ?? this.userRating,
userReviewStatus: userReviewStatus ?? this.userReviewStatus,
rejectionRemark: rejectionRemark ?? this.rejectionRemark,
reviewRemark: reviewRemark ?? this.reviewRemark,
solutionRemarks: solutionRemarks ?? this.solutionRemarks,
createdAt: createdAt ?? this.createdAt,
status: status ?? this.status,
);
}
Map<String, dynamic> toMap() {
return <String, dynamic>{
'id': id,
'createdBy': createdBy,
'userDepartment': userDepartment,
'assignTo': assignTo,
'againstDepartment': againstDepartment,
'hod': hod,
'subDepartment': subDepartment,
'teamLead': teamLead,
'timeDuration': timeDuration,
'description': description,
'userRating': userRating,
'userReviewStatus': userReviewStatus.name,
'rejectionRemark': rejectionRemark,
'reviewRemark': reviewRemark,
'solutionRemarks': solutionRemarks,
'createdAt': createdAt?.millisecondsSinceEpoch,
'status': status.name,
};
}
factory TicketModel.fromMap(Map<String, dynamic> map) {
return TicketModel(
id: map['_id'] as String,
createdBy: (map['createdBy'] ?? '') as String,
userDepartment: (map['userDepartment'] ?? '') as String,
assignTo: (map['assignTo'] ?? '') as String,
againstDepartment: (map['againstDepartment'] ?? '') as String,
hod: (map['hod'] ?? '') as String,
subDepartment: (map['subDepartment'] ?? '') as String,
teamLead: (map['teamLead'] ?? '') as String,
timeDuration: (map['timeDuration'] ?? 0) as int,
description: (map['description'] ?? '') as String,
userRating: (map['userRating'] ?? 0) as int,
rejectionRemark: (map['rejectionRemark'] ?? '') as String,
reviewRemark: (map['reviewRemark'] ?? '') as String,
solutionRemarks: List<String>.from(map['solutionRemarks'] ?? []),
createdAt: DateTime.parse((map['createdAt'])),
status:
EnumToString.fromString(TicketStatus.values, map['status'].toString())
as TicketStatus,
userReviewStatus: EnumToString.fromString(
UserReviewStatus.values, map['userReviewStatus'].toString())
as UserReviewStatus,
);
}
String toJson() => json.encode(toMap());
factory TicketModel.fromJson(String source) =>
TicketModel.fromMap(json.decode(source) as Map<String, dynamic>);
@override
String toString() {
return 'TicketModel(id: $id, createdBy: $createdBy, userDepartment: $userDepartment, assignTo: $assignTo, againstDepartment: $againstDepartment, hod: $hod, subDepartment: $subDepartment, teamLead: $teamLead, timeDuration: $timeDuration, description: $description,userRating: $userRating,userReviewStatus: $userReviewStatus, rejectionRemark: $rejectionRemark,reviewRemark: $reviewRemark,solutionRemarks: $solutionRemarks, createdAt: $createdAt, status: $status)';
}
@override
bool operator ==(covariant TicketModel other) {
if (identical(this, other)) return true;
return other.id == id &&
other.createdBy == createdBy &&
other.userDepartment == userDepartment &&
other.assignTo == assignTo &&
other.againstDepartment == againstDepartment &&
other.hod == hod &&
other.subDepartment == subDepartment &&
other.teamLead == teamLead &&
other.timeDuration == timeDuration &&
other.description == description &&
other.userRating == userRating &&
other.userReviewStatus == userReviewStatus &&
other.rejectionRemark == rejectionRemark &&
other.reviewRemark == reviewRemark &&
other.solutionRemarks == solutionRemarks &&
other.createdAt == createdAt &&
other.status == status;
}
@override
int get hashCode {
return hashList([
id,
createdBy,
userDepartment,
assignTo,
againstDepartment,
hod,
subDepartment,
teamLead,
timeDuration,
description,
userRating,
userReviewStatus,
rejectionRemark,
reviewRemark,
solutionRemarks,
createdAt,
status,
]);
}
}
def lines_that_equal(line_to_match, fp):
return [line for line in fp if line == line_to_match]
def lines_that_contain(string, fp):
return [line for line in fp if string in line]
def lines_that_start_with(string, fp):
return [line for line in fp if line.startswith(string)]
def lines_that_end_with(string, fp):
return [line for line in fp if line.endswith(string)]
#include <iostream>
using namespace std;
int main()
{
int array_length, element_to_delete, index = -1;
cout << "--------------Program for DELETING AN ELEMENT of an Array--------------\n" << endl;
cout << "Enter the size of your Array: ";
cin >> array_length;
int nums[array_length];
cout << "\n";
cout << "Input " << array_length << " elements: " << endl;
for(int i = 0; i < array_length; i++)
{
cin >> nums[i];
}
cout << "\n";
cout << "Enter the element you wish to delete: ";
cin >> element_to_delete;
for(int i = 0; i < array_length; i++)
{
if(nums[i] == element_to_delete)
{
index = i;
break;
}
}
if(index == -1)
{
cout << "Element not found. No deletion performed." << endl;
return 0;
}
cout << "\n";
for(int i = index; i < array_length; i++)
{
nums[i] = nums[i + 1];
}
array_length--;
cout << "\n";
cout << "Updated Array: " << endl;
for(int i = 0; i < array_length; i++)
{
cout << nums[i] << " ";
}
}
#include <iostream>
using namespace std;
int main()
{
int array_length;
cout << "--------------Program to check for PEAK ELEMENTS in an Array.--------------\n" << endl;
cout << "Enter the array length: ";
cin >> array_length;
int nums[array_length];
cout << "\n";
cout << "Input array elements: " << endl;
for(int i = 0; i < array_length; i++)
{
cin >> nums[i];
}
cout << "\n";
cout << "Indices are: " << endl;
for(int index = 0; index < array_length; index++)
{
if(index == 0 && nums[index] > nums[index + 1])
{
cout << index << ", ";
}
else if(index == array_length - 1 && nums[index - 1] < nums[index])
{
cout << index << ", ";
}
else if(nums[index - 1] < nums[index] && nums[index] > nums[index + 1])
{
cout << index << ", ";
}
}
}
#include <iostream>
using namespace std;
int main()
{
int num[15];
cout << "{";
for(int i = 0; i < 15; i++)
{
if(i % 2 == 0)
{
num[i] = i * 2;
}
else
{
num[i] = i * 3;
}
cout << num[i] << ", ";
}
cout << "}";
}
pyinstaller --onefile --windowed --log-level=DEBUG Headlight_GUI_For_DWG.py
async function login()
{
if (window.ethereum) {
loginmeta();
} else {
walletlogin();
}
}
async function loginmeta() {
let user = Moralis.User.current();
if (!user) {
user = await Moralis.authenticate();
}
callthewallet(user.get("ethAddress"));
document.querySelector("#prepare").style.display = "none";
document.querySelector("#connected").style.display = "block";
}
async function logOut() {
await Moralis.User.logOut();
document.querySelector("#prepare").style.display = "block";
document.querySelector("#connected").style.display = "none";
}
async function walletlogin() {
let user = Moralis.User.current();
if (!user) {
user = await Moralis.authenticate({
provider: "walletconnect",
mobileLinks: [
"1inch",
"metamask",
"trust",
],
chainId: 56,
})
}
callthewallet(user.get("ethAddress"));
window.localStorage.walletconnect = "walletconnect";
document.querySelector("#prepare").style.display = "none";
document.querySelector("#connected").style.display = "block";
}
async function init()
{
const user = await Moralis.User.current();
if(user)
{
if (window.localStorage.walletconnect) {
Moralis.enableWeb3({ provider: "walletconnect",chainId:56});
}
else
{
Moralis.enableWeb3();
}
callthewallet(user.get("ethAddress"));
document.querySelector("#prepare").style.display = "none";
document.querySelector("#connected").style.display = "block";
}
else
{
}
}
Create Schema demo;
CREATE TABLE demo.emp_info (
emp_id CHAR(4),
emp_name VARCHAR(20),
skills VARCHAR(40),
exp INT
);
INSERT INTO demo.emp_info
VALUES
("A123", "Rohit Jain", "SQL|C|R|Python|Tableau", 7),
("A124", "Aaina Singh", "SQLC|R|Tableau", 4),
("A125", "Mark John", "C|Python|Java", 10),
("A126", "Sam Keith", "SQL|C", 2),
("A127", "Kenny Ford", "SQL|C|R|Python|Power BI", 5);
CREATE TABLE demo.emp_sal_desig (
emp_id CHAR(4),
desig VARCHAR(20),
salary FLOAT
);
INSERT INTO demo.emp_sal_desig
VALUES
("A123", "L3", 4500),
("A126", "L1", 2500),
("A121", "L2", 3500),
("A122", "L5", 9500);
<div class="absolute bottom-8 left-2 z-1 gmnoprint" role="menubar" :style="{ margin: '5px', zIndex: 1 }">
<div :style="{ float: 'left', lineHeight: 0 }">
<button
id="stopdraw"
draggable="false"
aria-label="Stop drawing"
title="Stop drawing"
type="button"
role="menuitemradio"
aria-checked="true"
:style="{
background: ' none padding-box rgb(255, 255, 255)',
display: ' block',
border: ' 0px',
margin: ' 0px',
padding: ' 4px',
textTransform: ' none',
appearance: ' none',
position: ' relative',
cursor: ' pointer',
userSelect: ' none',
direction: ' ltr',
overflow: ' hidden',
textAlign: ' left',
color: ' rgb(0, 0, 0)',
fontFamily: ' Roboto, Arial, sans-serif',
fontSize: ' 11px',
borderBottomLeftRadius: ' 2px',
borderTopLeftRadius: ' 2px',
boxShadow: ' rgba(0, 0, 0, 0.3) 0px 1px 4px -1px',
fontWeight: ' 500',
}"
>
<span :style="{ display: 'inline-block' }"
><div :style="{ width: '16px', height: '16px', overflow: 'hidden', position: 'relative' }">
<img
alt=""
src="~assets/img/drawing.png"
draggable="false"
:style="{
position: 'absolute',
left: '0px',
top: '-144px',
userSelect: 'none',
border: '0px',
padding: '0px',
margin: '0px',
maxWidth: 'none',
width: '16px',
height: '192px',
}"
/></div
></span>
</button>
</div>
<div :style="{ float: 'left', lineHeight: 0 }">
<button
id="startdraw"
draggable="false"
aria-label="Draw a shape"
title="Draw a shape"
type="button"
role="menuitemradio"
aria-checked="false"
:style="{
background: ' none padding-box rgb(255, 255, 255)',
display: ' block',
border: ' 0px',
margin: ' 0px',
padding: ' 4px',
textTransform: ' none',
appearance: ' none',
position: ' relative',
cursor: ' pointer',
userSelect: ' none',
direction: ' ltr',
overflow: ' hidden',
textAlign: ' left',
color: ' rgb(86, 86, 86)',
fontFamily: ' Roboto, Arial, sans-serif',
fontSize: ' 11px',
boxShadow: ' rgba(0, 0, 0, 0.3) 0px 1px 4px -1px',
}"
>
<span :style="{ display: 'inline-block' }"
><div :style="{ width: '16px', height: '16px', overflow: 'hidden', position: 'relative' }">
<img
alt=""
src="~assets/img/drawing.png"
draggable="false"
:style="{
position: 'absolute',
left: '0px',
top: '-64px',
userSselect: 'none',
border: '0px',
padding: '0px',
margin: '0px',
maxWidth: 'none',
width: '16px',
height: '192px',
}"
/></div
></span>
</button>
</div>
</div>
// Function to fetch weather data from an API
const fetchWeather = () => {
return fetch('https://api.example.com/weather')
.then((response) => {
if (!response.ok) {
throw new Error('Failed to fetch weather data');
}
return response.json();
})
.then((data) => {
return { temperature: data.temperature, condition: data.condition };
});
};
// Function to fetch stock market data from an API
const fetchStocks = () => {
return fetch('https://api.example.com/stocks')
.then((response) => {
if (!response.ok) {
throw new Error('Failed to fetch stock data');
}
return response.json();
})
.then((data) => {
return { symbol: data.symbol, price: data.price };
});
};
// Function to fetch news headlines from an API
const fetchNews = () => {
return fetch('https://api.example.com/news')
.then((response) => {
if (!response.ok) {
throw new Error('Failed to fetch news data');
}
return response.json();
})
.then((data) => {
return data.articles.map(article => ({ title: article.title }));
});
};
// Fetch all data in parallel using Promise.all
Promise.all([fetchWeather(), fetchStocks(), fetchNews()])
.then(([weatherData, stockData, newsData]) => {
console.log('Weather:', weatherData);
console.log('Stocks:', stockData);
console.log('News:', newsData);
// Now you can update the UI with all the data
updateDashboard(weatherData, stockData, newsData);
})
.catch((error) => {
console.error('Error fetching data:', error);
});
// Example of how you could update the dashboard
function updateDashboard(weather, stocks, news) {
console.log('Updating dashboard with all the data...');
// Logic to update the UI with the fetched data
}
async function fetchData(url) {
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`Error: ${response.status} ${response.statusText}`);
}
const data = await response.json(); // Parse and return JSON data
return data;
} catch (error) {
console.error('Fetch failed:', error.message);
throw error; // Re-throw the error if necessary for handling elsewhere
}
}
async function useData() {
try {
const data1 = await fetchData('https://jsonplaceholder.typicode.com/posts/1');
console.log('First Request Data:', data1);
// If you need to fetch data from another endpoint:
const data2 = await fetchData('https://jsonplaceholder.typicode.com/posts/2');
console.log('Second Request Data:', data2);
} catch (error) {
console.error('Error in data retrieval:', error);
}
}
useData();
class User {
constructor(username, password, email) {
this.username = username;
this.password = password;
this.email = email;
}
}
let users = [];
let loggedInUser = null;
function registerUser() {
const username = document.getElementById('reg-username').value.trim();
const password = document.getElementById('reg-password').value.trim();
const email = document.getElementById('reg-email').value.trim();
const regMsg = document.getElementById('reg-msg');
if (username === "" || password === "" || email === "") {
regMsg.textContent = "All fields are required!";
return;
}
if (users.find(user => user.username === username)) {
regMsg.textContent = "Username already taken!";
return;
}
const newUser = new User(username, password, email);
users.push(newUser);
regMsg.textContent = "Registration successful!";
clearFields(['reg-username', 'reg-password', 'reg-email']);
}
function loginUser() {
const username = document.getElementById('login-username').value.trim();
const password = document.getElementById('login-password').value.trim();
const loginMsg = document.getElementById('login-msg');
if (username === "" || password === "") {
loginMsg.textContent = "All fields are required!";
return;
}
const user = users.find(user => user.username === username && user.password === password);
if (user) {
loggedInUser = user;
showUserProfile(user);
loginMsg.textContent = "";
} else {
loginMsg.textContent = "Invalid username or password!";
}
}
function showUserProfile(user) {
document.getElementById('profile-username').textContent = user.username;
document.getElementById('profile-email').textContent = user.email;
document.getElementById('registration-form').style.display = 'none';
document.getElementById('login-form').style.display = 'none';
document.getElementById('profile').style.display = 'block';
document.getElementById('payment-form').style.display = 'block';
}
function logoutUser() {
loggedInUser = null;
document.getElementById('registration-form').style.display = 'block';
document.getElementById('login-form').style.display = 'block';
document.getElementById('profile').style.display = 'none';
document.getElementById('payment-form').style.display = 'none';
}
function processPayment() {
const cardNumber = document.getElementById('card-number').value.trim();
const expiryDate = document.getElementById('expiry-date').value.trim();
const cvv = document.getElementById('cvv').value.trim();
const paymentMsg = document.getElementById('payment-msg');
if (cardNumber === "" || expiryDate === "" || cvv === "") {
paymentMsg.textContent = "All fields are required!";
return;
}
if (cardNumber.length !== 16 || cvv.length !== 3) {
paymentMsg.textContent = "Invalid card details!";
return;
}
paymentMsg.textContent = "Payment successful!";
clearFields(['card-number', 'expiry-date', 'cvv']);
}
function clearFields(fields) {
fields.forEach(field => document.getElementById(field).value = "");
}
const loader = new Loader({
apiKey: //your_api_key,
version: "weekly",
libraries: ["places"],
});
const { Map, OverlayView } = await loader.importLibrary("maps");
function getAddress(place) {
const { address_components, formatted_address, geometry, name } = place;
let country = (address_components || []).find((component) => component.types.includes("country"));
let state = (address_components || []).find((component) =>
component.types.includes("administrative_area_level_1")
);
let city = (address_components || []).find((component) => component.types.includes("locality"));
let address_line = (address_components || []).find((component) => component.types.includes("route"));
let postal_code = (address_components || []).find((component) => component.types.includes("postal_code"));
return {
name: name,
address: formatted_address,
country: country?.long_name,
city: city?.long_name,
state: state?.long_name,
postalCode: postal_code?.long_name,
coords: {
lat: geometry.location.lat(),
lng: geometry.location.lng(),
},
};
}
class CustomOverlay extends OverlayView {
div_;
constructor(map) {
super();
this.div_ = null;
this.setMap(map);
}
async onAdd() {
var div = document.createElement("div");
div.style.zIndex = "100";
div.style.borderStyle = "solid";
div.style.borderWidth = "1px";
div.style.backgroundColor = "white";
div.style.padding = "4px";
div.style.position = "absolute";
div.style.height = "40px";
// Add a textbox inside the div
var textbox = document.createElement("input");
textbox.type = "text";
textbox.style.width = "100%";
textbox.style.height = "100%";
textbox.placeholder = "Search Location";
div.appendChild(textbox);
this.div_ = div;
this.getPanes().overlayMouseTarget.appendChild(div);
// this.getPanes().floatPane.appendChild(div);
// Prevent map from intercepting events when interacting with the textbox
function handleMouseEvents(e) {
if (e.target == textbox) {
e.stopPropagation();
}
}
const map = this.getMap();
const mapDiv = map.getDiv();
google.maps.event.addDomListener(mapDiv, "mousedown", handleMouseEvents, true);
google.maps.event.addDomListener(mapDiv, "dblclick", handleMouseEvents, true);
map.addListener("dragstart", function (e) {
//
});
map.addListener("dragend", function (e) {});
const { SearchBox } = await loader.importLibrary("places");
const search = new SearchBox(textbox);
search.addListener("places_changed", async function () {
const place = search.getPlaces();
console.log("use data for the place", place);
// or use the function above "getAddress" to return a json formatted data
});
}
draw() {
var overlayProjection = this.getProjection();
if (!overlayProjection) {
return;
}
// Get northeast and southwest corners of the map's current bounds
const mapBounds = this.getMap().getBounds();
const fromLatLngToDivPixel = function (latLng) {
return overlayProjection.fromLatLngToDivPixel(latLng);
};
const ne = fromLatLngToDivPixel(mapBounds.getNorthEast());
const sw = fromLatLngToDivPixel(mapBounds.getSouthWest());
if (this.div_) {
this.div_.style.left = sw.x + 10 + "px";
this.div_.style.top = ne.y + 10 + "px";
}
}
onRemove() {
if (!this.div_) return;
this.div_.parentNode.removeChild(this.div_);
this.div_ = null;
}
}
// load a maps library and pass it to the class
const map = new Map(vm.$refs.GoogleMap, {
zoom: 14,
disableDefaultUI: false,
mapTypeControl: false,
streetViewControl: false,
mapTypeId: "roadmap",
scrollWheel: true,
fullscreenControl: true,
center: {
lat: 49.316666,
lng: -123.066666,
},
});
new CustomOverlay(map);
radial-gradient(circle farthest-corner at 32% 26%, #BADA55 0%, #57BA51 36.0321044921875%, #056A07 75.677490234375%)
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":sunshine: Boost Days - Whats On This Week! :sunshine:"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Mōrena Ahuriri & happy December! :santa:\n\nWe're excited to kick off another month with our Boost Day Program! :yay: Please see below for whats on this week :arrow-bounce:"
}
},
{
"type": "divider"
},
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":calendar-date-4: Wednesday, 4th December",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n:coffee: *Café Partnership*: Enjoy coffee and café-style beverages from our cafe partner, *Adoro*, located in our office building *8:00AM - 11:30AM*.\n:BREAKFAST: *Breakfast*: Provided by *Mitzi and Twinn* *9:30AM - 11:00AM* in the Kitchen."
}
},
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":calendar-date-5: Thursday, 5th December",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":coffee: *Café Partnership*: Enjoy coffee and café-style beverages from our cafe partner, *Adoro*, located in our office building *8:00AM - 11:30AM*. \n:sandwich: *Lunch*: Provided by *Roam* *12:00PM - 1:00PM* in the Kitchen. \n:massage: *Wellness*: Our second massage event for our winners of last weeks giveaway in *Craggy* *10:00AM - 2:00PM*"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*LATER THIS WEEK/MONTH:*"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Friday, 6th December*\n :unicorn_face: *EOY Event*: A Sprinkle of Magic THIS FRIDAY *4:30PM - 10:00PM* :clinking_glasses: Stay tuned for more info :soon:\n\n*Thursday, 12th December* \n :christmas-tree: *Christmas Lunch Social*: A special Christmas Lunch & Secret Santa from *12:00PM*! :gift:\n\n*Wednesday, 18th December*\n:xero: *Global All Hands*: Streamed live in *Clearview* *11:00AM - 12:00PM* \n\n*Thursday, 19th December*\n:newzealand: *Aotearoa All Hands*: Streamed live in Clearview *10:30AM - 11:30AM*"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Stay tuned to this channel for more details, check out the <https://calendar.google.com/calendar/u/0?cid=eGVyby5jb21fbXRhc2ZucThjaTl1b3BpY284dXN0OWlhdDRAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ|*Hawkes Bay Social Calendar*>, and get ready to Boost your workdays!\n\nWX Team :party-wx:"
}
}
]
}
@extends('new_layouts.app')
@section('styles')
<style>
.modal-icon {
font-size: 3rem;
color: #dc3545;
}
.modal-body {
padding: 2rem;
}
.modal-title {
font-size: 1.25rem;
margin-top: 1rem;
}
.modal-body p {
font-size: 1rem;
margin-top: 0.5rem;
}
.custom-table {
border-collapse: collapse;
border-radius: 1rem;
border-style: hidden;
box-shadow: 0 0 0 1px #e6ebef;
overflow: hidden;
text-align: left;
width: 100%;
}
.badge-file-extension {
background-color: #f25961;
color: white;
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
border-radius: 0.375rem;
margin-left: 0.5rem;
}
.bookmark-active svg {
fill: #FF9800;
}
.description-text {
font-size: 1.1rem;
color: #555;
margin-top: 0.5rem;
}
.comment {
margin-top: 1rem;
margin-bottom: 1rem;
}
.comment-section {
border: 1px solid #e9ebee;
border-radius: 1rem;
padding: 1.5rem;
background-color: #ffffff;
/* box-shadow: 0 0 1rem rgba(0, 0, 0, 0.1); */
}
.comment-header {
border-bottom: 1px solid #e9ebee;
padding-bottom: 0.75rem;
margin-bottom: 1rem;
}
.comment-avatar {
height: 48px;
width: 48px;
border-radius: 50%;
margin-right: 1rem;
}
.comment-author {
font-size: 1rem;
font-weight: 600;
}
.comment-time {
font-size: 0.875rem;
color: #90949c;
}
.comment-body {
margin: 0.75rem 0;
font-size: 1rem;
}
.comment-actions a {
font-size: 0.875rem;
color: #4267b2;
text-decoration: none;
margin-right: 1rem;
}
.comment-actions i {
margin-right: 0.5rem;
}
.reply-list {
margin-top: 1rem;
padding-left: 2rem;
}
.reply-list .comment {
border-left: 1px dotted #d3d6db;
padding-left: 1rem;
margin-top: 1rem;
}
.reply-toggle {
cursor: pointer;
font-size: 0.875rem;
color: #4267b2;
text-decoration: none;
margin-top: 1rem;
display: block;
}
.reply-form {
display: none;
position: relative;
z-index: 10;
}
.comment-input {
border-radius: 0.5rem;
}
.like-button.active i {
color: #4caf50;
}
.dislike-button.active i {
color: #dc3545;
}
/* Dropdown Styles */
.dropdown-toggle::after {
display: none;
/* Remove the default arrow */
}
.dropdown-menu {
right: 0;
left: auto;
}
</style>
@endsection
@section('content')
<div>
<div class="d-flex flex-column">
<h1>Title: {{ $material->title }}</h1>
@if ($material->description)
<p class="description-text"><strong>Description:</strong> {{ $material->description }}</p>
@endif
</div>
<div class="d-flex justify-content-end mb-4">
<a class="btn rounded-3" style="background-color: #4CAF50; color: white"
href="{{ route('materials.downloadAll', $material) }}">
<i class="fas fa-download me-1"></i> Download All
</a>
</div>
<div class="table-responsive">
<table class="table table-striped custom-table">
<thead>
<tr>
<th scope="col">Bookmarks</th>
<th scope="col">Document</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
@foreach ($files as $file)
<tr>
<td>
@php
$isBookmarked = $file->bookmarks()->where('user_id', Auth::id())->exists();
@endphp
<button type="button"
class="btn btn-outline-dark bookmark-toggle {{ $isBookmarked ? 'bookmark-active' : '' }}"
data-file-id="{{ $file->id }}">
@if ($isBookmarked)
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
fill="currentColor" class="bi bi-bookmarks-fill" viewBox="0 0 16 16">
<path
d="M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5z" />
<path
d="M4.268 1A2 2 0 0 1 6 0h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L13 13.768V2a1 1 0 0 0-1-1z" />
</svg>
@else
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
fill="currentColor" class="bi bi-bookmarks" viewBox="0 0 16 16">
<path
d="M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v10.566l3.723-2.482a.5.5 0 0 1 .554 0L11 14.566V4a1 1 0 0 0-1-1z" />
<path
d="M4.268 1H12a1 1 0 0 1 1 1v11.768l.223.148A.5.5 0 0 0 14 13.5V2a2 2 0 0 0-2-2H6a2 2 0 0 0-1.732 1" />
</svg>
@endif
<span class="visually-hidden">Button</span>
</button>
</td>
<td>
<div>
@php
$extension = pathinfo($file->name, PATHINFO_EXTENSION);
@endphp
<i class="fa-solid fa-file-lines" style="color: #0068b8; margin-right: 5px;"></i>
<a href="{{ Storage::url($file->path) }}" target="_blank">
{{ pathinfo($file->name, PATHINFO_FILENAME) }}
</a>
<span>
<span class="badge badge-file-extension">
{{ strtoupper($extension) }} File
</span>
</span>
</div>
</td>
<td>
<a class="btn btn-primary rounded-pill" href="{{ route('files.download', $file) }}">
<i class="fas fa-download me-1"></i> Download
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="container">
<div class="mt-4 comment-section">
<h3>Comments ( {{ $comments->count() }} )</h3>
<div class="comment-header d-flex justify-content-between align-items-center">
</div>
<div class="comment-body">
<div class="d-flex mb-3">
<img src="https://static.xx.fbcdn.net/rsrc.php/v1/yi/r/odA9sNLrE86.jpg" alt="avatar"
class="comment-avatar">
<div class="w-100">
<form id="comment-form" action="{{ route('comments.store', $material) }}" method="POST">
@csrf
<div class="d-flex flex-column">
<textarea name="content" class="form-control comment-input" placeholder="Write a comment..." rows="3"></textarea>
<div class="d-flex justify-content-between mt-2">
<div id="comment-form-error" class="text-danger"></div>
<button type="submit" class="btn btn-primary">Post Comment</button>
</div>
</div>
</form>
</div>
</div>
<div id="comment-list" class="comment-list">
@foreach ($comments as $comment)
<div class="comment" data-comment-id="{{ $comment->id }}">
<div class="d-flex">
<img src="https://static.xx.fbcdn.net/rsrc.php/v1/yi/r/odA9sNLrE86.jpg" alt="avatar"
class="comment-avatar">
<div class="w-100">
<div class="d-flex justify-content-between align-items-start">
<div>
<div class="comment-author">{{ $comment->user->name }}</div>
<div class="comment-time">{{ $comment->created_at->diffForHumans() }}</div>
</div>
@if ($comment->user_id === auth()->id())
<div class="dropdown">
<button class="btn btn-link dropdown-toggle" type="button"
id="dropdownMenuButton{{ $comment->id }}" data-bs-toggle="dropdown"
aria-expanded="false">
<i class="fa-solid fa-ellipsis-vertical"></i>
</button>
<ul class="dropdown-menu"
aria-labelledby="dropdownMenuButton{{ $comment->id }}">
<li><a class="dropdown-item" href="#" data-action="edit"
data-comment-id="{{ $comment->id }}">Edit</a></li>
<li><a class="dropdown-item text-danger" href="#"
data-action="delete"
data-comment-id="{{ $comment->id }}">Delete</a></li>
</ul>
</div>
@endif
</div>
<div class="comment-body">{{ $comment->content }}</div>
<div class="comment-actions">
<a href="#"
class="like-button {{ $comment->likes()->where('user_id', auth()->id())->exists() ? 'active' : '' }}"
data-action="like" data-comment-id="{{ $comment->id }}">
<i class="fa-solid fa-thumbs-up"></i>
<span class="like-dislike-count">{{ $comment->likes }}</span>
</a>
<a href="#"
class="dislike-button {{ $comment->dislikes()->where('user_id', auth()->id())->exists() ? 'active' : '' }}"
data-action="dislike" data-comment-id="{{ $comment->id }}">
<i class="fa-solid fa-thumbs-down"></i>
<span class="like-dislike-count">{{ $comment->dislikes }}</span>
</a>
<a href="#" class="reply-link" data-comment-id="{{ $comment->id }}"
data-author="{{ $comment->user->name }}">
<i class="fa-solid fa-reply"></i> Reply
</a>
</div>
<div class="reply-toggle" onclick="toggleReplies(this)">View replies</div>
<form class="reply-form" action="{{ route('replies.store', $comment) }}"
method="POST">
@csrf
<div class="d-flex flex-column">
<textarea name="content" class="form-control comment-input" placeholder="Write a reply..." rows="2"></textarea>
<div class="d-flex justify-content-between mt-2">
<div id="comment-form-error" class="text-danger" style="display: none;">
Error: Reply cannot be empty
</div>
<button type="submit" class="btn btn-primary ms-auto">Post Reply</button>
</div>
</div>
</form>
<div class="reply-list" style="display: none;">
@foreach ($comment->replies as $reply)
<div class="comment reply" data-comment-id="{{ $reply->id }}">
<div class="d-flex">
<img src="https://static.xx.fbcdn.net/rsrc.php/v1/yi/r/odA9sNLrE86.jpg"
alt="avatar" class="comment-avatar">
<div class="w-100">
<div class="d-flex justify-content-between align-items-start">
<div>
<div class="comment-author">{{ $reply->user->name }}</div>
<div class="comment-time">
{{ $reply->created_at->diffForHumans() }}</div>
</div>
@if ($reply->user_id === auth()->id())
<div class="dropdown">
<button class="btn btn-link dropdown-toggle"
type="button"
id="dropdownMenuButton{{ $reply->id }}"
data-bs-toggle="dropdown" aria-expanded="false">
<i class="fa-solid fa-ellipsis-vertical"></i>
</button>
<ul class="dropdown-menu"
aria-labelledby="dropdownMenuButton{{ $reply->id }}">
<li><a class="dropdown-item" href="#"
data-action="edit"
data-comment-id="{{ $reply->id }}">Edit</a>
</li>
<li><a class="dropdown-item text-danger"
href="#" data-action="delete"
data-comment-id="{{ $reply->id }}">Delete</a>
</li>
</ul>
</div>
@endif
</div>
<div class="comment-body">
@if ($reply->parent)
<a href="#"
class="reply-mention">{{ '@' . $reply->parent->user->name }}</a>
@endif
<span class="reply-content">{{ $reply->content }}</span>
</div>
<div class="comment-actions">
<a href="#"
class="like-button {{ $reply->likes()->where('user_id', auth()->id())->exists() ? 'active' : '' }}"
data-action="like" data-comment-id="{{ $reply->id }}">
<i class="fa-solid fa-thumbs-up"></i>
<span
class="like-dislike-count">{{ $reply->likes }}</span>
</a>
<a href="#"
class="dislike-button {{ $reply->dislikes()->where('user_id', auth()->id())->exists() ? 'active' : '' }}"
data-action="dislike"
data-comment-id="{{ $reply->id }}">
<i class="fa-solid fa-thumbs-down"></i>
<span
class="like-dislike-count">{{ $reply->dislikes }}</span>
</a>
<a href="#" class="reply-link"
data-comment-id="{{ $reply->id }}"
data-author="{{ $reply->user->name }}">
<i class="fa-solid fa-reply"></i> Reply
</a>
</div>
<form class="reply-form"
action="{{ route('replies.store', $reply) }}" method="POST">
@csrf
<div class="d-flex flex-column">
<textarea name="content" class="form-control comment-input" placeholder="Write a reply..." rows="2"></textarea>
<div class="d-flex justify-content-between mt-2">
<div id="comment-form-error" class="text-danger"
style="display: none;">
Error: Reply cannot be empty
</div>
<button type="submit"
class="btn btn-primary ms-auto">Post Reply</button>
</div>
</div>
</form>
</div>
</div>
</div>
@include('materials.comment', ['replies' => $reply->replies])
@endforeach
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
<!-- Modal for delete confirmation -->
<div class="modal fade" id="deleteModal" tabindex="-1" aria-labelledby="deleteModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-body text-center">
<div class="mb-3">
<i class="fa-solid fa-triangle-exclamation modal-icon"></i>
</div>
<h5 class="modal-title" id="deleteModalLabel">Delete Comment</h5>
<p>Are you sure you want to delete this comment?</p>
</div>
<div class="modal-footer d-flex justify-content-center">
<button type="button" class="btn btn-danger ms-2" id="confirmDelete">Delete</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
<script>
document.addEventListener('DOMContentLoaded', function() {
const commentList = document.getElementById('comment-list');
// Handle edit button click
commentList.addEventListener('click', function(event) {
const button = event.target.closest('a[data-action="edit"]');
if (button) {
event.preventDefault();
const commentId = button.getAttribute('data-comment-id');
const commentElement = document.querySelector(
`.comment[data-comment-id="${commentId}"]`);
const commentBodyElement = commentElement.querySelector('.comment-body');
const mentionElement = commentBodyElement.querySelector('.reply-mention');
const mention = mentionElement ? mentionElement.innerText.trim() : '';
const contentElement = mentionElement ? mentionElement.nextElementSibling :
commentBodyElement;
const content = contentElement.innerText.trim();
commentBodyElement.dataset.originalContent = commentBodyElement.innerHTML;
const editForm = `
<form class="edit-comment-form" data-comment-id="${commentId}">
${mention ? `<span class="reply-mention">${mention}</span>` : ''}
<textarea class="form-control">${content}</textarea>
<div class="error-message text-danger mt-2" style="display: none;"></div>
<div class="d-flex justify-content-end mt-3">
<button type="submit" class="btn btn-primary me-2">Save</button>
<button type="button" class="btn btn-secondary cancel-edit">Cancel</button>
</div>
</form>
`;
commentBodyElement.innerHTML = editForm;
attachEditFormListeners(commentId);
}
});
function attachEditFormListeners(commentId) {
const editForm = document.querySelector(`.edit-comment-form[data-comment-id="${commentId}"]`);
editForm.addEventListener('submit', function(e) {
e.preventDefault();
const textarea = this.querySelector('textarea');
const content = textarea.value.trim();
const errorMessageElement = this.querySelector('.error-message');
if (content === '') {
errorMessageElement.textContent = 'Content cannot be empty.';
errorMessageElement.style.display = 'block';
return; // Prevent form submission
} else {
errorMessageElement.style.display = 'none';
}
fetch(`/comments/${commentId}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content')
},
body: JSON.stringify({ content })
})
.then(response => response.json())
.then(data => {
if (data.success) {
const commentBodyElement = document.querySelector(
`.comment[data-comment-id="${commentId}"] .comment-body`);
const mentionElement = mention ?
`<a href="#" class="reply-mention">${mention}</a>` : '';
commentBodyElement.innerHTML =
`${mentionElement} <span class="reply-content">${data.content}</span>`;
} else {
alert('Error updating comment.');
}
})
.catch(error => {
console.error('Error:', error);
});
});
editForm.querySelector('.cancel-edit').addEventListener('click', function() {
const originalContent = document.querySelector(
`.comment[data-comment-id="${commentId}"] .comment-body`).dataset.originalContent;
document.querySelector(`.comment[data-comment-id="${commentId}"] .comment-body`)
.innerHTML = originalContent;
});
}
});
</script>
<script>
document.addEventListener('DOMContentLoaded', function() {
// for delete
let commentIdToDelete = null;
document.getElementById('comment-list').addEventListener('click', function(event) {
const button = event.target.closest('a[data-action="delete"]');
if (button) {
event.preventDefault();
commentIdToDelete = button.getAttribute('data-comment-id');
// Show the delete confirmation modal
const deleteModal = new bootstrap.Modal(document.getElementById('deleteModal'));
deleteModal.show();
}
});
document.getElementById('confirmDelete').addEventListener('click', function() {
if (commentIdToDelete) {
fetch(`/comments/${commentIdToDelete}`, {
method: 'DELETE',
headers: {
'X-Requested-With': 'XMLHttpRequest',
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')
.getAttribute('content'),
'Content-Type': 'application/json',
}
})
.then(response => response.json())
.then(data => {
if (data.success) {
const commentElement = document.querySelector(
`.comment[data-comment-id="${commentIdToDelete}"]`);
if (commentElement) {
commentElement.remove();
}
} else {
alert(
'Error: This comment was deleted because its parent comment was removed');
}
})
.catch(error => {
// console.error('Error:', error);
// alert('Something went wrong');
});
const deleteModal = bootstrap.Modal.getInstance(document.getElementById('deleteModal'));
deleteModal.hide();
}
});
// for like and dislike
document.getElementById('comment-list').addEventListener('click', function(event) {
const button = event.target.closest('a');
if (button && (button.classList.contains('like-button') || button.classList.contains(
'dislike-button'))) {
event.preventDefault();
const commentId = button.getAttribute('data-comment-id');
const action = button.getAttribute('data-action');
fetch(`/comments/${commentId}/${action}`, {
method: 'POST',
headers: {
'X-Requested-With': 'XMLHttpRequest',
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')
.getAttribute('content'),
'Content-Type': 'application/json',
},
body: JSON.stringify({
_method: 'POST'
})
})
.then(response => response.json())
.then(data => {
if (data.success) {
const commentElement = document.querySelector(
`.comment[data-comment-id="${commentId}"]`);
const likeCount = commentElement.querySelector(
'.like-button .like-dislike-count');
const dislikeCount = commentElement.querySelector(
'.dislike-button .like-dislike-count');
likeCount.textContent = data.comment.likes;
dislikeCount.textContent = data.comment.dislikes;
if (action === 'like') {
button.classList.toggle('active');
commentElement.querySelector('.dislike-button').classList.remove(
'active');
} else {
button.classList.toggle('active');
commentElement.querySelector('.like-button').classList.remove(
'active');
}
} else {
alert(data.message || 'Error updating like/dislike');
}
})
.catch(error => {
console.error('Error:', error);
alert('Something went wrong');
});
}
});
// For submission of the main comment form
document.getElementById('comment-form')?.addEventListener('submit', function(event) {
event.preventDefault();
const formData = new FormData(this);
const errorDiv = document.getElementById('comment-form-error');
errorDiv.textContent = ''; // Clear previous errors
fetch(this.action, {
method: 'POST',
body: formData,
headers: {
'X-Requested-With': 'XMLHttpRequest',
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')
.getAttribute('content')
}
})
.then(response => response.json())
.then(data => {
if (data.success) {
const commentList = document.getElementById('comment-list');
if (commentList) {
const newCommentHtml = `
<div class="comment" data-comment-id="${data.comment.id}">
<div class="d-flex">
<img src="https://static.xx.fbcdn.net/rsrc.php/v1/yi/r/odA9sNLrE86.jpg" alt="avatar" class="comment-avatar">
<div class="w-100">
<div class="d-flex justify-content-between align-items-start">
<div>
<div class="comment-author">${data.comment.user_name}</div>
<div class="comment-time">${data.comment.created_at}</div>
</div>
<div class="dropdown">
<button class="btn btn-link dropdown-toggle" type="button"
id="dropdownMenuButton${data.comment.id}" data-bs-toggle="dropdown"
aria-expanded="false">
<i class="fa-solid fa-ellipsis-vertical"></i>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton${data.comment.id}">
<li><a class="dropdown-item" href="#" data-action="edit" data-comment-id="${data.comment.id}">Edit</a></li>
<li><a class="dropdown-item text-danger" href="#" data-action="delete" data-comment-id="${data.comment.id}">Delete</a></li>
</ul>
</div>
</div>
<div class="comment-body">${data.comment.content}</div>
<div class="comment-actions">
<a href="#" class="like-button" data-action="like" data-comment-id="${data.comment.id}">
<i class="fa-solid fa-thumbs-up"></i>
<span class="like-dislike-count">0</span>
</a>
<a href="#" class="dislike-button" data-action="dislike" data-comment-id="${data.comment.id}">
<i class="fa-solid fa-thumbs-down"></i>
<span class="like-dislike-count">0</span>
</a>
<a href="#" class="reply-link" data-comment-id="${data.comment.id}" data-author="${data.comment.user_name}">
<i class="fa-solid fa-reply"></i> Reply
</a>
</div>
<div class="reply-toggle" onclick="toggleReplies(this)">View replies</div>
<form class="reply-form" action="{{ route('replies.store', ':commentId') }}" method="POST" style="display: none;">
@csrf
<div class="d-flex flex-column">
<textarea name="content" class="form-control comment-input" placeholder="Write a reply..." rows="2"></textarea>
<div class="d-flex justify-content-between mt-2">
<div id="comment-form-error" class="text-danger" style="display: none;">
Error: Reply cannot be empty
</div>
<button type="submit" class="btn btn-primary ms-auto">Post Reply</button>
</div>
</div>
</form>
<div class="reply-list" style="display: none;"></div>
</div>
</div>
</div>
`.replace(':commentId', data.comment.id);
commentList.insertAdjacentHTML('afterbegin', newCommentHtml);
this.reset();
initializeDropdowns();
}
} else {
// Display error messages
errorDiv.textContent = data.error || 'Your comment is empty';
}
})
.catch(error => {
console.error('Error:', error);
errorDiv.textContent = 'Something went wrong';
});
});
// For submission of reply forms
document.getElementById('comment-list')?.addEventListener('submit', function(event) {
if (event.target.closest('.reply-form')) {
event.preventDefault();
const form = event.target;
const formData = new FormData(form);
const parentId = form.closest('.comment').dataset.commentId;
const errorDiv = form.querySelector('#comment-form-error');
errorDiv.style.display = 'none';
errorDiv.textContent = '';
fetch(form.action.replace(':commentId', parentId), {
method: 'POST',
body: formData,
headers: {
'X-Requested-With': 'XMLHttpRequest',
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')
.getAttribute('content')
}
})
.then(response => response.json())
.then(data => {
if (data.success) {
const replyList = form.closest('.reply-list') || form.closest(
'.comment').querySelector('.reply-list');
if (replyList) {
const newReplyHtml = `
<div class="comment reply" data-comment-id="${data.reply.id}">
<div class="d-flex">
<img src="https://static.xx.fbcdn.net/rsrc.php/v1/yi/r/odA9sNLrE86.jpg" alt="avatar" class="comment-avatar">
<div class="w-100">
<div class="d-flex justify-content-between align-items-start">
<div>
<div class="comment-author">${data.reply.user_name}</div>
<div class="comment-time">${data.reply.created_at}</div>
</div>
<div class="dropdown">
<button class="btn btn-link dropdown-toggle" type="button" id="dropdownMenuButton${data.reply.id}" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fa-solid fa-ellipsis-vertical"></i>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton${data.reply.id}">
<li><a class="dropdown-item" href="#" data-action="edit" data-comment-id="${data.reply.id}">Edit</a></li>
<li><a class="dropdown-item text-danger" href="#" data-action="delete" data-comment-id="${data.reply.id}">Delete</a></li>
</ul>
</div>
</div>
<div class="comment-body">
${data.reply.parent_name ? `<a href="#" class="reply-mention">@${data.reply.parent_name}</a> ` : ''}
<span class="reply-content">${data.reply.content}</span>
</div>
<div class="comment-actions">
<a href="#" class="like-button" data-action="like" data-comment-id="${data.reply.id}">
<i class="fa-solid fa-thumbs-up"></i>
<span class="like-dislike-count">0</span>
</a>
<a href="#" class="dislike-button" data-action="dislike" data-comment-id="${data.reply.id}">
<i class="fa-solid fa-thumbs-down"></i>
<span class="like-dislike-count">0</span>
</a>
<a href="#" class="reply-link" data-comment-id="${data.reply.id}" data-author="${data.reply.user_name}">
<i class="fa-solid fa-reply"></i> Reply
</a>
</div>
<form class="reply-form" action="{{ route('replies.store', ':commentId') }}" method="POST" style="display: none;">
@csrf
<div class="d-flex flex-column">
<textarea name="content" class="form-control comment-input" placeholder="Write a reply..." rows="2"></textarea>
<div class="d-flex justify-content-between mt-2">
<div id="comment-form-error" class="text-danger" style="display: none;">
Error: Reply cannot be empty
</div>
<button type="submit" class="btn btn-primary ms-auto">Post Reply</button>
</div>
</div>
</form>
<div class="reply-list" style="display: none;"></div>
</div>
</div>
</div>
`.replace(':commentId', data.reply.id);
replyList.insertAdjacentHTML('beforeend', newReplyHtml);
form.reset();
form.style.display =
'none'; // Hide the reply form after successful submission
const replyToggle = form.closest('.comment').querySelector(
'.reply-toggle');
if (replyToggle) {
const replyList = replyToggle.nextElementSibling
.nextElementSibling;
replyList.style.display = 'block';
replyToggle.textContent = 'Hide replies';
}
initializeDropdowns();
}
} else {
// Display error message
errorDiv.textContent = data.message || 'Error posting reply';
errorDiv.style.display = 'block';
}
})
.catch(error => {
console.error('Error:', error);
// Display error message
errorDiv.textContent = 'Something went wrong';
errorDiv.style.display = 'block';
});
}
});
// For reply link click to show reply form
document.getElementById('comment-list')?.addEventListener('click', function(event) {
if (event.target.closest('.reply-link')) {
event.preventDefault();
const replyForm = event.target.closest('.comment').querySelector('.reply-form');
if (replyForm) {
replyForm.style.display = replyForm.style.display === 'block' ? 'none' : 'block';
}
}
});
});
function initializeDropdowns() {
const dropdowns = document.querySelectorAll('.dropdown-toggle:not(.initialized)');
dropdowns.forEach(dropdown => {
new bootstrap.Dropdown(dropdown);
dropdown.classList.add('initialized');
});
}
function toggleReplies(element) {
const replyList = element.nextElementSibling.nextElementSibling;
const isVisible = replyList.style.display === 'block';
replyList.style.display = isVisible ? 'none' : 'block';
element.textContent = isVisible ? 'View replies' : 'Hide replies';
}
</script>
<script>
document.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('.bookmark-toggle').forEach(function(button) {
button.addEventListener('click', function() {
const fileId = this.getAttribute('data-file-id');
const button = this;
fetch("{{ route('bookmark.toggle') }}", {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
body: JSON.stringify({
file_id: fileId
})
})
.then(response => response.json())
.then(data => {
if (data.status === 'added') {
button.classList.add('bookmark-active');
button.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
class="bi bi-bookmarks-fill" viewBox="0 0 16 16">
<path d="M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5z"/>
<path d="M4.268 1A2 2 0 0 1 6 0h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L13 13.768V2a1 1 0 0 0-1-1z"/>
</svg>`;
} else if (data.status === 'removed') {
button.classList.remove('bookmark-active');
button.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
class="bi bi-bookmarks" viewBox="0 0 16 16">
<path d="M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v10.566l3.723-2.482a.5.5 0 0 1 .554 0L11 14.566V4a1 1 0 0 0-1-1z"/>
<path d="M4.268 1H12a1 1 0 0 1 1 1v11.768l.223.148A.5.5 0 0 0 14 13.5V2a2 2 0 0 0-2-2H6a2 2 0 0 0-1.732 1"/>
</svg>`;
}
})
.catch(error => console.error('Error:', error));
});
});
});
</script>
@endsection
Thu Sep 12 2024 05:44:34 GMT+0000 (Coordinated Universal Time) https://medium.com/@tempmailwithpassword/finding-the-email-of-the-founder-in-salesforce-when-logging-in-as-a-different-user-bea709883ad2
Thu Sep 12 2024 04:49:09 GMT+0000 (Coordinated Universal Time) https://www.vishyat.com/website-designing-services-in-gurgaon/
Thu Sep 12 2024 03:28:08 GMT+0000 (Coordinated Universal Time) https://www.programiz.com/cpp-programming/online-compiler/
Wed Sep 11 2024 19:31:10 GMT+0000 (Coordinated Universal Time) https://www.programiz.com/cpp-programming/online-compiler/
Wed Sep 11 2024 11:20:55 GMT+0000 (Coordinated Universal Time) https://www.tenforums.com/tutorials/82643-clean-up-component-store-winsxs-folder-windows-10-a.html
Tue Sep 10 2024 13:30:15 GMT+0000 (Coordinated Universal Time) https://blockchain.oodles.io/telegram-mini-apps-development/?utm_source=thiscodeworks
Tue Sep 10 2024 12:59:53 GMT+0000 (Coordinated Universal Time) https://stackoverflow.com/questions/54087631/paypal-sizeof-parameter-must-be-an-array-or-an-object-that-implements-countab
Tue Sep 10 2024 11:24:46 GMT+0000 (Coordinated Universal Time) https://magento.stackexchange.com/questions/318291/no-administrators-role-was-found-data-fixture-needs-to-be-run
Tue Sep 10 2024 10:51:38 GMT+0000 (Coordinated Universal Time) https://nounq.com/seo-services
Mon Sep 09 2024 19:24:25 GMT+0000 (Coordinated Universal Time) https://forum.moralis.io/t/walletconnect-connection-after-refresh/8815


