예제 #1
0
    def mirror_chain(self, side = None):
        #create one temporary joint at the origin
        tmp_jnt = cmds.joint(position = [0, 0, 0])

        #parent the chain to that joint
        cmds.parent(self.ik_joint_names[0], tmp_jnt)

        #mirror the chain and rename the mirrored side
        if side == 'L':
            self.mirrored_ik_joint_names = cmds.mirrorJoint(self.ik_joint_names[0], mirrorYZ = 1, mirrorBehavior = 1, searchReplace = (side, 'R'))
        elif side == 'l':
            self.mirrored_ik_joint_names = cmds.mirrorJoint(self.ik_joint_names[0], mirrorYZ = 1, mirrorBehavior = 1, searchReplace = (side, 'r'))
        elif side == 'R':
            self.mirrored_ik_joint_names = cmds.mirrorJoint(self.ik_joint_names[0], mirrorYZ = 1, mirrorBehavior = 1, searchReplace = (side, 'L'))
        elif side == 'r':
            self.mirrored_ik_joint_names = cmds.mirrorJoint(self.ik_joint_names[0], mirrorYZ = 1, mirrorBehavior = 1, searchReplace = (side, 'l'))
        else:
            self.mirrored_ik_joint_names = cmds.mirrorJoint(self.ik_joint_names[0], mirrorYZ = 1, mirrorBehavior = 1)

        #unparent the chain and delete the temporary joint
        cmds.parent(self.ik_joint_names[0], self.mirrored_ik_joint_names[0], world = 1)        
        cmds.delete(tmp_jnt)

        cmds.select(clear = 1)

        #rename the side of the mirrored effector correctly and store the ik and effector in a list
        mirrored_ik  = self.mirrored_ik_joint_names[0][0] + self.ik_handle_names[-1][1:]
        mirrored_eff = cmds.rename(self.mirrored_ik_joint_names[-1], self.mirrored_ik_joint_names[0][0] + self.ik_handle_names[-1][1:])
        self.mirrored_ik_handle_names = [mirrored_ik, mirrored_eff]
        self.mirrored_ik_joint_names.pop(-1)
예제 #2
0
    def __mirror_chain(self):
        """ Mirror the created jointChain create one temporary joint at the origin """
        if not self._mirror:
            return
        tmp_jnt = cmds.joint(position=[0, 0, 0])

        #--- parent the chain to that joint
        cmds.parent(self.joint_names[0], tmp_jnt)

        #--- mirror the chain and rename the mirrored side
        if self._side == 'L':
            self.mirrored_joint_names = cmds.mirrorJoint(
                self.joint_names[0],
                mirrorYZ=True,
                mirrorBehavior=True,
                searchReplace=(self._side, 'R'))
        elif self._side == 'R':
            self.mirrored_joint_names = cmds.mirrorJoint(
                self.joint_names[0],
                mirrorYZ=True,
                mirrorBehavior=True,
                searchReplace=(self._side, 'L'))
        else:
            self.mirrored_joint_names = cmds.mirrorJoint(self.joint_names[0],
                                                         mirrorYZ=True,
                                                         mirrorBehavior=True)

        #--- unparent the chain and delete the temporary joint
        cmds.parent(self.joint_names[0],
                    self.mirrored_joint_names[0],
                    world=True)
        cmds.delete(tmp_jnt)
        cmds.select(clear=True)
예제 #3
0
def JointsBtn(*args):

    cmds.rename("L_Clavicule_LOC", "locator1")
    cmds.rename("L_Shoulder_LOC", "locator2")
    cmds.rename("L_Elbow_LOC", "locator3")
    cmds.rename("L_Wrist_LOC", "locator4")

    cmds.select(cl=True)

    for X in range(1, jointsNum + 1):

        cmds.joint(n="L_arm_" + str(X))
        cmds.pointConstraint("locator" + str(X), "L_arm_" + str(X))
        cmds.delete("L_arm_" + str(X) + "_pointConstraint1")
        cmds.delete("locator" + str(X))
        cmds.setAttr("L_arm_" + str(X) + ".displayLocalAxis", 1)

    cmds.joint()
    cmds.select("L_arm_1", "L_arm_2", "L_arm_3", "L_arm_4")
    cmds.joint(e=True, zso=True, oj="xzy", sao="zdown")
    cmds.delete('joint1')

    cmds.select("L_arm_1")
    cmds.mirrorJoint(mirrorYZ=True,
                     mirrorBehavior=True,
                     searchReplace=('L_', 'R_'))

    cmds.select("R_arm_4")
    cmds.joint()
    cmds.select("R_arm_1", "R_arm_2", "R_arm_3", "R_arm_4")
    cmds.joint(e=True, zso=True, oj="xzy", sao="zup")
    cmds.delete('joint1')

    cmds.select(clear=True)
예제 #4
0
파일: extraJoint.py 프로젝트: mappp7/tools
    def leg(self):

        cmds.select(cl=True)
        tmp = cmds.joint(n='L_template_leg', p=(1, 11, 0))
        leg = setUniqueName(tmp, 'JNT')

        tmp = cmds.joint(n='L_template_lowLeg', p=(1, 6, 0))
        lowLeg = setUniqueName(tmp, 'JNT')
        cmds.joint(leg, e=True, zso=True, oj='xyz', sao='yup')

        tmp = cmds.joint(n='L_template_foot', p=(1, 1, 0))
        foot = setUniqueName(tmp, 'JNT')
        cmds.joint(lowLeg, e=True, zso=True, oj='xyz', sao='yup')

        tmp = cmds.joint(n='L_template_ball', p=(1, 0, 1))
        ball = setUniqueName(tmp, 'JNT')
        cmds.joint(foot, e=True, zso=True, oj='xyz', sao='yup')

        tmp = cmds.joint(n='L_template_toe', p=(1, 0, 2))
        toe = setUniqueName(tmp, 'JNT')
        cmds.joint(ball, e=True, zso=True, oj='xyz', sao='yup')

        cmds.setAttr(leg + '.rx', -10)
        cmds.setAttr(lowLeg + '.rx', 20)
        cmds.setAttr(foot + '.rx', -10)
        cmds.mirrorJoint(leg,
                         mirrorYZ=True,
                         mirrorBehavior=True,
                         searchReplace=('L_', 'R_'))

        return
예제 #5
0
파일: Util.py 프로젝트: darkuress/arFace
    def mirrorJoints(self, topJoint = '', prefix = ['l_', 'r_']):
        """
        mirroring joint, top node needs to contain 'l_' as prefix
        """

        lPrefix = prefix[0]
        rPrefix = prefix[1]
        
        cmds.select(cl = True)
        cmds.joint(n = 'temp_jnt')
        cmds.select(topJoint, r = True)
        cmds.select('temp_jnt', tgl = True)
        self.toggleSelect(topJoint, 'temp_jnt')
        cmds.parent()
        
        cmds.select(topJoint, r = True)
        cmds.mirrorJoint(mirrorYZ = True, mirrorBehavior  = True, myz = True, searchReplace =  prefix)
        
        rJoint = rPrefix + topJoint.split(lPrefix)[-1]
        cmds.select(topJoint, rJoint)
        cmds.parent(w = True)
        
        cmds.delete('temp_jnt')
        
        return rJoint
def MirrorJoints():
    charName = cmds.textFieldGrp(NameInput, q=True, text=True)
    cmds.mirrorJoint(charName + '_L' + '_hip' + '_Jnt_01',
                     mirrorYZ=True,
                     mirrorBehavior=True,
                     searchReplace=('_L_', '_R_'))
    cmds.joint(charName + '_R' + '_hip_Jnt_01',
               e=True,
               oj='xyz',
               ch=True,
               zso=True,
               sao='xup')
    cmds.mirrorJoint(charName + '_L' + '_shoulder' + '_Jnt_01',
                     mirrorYZ=True,
                     mirrorBehavior=True,
                     searchReplace=('_L_', '_R_'))
    cmds.joint(charName + '_R' + '_shoulder_Jnt_01',
               e=True,
               oj='xyz',
               ch=True,
               zso=True,
               sao='yup')
    cmds.joint(charName + '_R' + '_wrist' + '_Jnt_01',
               e=True,
               oj='none',
               ch=True,
               zso=True)
    cmds.joint(charName + '_R' + '_toe' + '_Jnt_01',
               e=True,
               oj='none',
               ch=True,
               zso=True)
    cmds.select(d=True)
예제 #7
0
    def mirror_chain(self, side = None):
        #create one temporary joint at the origin
        tmp_jnt = cmds.joint(position = [0, 0, 0])

        #parent the chain to that joint
        cmds.parent(self.fk_joint_names[0], tmp_jnt)

        #mirror the chain and rename the mirrored side
        if side == 'L':
            self.mirrored_fk_joint_names = cmds.mirrorJoint(self.fk_joint_names[0], mirrorYZ = 1, mirrorBehavior = 1, searchReplace = (side, 'R'))
        elif side == 'l':
            self.mirrored_fk_joint_names = cmds.mirrorJoint(self.fk_joint_names[0], mirrorYZ = 1, mirrorBehavior = 1, searchReplace = (side, 'r'))
        elif side == 'R':
            self.mirrored_fk_joint_names = cmds.mirrorJoint(self.fk_joint_names[0], mirrorYZ = 1, mirrorBehavior = 1, searchReplace = (side, 'L'))
        elif side == 'r':
            self.mirrored_fk_joint_names = cmds.mirrorJoint(self.fk_joint_names[0], mirrorYZ = 1, mirrorBehavior = 1, searchReplace = (side, 'l'))
        else:
            self.mirrored_fk_joint_names = cmds.mirrorJoint(self.fk_joint_names[0], mirrorYZ = 1, mirrorBehavior = 1)

        #unparent the chain and delete the temporary joint
        cmds.parent(self.fk_joint_names[0], self.mirrored_fk_joint_names[0], world = 1)        
        cmds.delete(tmp_jnt)

        cmds.select(clear = 1)        
        return self.mirrored_fk_joint_names
예제 #8
0
파일: joint.py 프로젝트: jonntd/Public
    def __mirror_chain(self):
        """ Mirror the created jointChain create one temporary joint at the origin """
        if not self._mirror:
            return
        tmp_jnt = cmds.joint(position=[0, 0, 0])

        #--- parent the chain to that joint
        cmds.parent(self.joint_names[0], tmp_jnt)

        #--- mirror the chain and rename the mirrored side
        if self._side == 'L':
            self.mirrored_joint_names = cmds.mirrorJoint(self.joint_names[0],
                                                         mirrorYZ=True,
                                                         mirrorBehavior=True,
                                                         searchReplace=(self._side, 'R'))
        elif self._side == 'R':
            self.mirrored_joint_names = cmds.mirrorJoint(self.joint_names[0],
                                                         mirrorYZ=True,
                                                         mirrorBehavior=True,
                                                         searchReplace=(self._side, 'L'))
        else:
            self.mirrored_joint_names = cmds.mirrorJoint(self.joint_names[0],
                                                         mirrorYZ=True,
                                                         mirrorBehavior=True)

        #--- unparent the chain and delete the temporary joint
        cmds.parent(self.joint_names[0], self.mirrored_joint_names[0], world=True)
        cmds.delete(tmp_jnt)
        cmds.select(clear=True)
예제 #9
0
def mirror_joint_chain(topJoint,
                       oldSidePrefix=None,
                       newSidePrefix=None,
                       axis="yz"):
    """axis is mirror plane (xy, xz, yz)"""
    mirrored_chain = []
    if axis == "xy":
        mirrored_chain = cmds.mirrorJoint(
            topJoint,
            mirrorXY=True,
            searchReplace=[oldSidePrefix, newSidePrefix],
            mirrorBehavior=True)
    if axis == "xz":
        mirrored_chain = cmds.mirrorJoint(
            topJoint,
            mirrorXZ=True,
            searchReplace=[oldSidePrefix, newSidePrefix],
            mirrorBehavior=True)
    if axis == "yz":
        mirrored_chain = cmds.mirrorJoint(
            topJoint,
            mirrorYZ=True,
            searchReplace=[oldSidePrefix, newSidePrefix],
            mirrorBehavior=True)
    return (mirrored_chain)
예제 #10
0
def mirror_joints(
    joints=(), axis='YZ', behaviour=False, search_replace=('l_', 'r_')):
    """
    mirrors an array of joints
    :param joints: <list>, <tuple> array of joints.
    :param axis: <str> mirrors by this axis.
    :param behaviour: <bool> mirrors behaviour.
    :param search_replace: <tuple> (0,) find this string and replace it (1,)
    :return: <tuple> array of mirrored joints.
    """
    if not joints:
        joints = get_joints_from_selection()
    # get only the joint objects in our selection
    jnt_array = filter(object_utils.is_joint, joints)
    mirror_array = ()
    for jnt in jnt_array:
        if axis == 'XY':
            mirror_array += tuple(
                cmds.mirrorJoint(jnt,
                                 mirrorXY=True,
                                 mirrorBehavior=behaviour,
                                 searchReplace=search_replace))
        if axis == 'YZ':
            mirror_array += tuple(
                cmds.mirrorJoint(jnt,
                                 mirrorYZ=True,
                                 mirrorBehavior=behaviour,
                                 searchReplace=search_replace))
        if axis == 'XZ':
            mirror_array += tuple(
                cmds.mirrorJoint(jnt,
                                 mirrorXZ=True,
                                 mirrorBehavior=behaviour,
                                 searchReplace=search_replace))
    return mirror_array
예제 #11
0
def _mirrorJoint(mirrorPlane, behavior, replace):
    if mirrorPlane == 1:
        return cmds.mirrorJoint(mirrorXY=1, mirrorBehavior=behavior, searchReplace=replace)
    elif mirrorPlane == 2:
        return cmds.mirrorJoint(mirrorYZ=1, mirrorBehavior=behavior, searchReplace=replace)
    elif mirrorPlane == 3:
        return cmds.mirrorJoint(mirrorXZ=1, mirrorBehavior=behavior, searchReplace=replace)
예제 #12
0
	def MirrorJoints(self,*args):   
	    mc.select('A_Front_Hip_Jt');
	    self.MirrorEachJoint = mc.mirrorJoint('L_Front_Shoulder_Jt',mirrorXY=True,mirrorBehavior=True,searchReplace=('L_','R_'))
	    mc.select('B_Back_Hip_Jt')
	    self.MirrorEachJoint = mc.mirrorJoint('L_Back_Pelvic_Jt',mirrorXY=True,mirrorBehavior=True,searchReplace=('L_', 'R_'))
	    mc.select("Head_Jt")
	    self.MirrorEachJoint = mc.mirrorJoint("L_Ear_Jt", mirrorXY=True, mirrorBehavior=True, searchReplace=("L_","R_"))
예제 #13
0
    def _createSkeleton(self):
        # root:
        root = ['root']
        rootJoint = j.create_chain(root)

        # spine:
        spine_locators = ['spine_root', 'spine_waist', 'spine_mid', 'spine_chest', 'spine_end']
        self.spineJoints = j.create_chain(spine_locators, m_sao='zup', radius=0.6)

        # legs:
        leg_locators = ['hip', 'knee', 'ankle', 'ball', 'toe']
        l_legJoints = j.create_chain(leg_locators, side=1, m_sao='xup', radius=0.7)
        r_legJoints = cmd.mirrorJoint(l_legJoints[0], mirrorBehavior=1, mirrorYZ=1, searchReplace=['L_', 'R_'])

        # arms:
        arm_locators = ['shoulder', 'elbow', 'wrist']
        l_armJoints = j.create_chain(arm_locators, side=1)
        r_armJoints = cmd.mirrorJoint(l_armJoints[0], mirrorBehavior=1, mirrorYZ=1, searchReplace=['L_', 'R_'])

        # fingers:
        fingers = ['index', 'mid', 'ring', 'pinky']
        for finger in fingers:
            finger_locators = [finger + '_1', finger + '_2', finger + '_3', finger + '_end']
            l_fingerJoints = j.create_chain(finger_locators, side=1, radius=0.2)
            r_fingerJoints = cmd.mirrorJoint(l_fingerJoints[0], mirrorBehavior=1, mirrorYZ=1,
                                             searchReplace=['L_', 'R_'])
예제 #14
0
	def autoRig(self,meshName):
		height = self.getSizeY(meshName)
		minPosY = height[1]
		height = height[0]
		width = self.getSizeX(meshName)
		minPosX = width[1]
		width = width[0]
		bassinPoint = (minPosX + width * 0.0,minPosY + height * 0.48,self.getZ(minPosX + width * 0.0,minPosY + height * 0.48,meshName))
		couPoint = (minPosX + width * 0.0,minPosY + height * 0.870,self.getZ(minPosX + width * 0.0,minPosY + height * 0.870,meshName))
		epaulePoint = (minPosX + width * 0.129,minPosY + height * 0.825,self.getZ(minPosX + width * 0.129,minPosY + height * 0.825,meshName))
		coudePoint = (minPosX + width * 0.315,minPosY + height * 0.825,self.getZ(minPosX + width * 0.315,minPosY + height * 0.825,meshName))
		poignetPoint = (minPosX + width * 0.461,minPosY + height * 0.825,self.getZ(minPosX + width * 0.461,minPosY + height * 0.825,meshName))
		jambePoint = (minPosX + width * 0.0955,minPosY + height * 0.4,self.getZ(minPosX + width * 0.0955,minPosY + height * 0.4,meshName))
		genouPoint = (minPosX + width * 0.1,minPosY + height * 0.285,self.getZ(minPosX + width * 0.1,minPosY + height * 0.285,meshName))
		piedPoint = (minPosX + width * 0.12,minPosY + height * 0.039 ,self.getZ(minPosX + width * 0.12,minPosY + height * 0.039,meshName))
		
		cmds.select(clear=True)
		cmds.joint(p=bassinPoint,name="bassinBase")
		cmds.select("bassinBase")
		rigList = [couPoint,epaulePoint,coudePoint,poignetPoint]
		self.createListRig(rigList,"rigTop","bassinBase")
		cmds.select("bassinBase")
		rigList2 = [jambePoint,genouPoint,piedPoint]
		self.createListRig(rigList2,"rigBot","bassinBase")
		cmds.select("rigTop1")
		cmds.mirrorJoint(mirrorYZ=True)
		cmds.select("rigBot0")
		cmds.mirrorJoint(mirrorYZ=True)
		cmds.select("bassinBase")
		cmds.select(meshName,tgl=True)
		cmds.bindSkin()
예제 #15
0
def j_BodyFix():
    # Get The Goal Joint position 
    position = dict()
    dupJnt = ['ShoulderPart2_L','Elbow_L','ElbowPart1_L','HipPart2_L','Knee_L','KneePart1_L']
    for jnt in dupJnt:
        position[jnt] =mc.xform(jnt,ws=1,t=1,q=1)
        
    # Create  Joint  And Ikhandle From position
    newJnt = []
    na =1;
    for j in dupJnt: 
        if mc.objExists(('Fix'+j)):
            mc.select(('Fix'+j),r=1)
            break;
        newJnt.append(mc.joint(n=('Fix'+j),p=position[j],radius=1.75))
        if na%3==0:        
        # Create IKHandle With ikRPsolver , Then Mirror With IkHandle
            mc.joint(newJnt[0],e=1,zso=1,oj='xyz',sao='yup')
            mc.joint(newJnt[1],e=1,zso=1,oj='xyz',sao='yup')
            mc.setAttr('%s.jointOrient'%newJnt[2],0,0,0)
            ikhand = mc.ikHandle(name=('rpik_'+newJnt[1]+'01'),sj=newJnt[0],ee=newJnt[2],sol = 'ikSCsolver')
            mc.setAttr('%s.v'%ikhand[0],0)
            # mirrorJoint -mirrorYZ -mirrorBehavior -searchReplace "_L" "_R";
            mc.mirrorJoint(newJnt[0],mirrorYZ =1,mirrorBehavior =1,searchReplace=('_L','_R'))
            mc.parent(ikhand[0],j)
            mc.parent((re.sub('_L',"_R",ikhand[0])),(re.sub('_L','_R',j)))
            mc.parent(newJnt[0],dupJnt[na-3])
            mc.parent((re.sub("_L","_R",newJnt[0])),(re.sub('_L','_R',dupJnt[na-3])))
            newJnt = []       
            mc.select(clear=1)
        na=na+1; 
예제 #16
0
def mmMirrorJoint( *args ):
    
    sels= cmds.ls( sl=1 )
    
    for sel in sels:
        
        srcStr = ''
        trgStr = ''
        if sel.find( '_L_' ) != -1:
            other = sel.replace( '_L_', '_R_' )
            srcStr = '_L_'
            trgStr = '_R_'
        elif sel.find( '_R_' ) != -1:
            other = sel.replace( '_R_', '_L_' )
            srcStr = '_R_'
            trgStr = '_L_'
        else:
            continue
        
        if not cmds.objExists( other ):
            cmds.mirrorJoint( sel, mirrorYZ=1, mirrorBehavior=1, searchReplace=["_L_", "_R_"] )
        else:
            mtxTop = cmds.getAttr( sel+'.wm' )
            mtxTop[1] *= -1; mtxTop[ 2] *= -1
            mtxTop[5] *= -1; mtxTop[ 6] *= -1
            mtxTop[9] *= -1; mtxTop[10] *= -1
            mtxTop[12] *= -1
            cmds.xform( other, ws=1, matrix=mtxTop )
            
            children = cmds.listRelatives( sel, c=1, ad=1 )
            for child in children:
                mtx = cmds.getAttr( child+'.m' )
                mtx[12] *= -1; mtx[13] *= -1; mtx[14] *= -1
                otherChild = child.replace( srcStr, trgStr )
                cmds.xform( otherChild, matrix=mtx )
def buildLegs():
    leg_List = encodeList(cmds.listRelatives('leg_Ls'))
    for item in leg_List:
        if item != 'L_heel': 
            createJoint(item)
        elif item == 'L_hip':
            cmds.joint( 'waist', e=True, o=(0,0,0))
    cmds.mirrorJoint('L_hip',searchReplace=('L_', 'R_'))
예제 #18
0
def buildLegs():
    leg_List = encodeList(cmds.listRelatives("leg_Ls"))
    for item in leg_List:
        if item != "L_heel":
            createJoint(item)
        elif item == "L_hip":
            cmds.joint("waist", e=True, o=(0, 0, 0))
    cmds.mirrorJoint("L_hip", searchReplace=("L_", "R_"))
예제 #19
0
def buildLegs():
    leg_List = encodeList(cmds.listRelatives('leg_Ls'))
    for item in leg_List:
        if item != 'L_heel':
            createJoint(item)
        elif item == 'L_hip':
            cmds.joint('waist', e=True, o=(0, 0, 0))
    cmds.mirrorJoint('L_hip', searchReplace=('L_', 'R_'))
예제 #20
0
def buildArms():
    arm_List = encodeList(cmds.listRelatives("arm_Ls"))
    for item in arm_List:
        createJoint(item)
    cmds.parent("L_pinky01", "L_wrist")
    cmds.parent("L_index01", "L_wrist")
    cmds.parent("L_pointer01", "L_wrist")
    cmds.parent("L_thumb01", "L_wrist")
    cmds.mirrorJoint("L_clavicle", searchReplace=("L_", "R_"))
def buildArms():
    arm_List = encodeList(cmds.listRelatives('arm_Ls'))
    for item in arm_List:
        createJoint(item)
    cmds.parent('L_pinky01', 'L_wrist')
    cmds.parent('L_index01', 'L_wrist')
    cmds.parent('L_pointer01', 'L_wrist')
    cmds.parent('L_thumb01', 'L_wrist')
    cmds.mirrorJoint('L_clavicle',searchReplace=('L_', 'R_'))
예제 #22
0
 def MirrorLegChains(self, prefix, mirrorPrefix):
     cmds.mirrorJoint(self.hipJnt,
                      mirrorBehavior=True,
                      myz=True,
                      searchReplace=[prefix, mirrorPrefix])
     cmds.mirrorJoint(self.revCBankJnt,
                      mirrorBehavior=True,
                      myz=True,
                      searchReplace=[prefix, mirrorPrefix])
예제 #23
0
def buildArms():
    arm_List = encodeList(cmds.listRelatives('arm_Ls'))
    for item in arm_List:
        createJoint(item)
    cmds.parent('L_pinky01', 'L_wrist')
    cmds.parent('L_index01', 'L_wrist')
    cmds.parent('L_pointer01', 'L_wrist')
    cmds.parent('L_thumb01', 'L_wrist')
    cmds.mirrorJoint('L_clavicle', searchReplace=('L_', 'R_'))
예제 #24
0
def joint_left_add():
    #メッセージ
    cmds.inViewMessage(amg='<hl>「足のIK設置」</hl>を押してください。',
                       pos='midCenter',
                       fade=True,
                       fit=1,
                       fst=4000,
                       fts=20)
    cmds.mirrorJoint('Hip_R', myz=True, mb=True, sr=('_R', '_L'))
    cmds.mirrorJoint('Scapula_R', myz=True, mb=True, sr=('_R', '_L'))
예제 #25
0
파일: extraJoint.py 프로젝트: mappp7/tools
    def shoulder(self):
        cmds.select(cl=True)
        tmp = cmds.joint(n='L_template_shoulder', p=(1, 13, 0))
        shoulder = setUniqueName(tmp, 'JNT')
        cmds.mirrorJoint(shoulder,
                         mirrorYZ=True,
                         mirrorBehavior=True,
                         searchReplace=('L_', 'R_'))

        return
예제 #26
0
    def __mirror_chain(self, side=None):
        #--- this method mirrors the jointChain and the ikHandle
        #--- create one temporary joint at the origin
        tmp_jnt = cmds.joint(position=[0, 0, 0])

        #--- parent the chain to that joint
        cmds.parent(self.ik_joint_names[0], tmp_jnt)

        #--- mirror the chain and rename the mirrored side
        if side == 'L':
            self.mirrored_ik_joint_names = cmds.mirrorJoint(
                self.ik_joint_names[0],
                mirrorYZ=1,
                mirrorBehavior=1,
                searchReplace=(side, 'R'))
        elif side == 'l':
            self.mirrored_ik_joint_names = cmds.mirrorJoint(
                self.ik_joint_names[0],
                mirrorYZ=1,
                mirrorBehavior=1,
                searchReplace=(side, 'r'))
        elif side == 'R':
            self.mirrored_ik_joint_names = cmds.mirrorJoint(
                self.ik_joint_names[0],
                mirrorYZ=1,
                mirrorBehavior=1,
                searchReplace=(side, 'L'))
        elif side == 'r':
            self.mirrored_ik_joint_names = cmds.mirrorJoint(
                self.ik_joint_names[0],
                mirrorYZ=1,
                mirrorBehavior=1,
                searchReplace=(side, 'l'))
        else:
            self.mirrored_ik_joint_names = cmds.mirrorJoint(
                self.ik_joint_names[0], mirrorYZ=1, mirrorBehavior=1)

        #--- unparent the chain and delete the temporary joint
        cmds.parent(self.ik_joint_names[0],
                    self.mirrored_ik_joint_names[0],
                    world=1)
        cmds.delete(tmp_jnt)

        cmds.select(clear=1)

        #--- rename the side of the mirrored effector correctly and store the ik
        #--- and effector in a list
        mirrored_ik = self.mirrored_ik_joint_names[0][
            0] + self.ik_handle_names[0][1:]
        mirrored_eff = cmds.rename(
            self.mirrored_ik_joint_names[-1],
            self.mirrored_ik_joint_names[0][0] + self.ik_handle_names[-1][1:])
        self.mirrored_ik_handle_names = [mirrored_ik, mirrored_eff]
        self.mirrored_ik_joint_names.pop(-1)
예제 #27
0
def L_rig_leg_mirror():

    #easy mirror tool
    #should make it more correct, so you would not mirror it but set the orientation correct in case you dont have the

    r_leg_sel = cmds.ls(selection=True)

    cmds.mirrorJoint('R_Rig_femur_jnt',
                     mirrorYZ=True,
                     mirrorBehavior=True,
                     searchReplace=("R_", "L_"))
    def tgpCreateMirrorToes(self, jntMasterToes, leftRightReplace,
                            leftRightReplaceMirror):
        # return if the toe mirror alread exists
        checkReplace = jntMasterToes.replace(leftRightReplace,
                                             leftRightReplaceMirror)
        if mc.objExists(checkReplace):
            return checkReplace
        # just reflects it
        parentOfJnt = None
        parentOfJntMirror = None
        try:
            # in case the joint is already parented
            parentOfJnt = mc.listRelatives(jntMasterToes, p=True)[0]
            parentOfJntMirror = parentOfJnt.replace(leftRightReplace,
                                                    leftRightReplaceMirror)
        except:
            mc.warning("Master Toes joint already at world")

        if parentOfJnt is not None:
            # if there is a parent, place at world
            mc.parent(jntMasterToes, w=True)

        jntMasterToesMirrorWork = mc.mirrorJoint(
            jntMasterToes,
            mirrorYZ=True,
            mirrorBehavior=True,
            searchReplace=[leftRightReplace, leftRightReplaceMirror])
        jntMasterToesMirrorTop = jntMasterToesMirrorWork[0]

        if parentOfJnt is not None:
            # return to the top
            mc.parent(jntMasterToes, parentOfJnt)
            mc.parent(jntMasterToesMirrorTop, parentOfJntMirror)

        return jntMasterToesMirrorTop
예제 #29
0
def mirror_transform(path):
    """Mirror transform of node at `path` across the YZ axis

    Arguments:
        path (str): Path to transform to be mirrored

    Returns:
        Path to mirrored transform

    """

    temp_joint = cmds.createNode('joint')
    temp_ctl = cmds.duplicate(path,
                              inputConnections=True,
                              returnRootsOnly=True)

    cmds.parent(temp_joint, path)
    cmds.parent(temp_joint, world=True)
    cmds.parent(temp_ctl, temp_joint)
    mirrored = cmds.mirrorJoint(temp_joint, mirrorBehavior=True, mirrorYZ=True)

    mirrored_joint = mirrored.pop(0)
    mirrored_transform = mirrored.pop(0)

    cmds.parent(mirrored_transform, world=True)

    cmds.delete([temp_joint, temp_joint, mirrored_joint])

    return mirrored_transform
예제 #30
0
        def createTemplate(self , eyeMesh):
                # create eye jnt
                eyeJnt=[]
                if 'L_' in str(eyeMesh):
                        helpClu = mc.cluster(eyeMesh)[0]
                        LeyeJnt = mc.joint(p=(0,0,0),name=eyeMesh+'_skin_jnt')
                        self.fromAtoB(eyeJnt,helpClu,1)
                        ReyeJnt = mc.mirrorJoint(mirrorYZ=True,mirrorBehavior=False,searchReplace=('L_', 'R_')
                        eyeJnt.append(LeyeJnt)
                        eyeJnt.append(ReyeJnt)
                else:
                        self.mayaError('Please select the left eye.')

                return eyeJnt

        def createEyeRig(self):
                if mc.objExists(self.eyeGlobalCtrl) == False:
                        EyesGlobalCtrl = mc.curve(d=1,p=[(-1.069806, 1.027703, 0),(-1.651954,1.89895,0),(-2.523201,2.481098,0),(-3.550904,2.68552,0),(-4.578607,2.481098,0),(-5.449854,1.89895,0),(-6.032002,1.027703,0),(-6.236424,0,0),(-6.032002,-1.027703,0),(-5.449854 ,-1.89895, 0),(-4.578607,-2.481098,0), (-3.550904,-2.68552,0),(-2.523201, -2.481098, 0),(-1.651954,-1.89895,0),(-1.069806,-1.027703,0),(1.058138,-1.032345,0),(1.642915, -1.907527,0),(2.518098,-2.492305,0),( 3.550443,-2.69765,0),(4.582788,-2.492305,0),(5.45797,-1.907527,0),( 6.042748,-1.032345,0),(6.248093,0,0),(6.042748,1.032345,0),( 5.45797,1.907527,0 ),(4.582788,2.492305,0),( 3.550443,2.69765,0),(2.518098,2.492305,0 ),(1.642915,1.907527,0),(1.058138,1.032345,0),( -1.069806,1.027703,0)],k=[0,1,2,3,4,5,6,7,8,9,10,11,12 ,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],n=self.eyeGlobalCtrl)
                        L_EyeAimCtrl = mc.curve(d=1,p=[(3.653116 ,0.946994,0), (3.653116 ,0 ,0),( 2.706122, 0, 0) , (3.653116 ,0, 0),(4.600109, 0 ,0) , (3.653116 ,0, 0) , (3.653116 ,-0.946994, 0) ],k=[0, 1, 2 ,3 ,4 ,5 , 6 ],n='L_'+self.eyeAimCtrl)
                        R_EyeAimCtrl = mc.curve(d=1,p=[(3.653116 ,0.946994,0), (3.653116 ,0 ,0),( 2.706122, 0, 0) , (3.653116 ,0, 0),(4.600109, 0 ,0) , (3.653116 ,0, 0) , (3.653116 ,-0.946994, 0) ],k=[0, 1, 2 ,3 ,4 ,5 , 6 ],n='R_'+self.eyeAimCtrl)

                        mc.parent(L_EyeAimCtrl , EyesGlobalCtrl)
                        mc.parent(R_EyeAimCtrl , EyesGlobalCtrl)

                        self.fastGrp('On' , ['zero','con','sdk'],L_EyeAimCtrl)
                        self.fastGrp'On' , ['zero','con','sdk'],R_EyeAimCtrl)
                        zeroGrp = self.fastGrp('On' , ['zero','con','sdk'],EyesGlobalCtrl)[2]
예제 #31
0
	def optionJointLine(self):

		if optionUIClass.cb_value :

			optionJointClass.optionShiJointLine()

		else:
			if optionUIClass.Mirror_value:
				newJoint = option_mirrorJoint(obj = [self.aimObj,])
				if newJoint != []:
					allJnt_r = []
					for a in self.allJoint:
						jnt = cmds.mirrorJoint(a,mirrorYZ=1,mirrorBehavior=1,searchReplace =("Left","Right"))
						jnt1 = cmds.listRelatives(a,c=1)[0]

						Mir1 = a + "_Mirror1"
						Mir2 = a + "_Mirror2"

						cmds.rename(jnt[1],Mir2)
						cmds.rename(jnt[0],Mir1)
						allJnt_r.append(Mir1)
					optionJointClass.optionJointYiLine(aim=newJoint[0],allJnt=allJnt_r)

			optionJointClass.optionJointYiLine(aim=self.aimObj,allJnt=self.allJoint)

		print ("////Add OptionJoint ok -----"+"\n"),
예제 #32
0
def mirror(rootList=[], locList=[], leftToRight=True):
    '''
	Mirror rig template components
	@param rootList: List of template root joints to mirror. 
	@type rootList: list
	@param locList: List of template locators to mirror.
	@type locList: list
	@param leftToRight: Mirror from left to right if True. Mirror from right to left if False.
	@type leftToRight: bool
	'''
    # ==============
    # - Check Side -
    # ==============

    src = 'lf_'
    dst = 'rt_'
    if not leftToRight:
        src = 'rt_'
        dst = 'lf_'

    # ========================================
    # - Removed Existing Desitination Joints -
    # ========================================

    for root in rootList:
        if root.startswith(dst):
            mc.delete(root)

    # ======================
    # - Mirror Root Joints -
    # ======================

    # Mirror Joints
    for root in rootList:

        # Check Side
        if root.startswith(src):

            # Mirror Joint
            mirrorJoint = mc.mirrorJoint(root,
                                         mirrorYZ=True,
                                         mirrorBehavior=True,
                                         searchReplace=[src, dst])

            # Colour Hierarchy
            glTools.utils.colorize.colourHierarchy(root)
            glTools.utils.colorize.colourHierarchy(mirrorJoint[0])

    # ===================
    # - Mirror Locators -
    # ===================

    # Mirror Locator using Match()
    for loc in locList:

        # Check Side
        if loc.startswith(src):

            # Mirror Locator
            glTools.tools.match.Match().twin(loc)
예제 #33
0
def mirror_transform(path):
    """Mirror transform of node at `path` across the YZ axis

    Arguments:
        path (str): Path to transform to be mirrored

    Returns:
        Path to mirrored transform

    """

    temp_joint = cmds.createNode('joint')
    temp_ctl = cmds.duplicate(path,
                              inputConnections=True,
                              returnRootsOnly=True)

    cmds.parent(temp_joint, path)
    cmds.parent(temp_joint, world=True)
    cmds.parent(temp_ctl, temp_joint)
    mirrored = cmds.mirrorJoint(temp_joint,
                                mirrorBehavior=True,
                                mirrorYZ=True)

    mirrored_joint = mirrored.pop(0)
    mirrored_transform = mirrored.pop(0)

    cmds.parent(mirrored_transform, world=True)

    cmds.delete([temp_joint, temp_joint, mirrored_joint])

    return mirrored_transform
예제 #34
0
def mirrorJoint(joint, *args, **kwargs):
    if nodeType(joint) != 'joint':
        raise TypeError('Must Provide a joint.')

    # Query Joint Name
    source = None
    destination = None

    data = {
        'left': 'right',
        'Left': 'Right',
        '_l_': '_r_',
        '_L_': '_R_',
    }

    for x in data:
        if x in joint:
            source = x
            destination = data[x]
            break
        elif data[x] in joint:
            source = data[x]
            destination = x
            break

    # Run Mirror Function
    if source and destination:
        mirrored = cmds.mirrorJoint(joint,
                                    mirrorYZ=True,
                                    mirrorBehavior=True,
                                    searchReplace=[source, destination])
    else:
        mirrored = cmds.mirrorJoint(joint, mirrorYZ=True, mirrorBehavior=True)

    # Get and Set Side Joint Label
    sourceSide = getJointLabelSide(joint).lower()
    destinationSide = None

    if sourceSide == 'left':
        destinationSide = JointLabelSide.right
    elif sourceSide == 'right':
        destinationSide = JointLabelSide.left

    if destinationSide:
        for item in mirrored:
            setJointLabelSide(item, destinationSide)
    return mirrored
예제 #35
0
파일: extraJoint.py 프로젝트: mappp7/tools
    def finger(self):
        #thumb
        cmds.select(cl=True)
        tmp = cmds.joint(n='L_template_thumb1', p=(0.1, 0, 0))
        thumb1 = setUniqueName(tmp, 'JNT')

        tmp = cmds.joint(n='L_template_thumb2', p=(0.45, 0, 0))
        thumb2 = setUniqueName(tmp, 'JNT')
        cmds.joint(thumb1, e=True, zso=True, oj='xyz', sao='yup')

        tmp = cmds.joint(n='L_template_thumb3', p=(0.75, 0, 0))
        thumb3 = setUniqueName(tmp, 'JNT')
        cmds.joint(thumb2, e=True, zso=True, oj='xyz', sao='yup')
        tmp = cmds.joint(n='L_template_thumb4', p=(1.05, 0, 0))
        thumb4 = setUniqueName(tmp, 'JNT')
        cmds.joint(thumb3, e=True, zso=True, oj='xyz', sao='yup')

        cmds.setAttr(thumb1 + '.t', 10, 10, 0.5)
        cmds.setAttr(thumb1 + '.jointOrient', 80, -10, -30)

        cmds.mirrorJoint(thumb1,
                         mirrorYZ=True,
                         mirrorBehavior=True,
                         searchReplace=('L_', 'R_'))

        #index~pinky
        name = ['index', 'middle', 'ring', 'pinky']
        num = ['Palm', '1', '2', '3', '4']
        buffer = []
        cmds.select(cl=True)
        for i in range(len(name)):
            for n in range(len(num)):
                tmp = cmds.joint(n='L_template_' + name[i] + num[n],
                                 p=(0.35, 0, 0),
                                 r=True)
                fin = setUniqueName(tmp, 'JNT')
                buffer.append(fin)

            cmds.setAttr(buffer[0] + '.t', 10, 10, i * -0.2)
            cmds.mirrorJoint(buffer[0],
                             mirrorYZ=True,
                             mirrorBehavior=True,
                             searchReplace=('L_', 'R_'))
            cmds.select(cl=True)
            buffer = []

        return
예제 #36
0
파일: Rig.py 프로젝트: Cgoodw/MayaScripting
def createRig():
    mc.delete(textList)
    mc.parent('L_Hip_BIND', 'C_Pelvis_BIND')
    mc.parent('L_Knee_BIND', 'L_Hip_BIND')
    mc.parent('L_Ankle_BIND', 'L_Knee_BIND')
    mc.parent('L_Ball_BIND', 'L_Ankle_BIND')
    mc.parent('L_Toes_BIND', 'L_Ball_BIND')
    mc.parent('C_lowerSpine_BIND', 'C_Pelvis_BIND')
    mc.parent('C_lowerChest_BIND', 'C_lowerSpine_BIND')
    mc.parent('C_Chest_BIND', 'C_lowerChest_BIND')
    mc.parent('L_Clavicle_BIND', 'C_Chest_BIND')
    mc.parent('L_Shoulder_BIND', 'L_Clavicle_BIND')
    mc.parent('L_Elbow_BIND', 'L_Shoulder_BIND')
    mc.parent('L_Wrist_BIND', 'L_Elbow_BIND')
    mc.parent('L_Palm_BIND', 'L_Wrist_BIND')
    mc.parent('L_ThumbA_BIND', 'L_PinkieA_BIND', 'L_IndexA_BIND',
              'L_MiddleA_BIND', 'L_RingA_BIND', 'L_Palm_BIND')
    mc.parent('L_ThumbC_BIND', 'L_ThumbB_BIND', 'L_ThumbA_BIND')
    mc.parent('L_PinkieC_BIND', 'L_PinkieB_BIND', 'L_PinkieA_BIND')
    mc.parent('L_MiddleC_BIND', 'L_MiddleB_BIND', 'L_MiddleA_BIND')
    mc.parent('L_RingC_BIND', 'L_RingB_BIND', 'L_RingA_BIND')
    mc.parent('L_IndexC_BIND', 'L_IndexB_BIND', 'L_IndexA_BIND')

    mc.parent('L_ThumbC_BIND', 'L_ThumbB_BIND')
    mc.parent('L_PinkieC_BIND', 'L_PinkieB_BIND')
    mc.parent('L_MiddleC_BIND', 'L_MiddleB_BIND')
    mc.parent('L_RingC_BIND', 'L_RingB_BIND')
    mc.parent('L_IndexC_BIND', 'L_IndexB_BIND')

    mc.parent('C_upperSpine_BIND', 'C_Chest_BIND')

    mc.parent('C_lowerNeck_BIND', 'C_upperSpine_BIND')

    mc.parent('C_upperNeck_BIND', 'C_lowerNeck_BIND')
    mc.parent('C_Head_BIND', 'C_upperNeck_BIND')

    #mirror joints
    mc.mirrorJoint('L_Hip_BIND',
                   mirrorYZ=True,
                   mirrorBehavior=True,
                   sr=['L', 'R'])
    mc.mirrorJoint('L_Clavicle_BIND',
                   mirrorYZ=True,
                   mirrorBehavior=True,
                   sr=['L', 'R'])

    createRigControl()
예제 #37
0
    def install_custom(self, joints):
        cmds.select(clear=True)
        ikJoints=[]

        if not self.mirrored:
            index=0
            for joint in self.jointInfo:
                ikJoints.append(cmds.joint(n=self.moduleNamespace+":IK_"+joint[0], p=joint[1], absolute=True))
                cmds.setAttr(ikJoints[index]+".visibility",0)
                if index!=0:
                    cmds.joint(ikJoints[index-1],edit=True, oj="xyz", sao="yup")
                index+=1
        else:
            rootJointName=self.jointInfo[0][0]
            tempDuplicateNodes=cmds.duplicate(self.originalModule+":IK_"+rootJointName, renameChildren=True)
            cmds.delete(tempDuplicateNodes.pop())
            mirrorXY=False
            mirrorYZ=False
            mirrorXZ=False

            if self.mirrorPlane=="XY":
                mirrorXY=True
            elif self.mirrorPlane=="YZ":
                mirrorYZ=True
            elif self.mirrorPlane=="XZ":
                mirrorXZ=True

            mirrorBehavior=False
            if self.rotationFunction=="behaviour":
                mirrorBehaviour=True
            mirrorJoints=cmds.mirrorJoint(tempDuplicateNodes[0], mirrorXY=mirrorXY, mirrorYZ=mirrorYZ, mirrorXZ=mirrorXZ, mirrorBehavior=mirrorBehavior)
            cmds.delete(tempDuplicateNodes)
            cmds.xform(mirrorJoints[0], worldSpace=True, absolute=True, translation=cmds.xform(self.moduleNamespace+":"+rootJointName, q=True, worldSpace=True, translation=True))

            for i in range(3):
                jointName=self.jointInfo[i][0]
                newName=cmds.rename(mirrorJoints[i], self.moduleNamespace+":IK_"+jointName)
                ikJoints.append(newName)

        utils.addNodeToContainer(self.containerName, ikJoints)

        for joint in ikJoints:
            jointName=utils.stripAllNamespaces(joint)[1]
            cmds.container(self.containerName, edit=True, publishAndBind=[joint+".rotate", jointName+"_R"])

        cmds.setAttr(ikJoints[0]+".preferredAngleY", -50.0)
        cmds.setAttr(ikJoints[1]+".preferredAngleY", 50.0)
        ikNodes=utils.RP_2segment_stretchy_IK(ikJoints[0], ikJoints[1], ikJoints[2], self.containerName)
        locators=(ikNodes[0], ikNodes[1], ikNodes[2])
        distanceNodes=ikNodes[3]
        constraints=[]
        for i in range(3):
            constraints.append(cmds.pointConstraint(self.getTranslationControl(joints[i]), locators[i], maintainOffset=False)[0])
            cmds.parent(locators[i],self.moduleNamespace+":module_grp", absolute=True)
            cmds.setAttr(locators[i]+".visibility",0)
        utils.addNodeToContainer(self.containerName, constraints)
        scaleTarget=self.getTranslationControl(joints[1])
        paRepresentation=self.createPreferredAngleRepresentation(ikJoints[1], scaleTarget)
        cmds.setAttr(paRepresentation+".axis",lock=True) #107
    def mirror_and_rename(self):
        """
        Gets the list of all the selected objects of type 'joint' and their hierarchy.
        Mirrors each joint (and child) on the YX axes and renames each joint substituting
        '_L_' with '_R_".
        """

        objects_selected = cmds.ls(sl=True, l=True) or []

        if objects_selected:
            if cmds.objectType(objects_selected[0]) == 'joint':
                cmds.mirrorJoint(objects_selected,
                                 myz=True,
                                 mb=True,
                                 sr=('_L_', '_R_'))
        else:
            cmds.warning("You must select an object")
예제 #39
0
	def generate(self, params):
		print("OK !! " + str(params))
		cmds.select(clear=True)
		cmds.joint(p=params["hip"]["point"],name="bassinBase")
		cmds.select("bassinBase")
		rigList = [params["neck"]["point"],params["shoulder_left"]["point"],params["elbow_left"]["point"],params["wrist_left"]["point"]]
		self.createListRig(rigList,"rigTop","bassinBase")
		cmds.select("bassinBase")
		rigList2 = [params["leg_left"]["point"],params["knee_left"]["point"],params["foot_left"]["point"]]
		self.createListRig(rigList2,"rigBot","bassinBase")
		cmds.select("rigTop1")
		cmds.mirrorJoint(mirrorYZ=True)
		cmds.select("rigBot0")
		cmds.mirrorJoint(mirrorYZ=True)
		cmds.select("bassinBase")
		cmds.select(params["mesh_name"],tgl=True)
		cmds.bindSkin()
예제 #40
0
def MirrorParent():
    obj=cmds.ls(sl=True) 
    #mirror leg chain
    cmds.mirrorJoint('L_hip_jnt',mirrorYZ=True,mirrorBehavior=True,searchReplace=('L_', 'R_') )
    
    #mirror Arm chain
    cmds.mirrorJoint('L_collarBone_jnt',mirrorYZ=True,mirrorBehavior=True,searchReplace=('L_', 'R_') )
    
    
    #parent collarbone to chest
    cmds.parent('L_collarBone_jnt','chest_jnt', r=False)
    cmds.parent('R_collarBone_jnt','chest_jnt', r=False)
    
    #parent hips to root
    
    #parent collarbone to chest
    cmds.parent('L_hip_jnt','root_jnt', r=False)
    cmds.parent('R_hip_jnt','root_jnt', r=False)
예제 #41
0
def mirror(rootList=[],locList=[],leftToRight=True):
	'''
	Mirror rig template components
	@param rootList: List of template root joints to mirror. 
	@type rootList: list
	@param locList: List of template locators to mirror.
	@type locList: list
	@param leftToRight: Mirror from left to right if True. Mirror from right to left if False.
	@type leftToRight: bool
	'''
	# ==============
	# - Check Side -
	# ==============
	
	src = 'lf_'
	dst = 'rt_'
	if not leftToRight:
		src = 'rt_'
		dst = 'lf_'
	
	# ========================================
	# - Removed Existing Desitination Joints -
	# ========================================
	
	for root in rootList:
		if root.startswith(dst):
			mc.delete(root)
	
	# ======================
	# - Mirror Root Joints -
	# ======================
	
	# Mirror Joints
	for root in rootList:
		
		# Check Side
		if root.startswith(src):
		
			# Mirror Joint
			mirrorJoint = mc.mirrorJoint(root,mirrorYZ=True,mirrorBehavior=True,searchReplace=[src,dst])
			
			# Colour Hierarchy
			glTools.utils.colorize.colourHierarchy(root)
			glTools.utils.colorize.colourHierarchy(mirrorJoint[0])
	
	# ===================
	# - Mirror Locators -
	# ===================
	
	# Mirror Locator using Match()
	for loc in locList:
		
		# Check Side
		if loc.startswith(src):
			
			# Mirror Locator
			glTools.tools.match.Match().twin(loc)
예제 #42
0
    def mirror_chain(self, side=None):
        #--- create one temporary joint at the origin
        tmp_jnt = cmds.joint(position=[0, 0, 0])

        #--- parent the chain to that joint
        cmds.parent(self.fk_joint_names[0], tmp_jnt)

        #--- mirror the chain and rename the mirrored side
        if side == 'L':
            self.mirrored_fk_joint_names = cmds.mirrorJoint(
                self.fk_joint_names[0],
                mirrorYZ=1,
                mirrorBehavior=1,
                searchReplace=(side, 'R'))
        elif side == 'l':
            self.mirrored_fk_joint_names = cmds.mirrorJoint(
                self.fk_joint_names[0],
                mirrorYZ=1,
                mirrorBehavior=1,
                searchReplace=(side, 'r'))
        elif side == 'R':
            self.mirrored_fk_joint_names = cmds.mirrorJoint(
                self.fk_joint_names[0],
                mirrorYZ=1,
                mirrorBehavior=1,
                searchReplace=(side, 'L'))
        elif side == 'r':
            self.mirrored_fk_joint_names = cmds.mirrorJoint(
                self.fk_joint_names[0],
                mirrorYZ=1,
                mirrorBehavior=1,
                searchReplace=(side, 'l'))
        else:
            self.mirrored_fk_joint_names = cmds.mirrorJoint(
                self.fk_joint_names[0], mirrorYZ=1, mirrorBehavior=1)

        #unparent the chain and delete the temporary joint
        cmds.parent(self.fk_joint_names[0],
                    self.mirrored_fk_joint_names[0],
                    world=1)
        cmds.delete(tmp_jnt)

        cmds.select(clear=1)
        return self.mirrored_fk_joint_names
예제 #43
0
def mmMirrorJoint(*args):

    sels = cmds.ls(sl=1)

    for sel in sels:

        srcStr = ''
        trgStr = ''
        if sel.find('_L_') != -1:
            other = sel.replace('_L_', '_R_')
            srcStr = '_L_'
            trgStr = '_R_'
        elif sel.find('_R_') != -1:
            other = sel.replace('_R_', '_L_')
            srcStr = '_R_'
            trgStr = '_L_'
        else:
            continue

        if not cmds.objExists(other):
            cmds.mirrorJoint(sel,
                             mirrorYZ=1,
                             mirrorBehavior=1,
                             searchReplace=["_L_", "_R_"])
        else:
            mtxTop = cmds.getAttr(sel + '.wm')
            mtxTop[1] *= -1
            mtxTop[2] *= -1
            mtxTop[5] *= -1
            mtxTop[6] *= -1
            mtxTop[9] *= -1
            mtxTop[10] *= -1
            mtxTop[12] *= -1
            cmds.xform(other, ws=1, matrix=mtxTop)

            children = cmds.listRelatives(sel, c=1, ad=1)
            for child in children:
                mtx = cmds.getAttr(child + '.m')
                mtx[12] *= -1
                mtx[13] *= -1
                mtx[14] *= -1
                otherChild = child.replace(srcStr, trgStr)
                cmds.xform(otherChild, matrix=mtx)
예제 #44
0
    def __mirror_chain(self):
        """ Mirror the created jointChain create one temporary joint at the origin """
        if not self._mirror:
            return
        tmp_jnt = cmds.joint(position=[0, 0, 0])

        #--- parent the chain to that joint
        cmds.parent(self.joint_names[0], tmp_jnt)

        #--- mirror the chain and rename the mirrored side
        if self._side == 'L':
            self.mirrored_joint_names = cmds.mirrorJoint(
                self.joint_names[0],
                mirrorYZ=True,
                mirrorBehavior=True,
                searchReplace=(self._side, 'R'))
        elif self._side == 'R':
            self.mirrored_joint_names = cmds.mirrorJoint(
                self.joint_names[0],
                mirrorYZ=True,
                mirrorBehavior=True,
                searchReplace=(self._side, 'L'))
        else:
            self.mirrored_joint_names = cmds.mirrorJoint(self.joint_names[0],
                                                         mirrorYZ=True,
                                                         mirrorBehavior=True)

        #--- unparent the chain and delete the temporary joint
        cmds.parent(self.joint_names[0],
                    self.mirrored_joint_names[0],
                    world=True)
        cmds.delete(tmp_jnt)
        cmds.select(clear=True)

        #--- rename the side of the effector correctly and store the ik, eff in a list
        mirrored_ik = self.mirrored_joint_names[0][0] + self.ik_handle_names[
            0][1:]
        mirrored_eff = cmds.rename(
            self.mirrored_joint_names[-1],
            self.mirrored_joint_names[0][0] + self.ik_handle_names[-1][1:])
        self.mirrored_ik_handle_names = [mirrored_ik, mirrored_eff]
        self.mirrored_joint_names.pop(-1)
예제 #45
0
파일: util.py 프로젝트: darkuress/arNew
 def mirrorJoints(self, topJoint):
     """
     mirroring joint, top node needs to contain 'l_' as prefix
     """
     
     cmds.select(cl = True)
     cmds.joint(n = 'temp_jnt')
     cmds.select(topJoint, r = True)
     cmds.select('temp_jnt', tgl = True)
     self.toggleSelect(topJoint, 'temp_jnt')
     cmds.parent()
     
     cmds.select(topJoint, r = True)
     cmds.mirrorJoint(mirrorYZ = True, mirrorBehavior  = True, searchReplace =  ['l_', 'r_'])
     
     rJoint = 'r_' + topJoint.split('l_')[-1]
     cmds.select(topJoint, rJoint)
     cmds.parent(w = True)
     
     cmds.delete('temp_jnt')    
예제 #46
0
def j_BodyFix():
    # Get The Goal Joint position
    position = dict()
    dupJnt = [
        'ShoulderPart2_L', 'Elbow_L', 'ElbowPart1_L', 'HipPart2_L', 'Knee_L',
        'KneePart1_L'
    ]
    for jnt in dupJnt:
        position[jnt] = mc.xform(jnt, ws=1, t=1, q=1)

    # Create  Joint  And Ikhandle From position
    newJnt = []
    na = 1
    for j in dupJnt:
        if mc.objExists(('Fix' + j)):
            mc.select(('Fix' + j), r=1)
            break
        newJnt.append(mc.joint(n=('Fix' + j), p=position[j], radius=1.75))
        if na % 3 == 0:
            # Create IKHandle With ikRPsolver , Then Mirror With IkHandle
            mc.joint(newJnt[0], e=1, zso=1, oj='xyz', sao='yup')
            mc.joint(newJnt[1], e=1, zso=1, oj='xyz', sao='yup')
            mc.setAttr('%s.jointOrient' % newJnt[2], 0, 0, 0)
            ikhand = mc.ikHandle(name=('rpik_' + newJnt[1] + '01'),
                                 sj=newJnt[0],
                                 ee=newJnt[2],
                                 sol='ikSCsolver')
            mc.setAttr('%s.v' % ikhand[0], 0)
            # mirrorJoint -mirrorYZ -mirrorBehavior -searchReplace "_L" "_R";
            mc.mirrorJoint(newJnt[0],
                           mirrorYZ=1,
                           mirrorBehavior=1,
                           searchReplace=('_L', '_R'))
            mc.parent(ikhand[0], j)
            mc.parent((re.sub('_L', "_R", ikhand[0])), (re.sub('_L', '_R', j)))
            mc.parent(newJnt[0], dupJnt[na - 3])
            mc.parent((re.sub("_L", "_R", newJnt[0])),
                      (re.sub('_L', '_R', dupJnt[na - 3])))
            newJnt = []
            mc.select(clear=1)
        na = na + 1
예제 #47
0
파일: Joints.py 프로젝트: darkuress/arFace
    def createJnts(self, eyeBrowVtxs):
        """
        creating joints on selected vertaxes
        """
        self.eyeBrowVtxs = eyeBrowVtxs
        sel = eval(self.eyeBrowVtxs)
        tempVerts = sel
        verts = self.sortSelected(tempVerts)
        cmds.select(cl = True)
        index = 1
        
        for x in verts:
            vertPos = cmds.xform(x, t = True, q = True, ws = True)
            if vertPos[0] <= 0.05:

                baseCntJnt = cmds.joint(n = self.baseCntJntName + str(index).zfill(2) + self.jntSuffix,
                                        p = [ 0, self.browRotXCrvPos[1], self.browRotXCrvPos[2]])
                ryCntJnt   = cmds.joint(n = self.browRotYJntName.replace(self.prefix[0], self.cPrefix) + self.jntSuffix,
                                        p = [ 0, self.browRotYCrvPos[1], self.browRotYCrvPos[2]])
                parentCntJnt = cmds.joint(n = self.parentCntJntName + str(index).zfill(2) + self.jntSuffix,
                                          p = vertPos)
                cmds.setAttr(baseCntJnt+'.rotateOrder', 2)
                cmds.joint(n = self.cPrefix + self.jntName + str(index), p = vertPos)
                cmds.joint(ryCntJnt, e=1, oj= 'zyx', secondaryAxisOrient = 'yup', ch=1,  zso=1)
                cmds.select(cl = True)
                
                #- save base joints
                self.allBaseJnts.append(baseCntJnt)
                
            else:
                baseJnt = cmds.joint(n = self.baseJntName + str(index).zfill(2) + self.jntSuffix,
                                     p = self.browRotXCrvPos)
                ryJnt = cmds.joint(n = self.browRotYJntName + str(index).zfill(2)+ self.jntSuffix, p = self.browRotYCrvPos )
                parentJnt = cmds.joint(n = self.parentJntName + str(index).zfill(2) + self.jntSuffix,
                                       p = vertPos)
                cmds.setAttr(baseJnt+'.rotateOrder', 2)
                cmds.joint(n = self.ljntName + str(index) + self.jntSuffix, p = vertPos)
                cmds.select(cl = True)
                cmds.joint(ryJnt, e=1, oj= 'zyx', secondaryAxisOrient = 'yup', ch=1,  zso=1)
                
                #- miorroring joints
                #- so far mirroring in Util module does not work with this code
                #- self.mirrorJoints(baseJnt, prefix = self.prefix)
                mirrJnt = cmds.mirrorJoint(baseJnt, mirrorYZ= True, searchReplace=(self.prefix[0], self.prefix[1]), mirrorBehavior = 1)
                cmds.joint(mirrJnt, e=1, oj= 'zyx', secondaryAxisOrient = 'yup', ch=1,  zso=1)
                cmds.select(cl = True)
                index = index + 1
                
                #- save base joints
                self.allBaseJnts.append(baseJnt)
                self.allBaseJnts.append(baseJnt.replace(self.prefix[0], self.prefix[1]))
                
        return self.allBaseJnts
예제 #48
0
def mirrorJoints():
    sel = cmds.ls(sl=True)  #joint selection
    for j in sel:  #loop through selected joints
        mj = cmds.mirrorJoint(j, mirrorYZ=True, searchReplace=["_R", "_L"])
        #mirror the joint
        mj = mj[0]  #redefine result as string using the first object
        ry = cmds.getAttr("%s.rotateY" % mj)  #get rotate Y
        rz = cmds.getAttr("%s.rotateZ" % mj)  #get rotate Z
        cmds.setAttr("%s.rotateY" % mj, ry * -1)  #correct Y rotation
        cmds.setAttr("%s.rotateZ" % mj, rz * -1)  #correct Z rotation
        cmds.setAttr("%s.side" % mj, 1)  #set joint label side to "Left"
        cmds.color(mj, ud=6)  #change joint colour
예제 #49
0
    def similarPose(self, jnt):

        tmp = []
        parents = []

        #called zeroOut class
        zero = zeroOut()

        if 'L_' in jnt:
            tmp = cmds.joint(jnt, n='replace_' + jnt)
            cmds.parent(tmp, w=1)
            cmds.mirrorJoint(tmp,
                             mirrorYZ=True,
                             mirrorBehavior=True,
                             searchReplace=('L_', 'R_'))
            ls = cmds.listRelatives(jnt.replace('L_', 'R_'), c=True)
            if ls is not None:
                cmds.parent(ls, w=True)
                cmds.delete(
                    cmds.parentConstraint(tmp.replace('L_', 'R_'),
                                          jnt.replace('L_', 'R_'),
                                          w=1))
                cmds.parent(ls, jnt.replace('L_', 'R_'))
                cmds.delete(tmp, tmp.replace('L_', 'R_'))
                zero.zeroOutJoint(jnt)
                zero.zeroOutJoint(jnt.replace('L_', 'R_'))
            else:
                cmds.delete(
                    cmds.parentConstraint(tmp.replace('L_', 'R_'),
                                          jnt.replace('L_', 'R_'),
                                          w=1))
                cmds.delete(tmp, tmp.replace('L_', 'R_'))
                zero.zeroOutJoint(jnt)
                zero.zeroOutJoint(jnt.replace('L_', 'R_'))

        else:

            zero.zeroOutJoint(jnt)

        return
예제 #50
0
파일: joint.py 프로젝트: jonntd/Public
    def __mirror_chain(self):
        """ Mirror the created jointChain create one temporary joint at the origin """
        if not self._mirror:
            return
        tmp_jnt = cmds.joint(position=[0, 0, 0])

        #--- parent the chain to that joint
        cmds.parent(self.joint_names[0], tmp_jnt)

        #--- mirror the chain and rename the mirrored side
        if self._side == 'L':
            self.mirrored_joint_names = cmds.mirrorJoint(self.joint_names[0],
                                                         mirrorYZ=True,
                                                         mirrorBehavior=True,
                                                         searchReplace=(self._side, 'R'))
        elif self._side == 'R':
            self.mirrored_joint_names = cmds.mirrorJoint(self.joint_names[0],
                                                         mirrorYZ=True,
                                                         mirrorBehavior=True,
                                                         searchReplace=(self._side, 'L'))
        else:
            self.mirrored_joint_names = cmds.mirrorJoint(self.joint_names[0],
                                                         mirrorYZ=True,
                                                         mirrorBehavior=True)

        #--- unparent the chain and delete the temporary joint
        cmds.parent(self.joint_names[0], self.mirrored_joint_names[0], world=True)
        cmds.delete(tmp_jnt)
        cmds.select(clear=True)

        #--- rename the side of the effector correctly and store the ik, eff in a list
        mirrored_ik = self.mirrored_joint_names[0][0] + self.ik_handle_names[0][1:]
        mirrored_eff = cmds.rename(self.mirrored_joint_names[-1],
                                   self.mirrored_joint_names[0][0] +
                                   self.ik_handle_names[-1][1:])
        self.mirrored_ik_handle_names = [mirrored_ik, mirrored_eff]
        self.mirrored_joint_names.pop(-1)
예제 #51
0
    def createJoints(self):
        #create joint list
        self.baseJoints = []

        for i in range(len(self.jointList)):
            self.baseJoints.append("%s_%s"%(self.jointList[i], self.jointSuffix))

        #populate IK list
        for baseJoint in self.baseJoints:
            ikName = "%s_IK_%s"%(self.prefix, baseJoint)
            self.IKJointOrig.append(ikName)

        #populate FK list
        for baseJoint in self.baseJoints:
            fkName = "%s_FK_%s"%(self.prefix, baseJoint)
            self.FKJointOrig.append(fkName)

        #populate bind list
        for baseJoint in self.baseJoints:
            bindName = "%s_bind_%s"%(self.prefix, baseJoint)
            self.bindJointOrig.append(bindName)

        #populate measure list
        for baseJoint in self.baseJoints:
            measureName = "%s_measure_%s"%(self.prefix, baseJoint)
            self.measureJointOrig.append(measureName)

        #create joints, parent, orient for each of (IK, FK, Bind, Measure)
        for chain in self.jointChains:
            for j in range(len(self.locList)):
                list = "self.%sJointOrig"%chain
                #get loc position
                locPos = cmds.xform(self.locList[j], q=True, ws=True, rp=True)
                cmds.select(cl=True)
                #create joints on loc
                cmds.joint(name=(eval("%s[j]"%list)), p=locPos)

        #parent up the joints to each other from each chain
        #ik
        for i in range(len(self.locList)-1, 0, -1):
            cmds.parent(self.IKJointOrig[i], self.IKJointOrig[i-1])
        #fk
        for i in range(len(self.locList)-1, 0, -1):
            cmds.parent(self.FKJointOrig[i], self.FKJointOrig[i-1])
        #bind
        for i in range(len(self.locList)-1, 0, -1):
            cmds.parent(self.bindJointOrig[i], self.bindJointOrig[i-1])
        #measure
        for i in range(len(self.locList)-1, 0, -1):
            cmds.parent(self.measureJointOrig[i], self.measureJointOrig[i-1])

        #orient the joint chains according to settings above
        #first letter in joint oj=flag. Second letter in xyz would be the secondary axis, this is +/-, which would then go into sao="letter"up/down flag.
        order = {1:"x", 2:"y", 3:"z"}
        self.jAxis1 = order[self.mainAxis]
        self.jAxis2 = order[self.secondaryAxis]
        ROPart = self.jAxis1 + self.jAxis2
        if (ROPart == "xy") or (ROPart == "yx"):
            self.jointOrientation = ROPart + "z"
        if (ROPart == "xz") or (ROPart=="zx"):
            self.jointOrientation = ROPart + "y"
        if (ROPart=="yz") or (ROPart=="zy"):
            self.jointOrientation = ROPart + "x"

        #get positive or negative
        if self.posNeg == 1:
            direct = "up"
        if self.posNeg == 2:
            direct = "down"

        #get the up/down secondary axis string
        minorAxis = self.jAxis2 + direct

        #orient the joints
        cmds.joint(self.IKJointOrig[0], e=True, oj = self.jointOrientation, ch=True, sao=minorAxis, zso=True )
        cmds.joint(self.FKJointOrig[0], e=True, oj = self.jointOrientation, ch=True, sao=minorAxis, zso=True )
        cmds.joint(self.measureJointOrig[0], e=True, oj = self.jointOrientation, ch=True, sao=minorAxis, zso=True )
        cmds.joint(self.bindJointOrig[0], e=True, oj = self.jointOrientation, ch=True, sao=minorAxis, zso=True )

        #mirroring - from here out prefix is repr by list (prefixList)
        if self.mirror:
            if self.prefix == "lf":
                self.prefixList = ["lf", "rt"]
            elif self.prefix == "rt":
                self.prefixList = ["rt", "lf"]
            else:
                self.prefixList = [self.prefix, self.mirrorName]
        else:
            self.prefixList = [self.prefix]

        if self.mirror:
            #get mirror plane, then mirror joint chain
            if self.mirrorAxis=="xy":
                self.IKJointMirror = cmds.mirrorJoint(self.IKJointOrig[0], mxy=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
                self.FKJointMirror = cmds.mirrorJoint(self.FKJointOrig[0], mxy=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
                self.measureJointMirror = cmds.mirrorJoint(self.measureJointOrig[0], mxy=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
                self.bindJointMirror = cmds.mirrorJoint(self.bindJointOrig[0], mxy=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
            elif self.mirrorAxis == "yz":
                self.IKJointMirror = cmds.mirrorJoint(self.IKJointOrig[0], myz=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
                self.FKJointMirror = cmds.mirrorJoint(self.FKJointOrig[0], myz=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
                self.measureJointMirror = cmds.mirrorJoint(self.measureJointOrig[0], myz=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
                self.bindJointMirror = cmds.mirrorJoint(self.bindJointOrig[0], myz=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
            elif self.mirrorAxis == "xz":
                self.IKJointMirror = cmds.mirrorJoint(self.IKJointOrig[0], mxz=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
                self.FKJointMirror = cmds.mirrorJoint(self.FKJointOrig[0], mxz=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
                self.measureJointMirror = cmds.mirrorJoint(self.measureJointOrig[0], mxz=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))
                self.bindJointMirror = cmds.mirrorJoint(self.bindJointOrig[0], mxz=True, mb=True, sr=(self.prefixList[0], self.prefixList[1]))

        #now set up list for each type of chain, gets "orig" version and if mirror from uI,  then gets "mirror" version of chain appended to the end
        self.IKChains.append(self.IKJointOrig)
        if self.mirror:
            self.IKChains.append(self.IKJointMirror)

        self.FKChains.append(self.FKJointOrig)
        if self.mirror:
            self.FKChains.append(self.FKJointMirror)

        self.measureChains.append(self.measureJointOrig)
        if self.mirror:
            self.measureChains.append(self.measureJointMirror)

        self.bindChains.append(self.bindJointOrig)
        if self.mirror:
            self.bindChains.append(self.bindJointMirror)

        #start the measure method - go through this once for each chain
        for x in range(len(self.prefixList)):
            self.setupMeasure(self.prefixList, x)
def buildLegs():
    leg_List = encodeList(cmds.listRelatives('leg_Ls'))
    for item in leg_List:
        if item != 'L_heel': 
            createJoint(item)
    cmds.mirrorJoint('L_hip',searchReplace=('L_', 'R_'))
def buildArms():
    arm_List = encodeList(cmds.listRelatives('arm_Ls'))
    for item in arm_List:
        createJoint(item)
    cmds.mirrorJoint('L_clavicle',searchReplace=('L_', 'R_'))
예제 #54
0
파일: wing.py 프로젝트: griffinanimator/MPR
    def install_custom(self, joints):
        cmds.select(clear=True)
        ikJoints=[]
        
        if not self.mirrored:
            index = 0
            for joint in self.jointInfo:
                ikJoints.append(cmds.joint(n=self.moduleNamespace+":IK_"+joint[0], p=joint[1], absolute=True, rotationOrder="xyz"))
                
                cmds.setAttr(ikJoints[index]+".visibility", 0)
                
                if index != 0:
                	cmds.joint(ikJoints[index -1], edit=True, oj="xyz", sao="yup")
                	
                index += 1
        else:
            rootJointName = self.jointInfo[0][0]
            tempDuplicateNodes = cmds.duplicate(self.originalModule+":IK_"+rootJointName, renameChildren=True)
            
            cmds.delete(tempDuplicateNodes.pop())
            
            mirrorXY = False
            mirrorYZ = False
            mirrorXZ = False
            if self.mirrorPlane == "XY":
                mirrorXY = True
            elif self.mirrorPlane == "YZ":
                mirrorYZ = True
            elif self.mirrorPlane == "XZ":
                mirrorXZ = True
                
                
            mirrorBehavior = False
            if self.rotationFunction == "behavior":
                mirrorBehavior = True
                
            mirrorJoints = cmds.mirrorJoint(tempDuplicateNodes[0], mirrorXY=mirrorXY, mirrorXZ=mirrorXZ, mirrorYZ=mirrorYZ, mirrorBehavior=mirrorBehavior)
                
            cmds.delete(tempDuplicateNodes)
            
            cmds.xform(mirrorJoints[0], ws=True, a=True, translation=cmds.xform(self.moduleNamespace+":"+rootJointName, q=True, ws=True, t=True))
            
            for i in range(3):
                jointName = self.jointInfo[i][0]
                newName = cmds.rename(mirrorJoints[i], self.moduleNamespace+":IK_"+jointName)
                ikJoints.append(newName)
                              	
        utils.addNodeToContainer(self.containerName, ikJoints)
        
        for joint in ikJoints:
            jointName = utils.stripAllNamespaces(joint)[1]
            cmds.container(self.containerName, edit=True, publishAndBind=[joint+".rotate", jointName+"_R"])
            
        cmds.setAttr(ikJoints[0]+".preferredAngleY", -50.0)
        cmds.setAttr(ikJoints[1]+".preferredAngleY", 50.0)

        # Call on the stretchy ik function from utils
        ikNodes = utils.RP_2segment_stretchy_IK(ikJoints[0], ikJoints[1], ikJoints[2], self.containerName)
        locators = (ikNodes[0], ikNodes[1], ikNodes[2])
        distanceNodes = ikNodes[3]
        
        # Point constraint stretch locators to transform control objects
        constraints = []
        for i in range(3):
            constraints.append(cmds.pointConstraint(self.getTranslationControl(joints[i]), locators[i], maintainOffset=False)[0])
            cmds.parent(locators[i], self.moduleNamespace+":module_grp", absolute=True)
            cmds.setAttr(locators[i]+".visibility", 0)
            
        utils.addNodeToContainer(self.containerName, constraints)
        
        scaleTarget = self.getTranslationControl(joints[1])
        paRepresentation = self.createPreferredAngleRepresentation(ikJoints[1], scaleTarget)
        
        cmds.setAttr(paRepresentation+".axis", lock=True)
예제 #55
0
파일: LegRig.py 프로젝트: edeglau/storage
    def __init__(self):
        #SKELETON
        getGuide=cmds.ls("*_guide")
        
        legRightFull=("legRight_guide",
                    "leghipRight_guide",             
                  "legkneeRight_guide", 
                  "foottalusRight_guide")
        legRight=("leghipRight_guide",             
                  "legkneeRight_guide", 
                  "foottalusRight_guide")
        
        getLimbs=( legRightFull) 
        
        cmds.select(cl=1)
        
        
        for item in getLimbs:
            jointSuffix='_jnt'
            getClass.rigJoints(item, jointSuffix)
        cmds.select(cl=1)
              
        for each in legRight:
            jointSuffix='FK_jnt'
            getClass.rigJoints(each, jointSuffix)          
        cmds.select(cl=1)   
              
        for each in legRight:
            jointSuffix='IK_jnt'
            getClass.rigJoints(each, jointSuffix)  
        cmds.select(cl=1)           
        
        
        cmds.mirrorJoint("legRight_jnt", myz=1, sr=("Right", "Left"))
        cmds.mirrorJoint("leghipRightIK_jnt", myz=1, sr=("Right", "Left"))
        cmds.mirrorJoint("leghipRightFK_jnt", myz=1, sr=("Right", "Left"))        
              
        resetOrient=["legLeft_jnt",
                    "legRight_jnt",
                    "leghipRightFK_jnt",
                    "leghipRightIK_jnt",
                    "leghipLeftIK_jnt",
                    "leghipLeftFK_jnt"
                    ]
        for each in resetOrient:
            cmds.joint( each, e=1, children=1, zso=1, oj='xyz', sao='yup', spa=1) 
 
        
        
        #########################################################################
        #########################################################################
        #########################################################################
        #########################################################################

        #controllers
        Side=["Right", "Left"]
        
        for eachSide in Side:
            translations=[".tx", ".ty", ".tz"] 
            rotation=[".rx", ".ry", ".rz"]
            
            jointGroup=[
                        "leghip"+eachSide,
                        "legknee"+eachSide,
                        "foottalus"+eachSide,
                        ]
                         
            cmds.group( em=True, name='IK_grp' )
            
            groupCtrls=[]             
            for eachjoint in jointGroup:
                scaleWorldMatrix = cmds.xform(eachjoint.split(eachSide)[0]+"Right_guide", q=True, r=1, s=True)
                scaleWorldMatrix=int(scaleWorldMatrix[0])                 
                eachPiece=eachjoint+"_jnt"
                name=eachjoint+"_ctrl"
                grpname=eachjoint+"_grp" 
                if "hip" in eachjoint:
                    size=12*scaleWorldMatrix
                    colour=6
                else:      
                    size=7*scaleWorldMatrix
                    colour=6  
                if "talus" in eachjoint:
                    nrx=0
                    nry=1
                    nrz=0     
                else:  
                    nrx=1
                    nry=0
                    nrz=0
                cmds.select(cl=1) 
                getTranslation, getRotation=getClass.locationXForm(eachPiece)
                getClass.buildCtrl(eachjoint, name, grpname, getTranslation, getRotation, size, colour, nrx, nry, nrz)
                colour1=18
                colour2=colour1
                colour3=colour1
                if "knee" in eachjoint:
                    pass
                else:
                    getClass.guideBuild(eachjoint, getTranslation, getRotation, colour1, colour2, colour3 )
                    getsel=cmds.ls(sl=1)
                    cmds.setAttr(getsel[0]+".overrideColor", colour1)
                    lognm=each.replace("grp", 'nod')   
                    cmds.rename(getsel[0], getsel[0]+'_nod')
                    getsel=cmds.ls(sl=1)
                    getClass.buildGrp(getsel[0])
                if "knee" in eachjoint:
                    cmds.setAttr(name+".sx" , keyable=0, lock=1)
                    cmds.setAttr(name+".sy" , keyable=0, lock=1)
                    cmds.setAttr(name+".sz", keyable=0, lock=1)                    
                    cmds.setAttr(name+".rx" , keyable=0, lock=1)
                    cmds.setAttr(name+".ry", keyable=0, lock=1)  
                    cmds.setAttr(name+".tx" , keyable=0, lock=1)
                    cmds.setAttr(name+".ty" , keyable=0, lock=1)
                    cmds.setAttr(name+".tz", keyable=0, lock=1)    
                if "hip" in eachjoint or "talus" in eachjoint:
                    cmds.setAttr(name+".sx" , keyable=0, lock=1)
                    cmds.setAttr(name+".sy" , keyable=0, lock=1)
                    cmds.setAttr(name+".sz", keyable=0, lock=1) 
                    cmds.setAttr(name+".tx" , keyable=0, lock=1)
                    cmds.setAttr(name+".ty" , keyable=0, lock=1)
                    cmds.setAttr(name+".tz", keyable=0, lock=1)                            
                
            jointGroup=[
                        "leghip"+eachSide+"",
                        "foottalus"+eachSide+"",
                        ]
            #ik
            IKHandlesLimbs=[
                            "legknee"+eachSide, 
                            "foottalus"+eachSide
                            ]

            for each in IKHandlesLimbs:
                name=each+"_jnt_ikPole_lctr"
                grpname=each+"_jnt_ikPole_lctr_grp"
                num=3*scaleWorldMatrix
                color=13                
                getTranslation=cmds.xform(each+"_jnt", q=1, t=1, ws=1)
                if "knee" in each:
                    getClass.JackI(name, grpname, num, getTranslation, (0.0,0.0,0.0), color)
                    cmds.move( 0.0, 0.0, +30.0,grpname,r=1, rpr=1)                    
                    #cmds.spaceLocator(n=each+"_jnt_ikPole_lctr", p=(getTranslation[0], getTranslation[1], getTranslation[2]+30))        
                elif "talus" in each and "Right" in each:
                    getClass.JackI(name, grpname, num, getTranslation, (0.0,0.0,0.0), color)
                    cmds.move( -40.0, 0.0, +30.0,grpname,r=1, rpr=1)                     
                    #cmds.spaceLocator(n=each+"_jnt_ikPole_lctr", p=(getTranslation[0]-40, getTranslation[1], getTranslation[2]))       
                elif "talus" in each and "Left" in each:
                    getClass.JackI(name, grpname, num, getTranslation, (0.0,0.0,0.0), color)
                    cmds.move( 40.0, 0.0, +30.0,grpname,r=1, rpr=1)                     
                    #cmds.spaceLocator(n=each+"_jnt_ikPole_lctr", p=(getTranslation[0]+40, getTranslation[1], getTranslation[2]))
                else:
                    getClass.JackI(name, grpname, num, getTranslation, (0.0,0.0,0.0), color)                   
                    #cmds.spaceLocator(n=each+"_jnt_ikPole_lctr", p=(getTranslation[0], getTranslation[1], getTranslation[2]))
#                 cmds.setAttr(each+"_jnt_ikPole_lctr"+"Shape.overrideEnabled", 1)
#                 cmds.setAttr(each+"_jnt_ikPole_lctr"+"Shape.overrideColor", 13)
#                 cmds.setAttr(each+"_jnt_ikPole_lctr"+"Shape.localScaleX", 3)
#                 cmds.setAttr(each+"_jnt_ikPole_lctr"+"Shape.localScaleY", 3) 
#                 cmds.setAttr(each+"_jnt_ikPole_lctr"+"Shape.localScaleZ", 3) 
#                 cmds.CenterPivot()
#                 cmds.group(n=each+"_jnt_ikPole_lctr"+"_grp")
                getTranslation=cmds.xform(each+"_jnt", q=1, t=1, ws=1)
                cmds.move(getTranslation[0], getTranslation[1], getTranslation[2],each+"_jnt_ikPole_lctr"+"_grp"+".rotatePivot", ws=1, rpr=1 )
                if 'talus' in each:
                     cmds.setAttr(each+"_jnt_ikPole_lctr.visibility", 0)

            cmds.ikHandle(n="foottalus"+eachSide+"_ik", sj="leghip"+eachSide+"IK_jnt", ee="foottalus"+eachSide+"IK_jnt", sol="ikRPsolver")
            cmds.setAttr("foottalus"+eachSide+"_ik.visibility", 0)

            #connect
            
            cmds.addAttr("leghip"+eachSide+"_ctrl", ln=eachSide+"LegFK_IK",  min=0, max=1, at="double", en="FK:IK:", k=1, nn=eachSide+"LegFK_IK")
            cmds.setAttr("leghip"+eachSide+"_ctrl."+eachSide+"LegFK_IK", 1)
            
            Controller="leghip"+eachSide+"_ctrl."+eachSide+"LegFK_IK"
            bodyskel=[
                      "leghip"+eachSide,
                        "legknee"+eachSide,
                        "foottalus"+eachSide
                        ]
            for each in bodyskel:
                getClass.blendColors(each, Controller)  

            
            
            ########
            #Parenting controllers
            ######## 
            
            cmds.parent("legknee"+eachSide+"_grp ", "leghip"+eachSide+"_ctrl")
            
            cmds.parent("foottalus"+eachSide+"_grp", "legknee"+eachSide+"_ctrl")
            
            
            ########LEGS
            #Connect Blender Controls for IK/FK switch
            ########
            
            #cmds.parent("leghip"+eachSide+"FK_jnt", "leghip"+eachSide+"_ctrl")
            cmds.connectAttr ("leghip"+eachSide+"_ctrl.rotate","leghip"+eachSide+"FK_jnt.rotate", f=1)
            cmds.connectAttr ("legknee"+eachSide+"_ctrl.rotate","legknee"+eachSide+"FK_jnt.rotate", f=1)
            cmds.connectAttr ("foottalus"+eachSide+"_ctrl.rotate","foottalus"+eachSide+"FK_jnt.rotate", f=1)
            
            cmds.connectAttr("legknee"+eachSide+"_jnt_ikPole_lctr.translateX", "foottalus"+eachSide+"_jnt_ikPole_lctr_grp.rotateY", f=1)

            
            cmds.poleVectorConstraint("legknee"+eachSide+"_jnt_ikPole_lctr", "foottalus"+eachSide+"_ik")  

            #set visibility
            ChildActivatedValue=1
            ChildDeactivatedValue=0
            ControllerSecondValue=1
            ControllerFirstValue=0
            Children=["legknee"+eachSide+"_ctrl.visibility", 
                      "foottalus"+eachSide+"_ctrl.visibility", 
                      "leghip"+eachSide+"_ctrl.visibility"]
            Controller="leghip"+eachSide+"_ctrl."+eachSide+"LegFK_IK"
            defaultSet=0
            for eachChild in Children:
                getClass.controlFirstValueChildOn(Controller, 
                                                  eachChild, 
                                                  defaultSet, 
                                                  ChildActivatedValue, 
                                                  ChildDeactivatedValue, 
                                                  ControllerSecondValue, 
                                                  ControllerFirstValue)


            ChildActivatedValue=1
            ChildDeactivatedValue=0
            ControllerSecondValue=1
            ControllerFirstValue=0
            Child="legknee"+eachSide+"_jnt_ikPole_lctr.visibility"
            Controller="leghip"+eachSide+"_ctrl."+eachSide+"LegFK_IK"
            defaultSet=1
            getClass.controlSecondValueChildOn(Controller, 
                                               Child, 
                                               defaultSet, 
                                               ChildActivatedValue, 
                                               ChildDeactivatedValue, 
                                               ControllerSecondValue, 
                                               ControllerFirstValue)
           

            cmds.parent("foottalus"+eachSide+"_ik", "foottalus"+eachSide+"_nod")
            cmds.parent("legknee"+eachSide+"_jnt_ikPole_lctr_grp", "foottalus"+eachSide+"_nod")

            cmds.parent("leg"+eachSide+"_jnt", "leghip"+eachSide+"_nod")
            cmds.parent("leghip"+eachSide+"_ctrl", "leghip"+eachSide+"_nod")
            #cmds.parent("leghip"+eachSide+"IK_jnt", "leghip"+eachSide+"_nod")
            #cmds.parent("leghip"+eachSide+"_jnt", "leghip"+eachSide+"_nod")
            cmds.parent("leghip"+eachSide+"_grp", "leghip"+eachSide+"_nod")
            #cmds.pointConstraint("leghip"+eachSide+"FK_jnt", "leghip"+eachSide+"_ctrl")

            getIKClass.stretch("leghip"+eachSide+"IK_jnt")
예제 #56
0
파일: LightSkeleton.py 프로젝트: akkey/maya
def joint_left_add():
    # メッセージ
    cmds.inViewMessage(amg="<hl>「足のIK設置」</hl>を押してください。", pos="midCenter", fade=True, fit=1, fst=4000, fts=20)
    cmds.mirrorJoint("Hip_R", myz=True, mb=True, sr=("_R", "_L"))
    cmds.mirrorJoint("Scapula_R", myz=True, mb=True, sr=("_R", "_L"))
예제 #57
0
	def install(self):
		
		cmds.namespace(setNamespace = ":")
		cmds.namespace(add=self.module_namespace)

		self.joints_grp = cmds.group(empty=True, name=self.module_namespace+":joints_grp")
		self.hierarchy_grp = cmds.group(empty=True, name=self.module_namespace+":hierarchy_grp")
		self.ori_ctrl_grp = cmds.group(empty=True, name=self.module_namespace+":orientationControls_grp")
		self.module_grp = cmds.group([self.joints_grp, self.hierarchy_grp, self.ori_ctrl_grp], name=self.module_namespace+":module_grp")

		cmds.container(name=self.container_name, addNode=self.module_grp, ihb=True)

		cmds.select(clear=True)

		index = 0 
		joints = []

		for joint in self.joint_info:
			
			joint_name = joint[0]
			joint_pos = joint[1]
			parent_joint = ""

			if index > 0:
				parent_joint = self.module_namespace+":"+self.joint_info[index-1][0]
				cmds.select(parent_joint, replace=True)

			joint_name_full = cmds.joint(n=self.module_namespace+":"+joint_name, p=joint_pos)
			joints.append(joint_name_full)

			cmds.setAttr(joint_name_full+".visibility", 0)

			utils.add_node_to_container(self.container_name, joint_name_full)

			cmds.container(
								self.container_name,
								edit=True,
								publishAndBind=[joint_name_full+".rotate", joint_name+"_R"]
							)
			cmds.container(
								self.container_name,
								edit=True,
								publishAndBind=[joint_name_full+".rotateOrder", joint_name+"_rotateOrder"]
							)

			if index > 0:
				cmds.joint(parent_joint, edit=True, orientJoint="xyz", sao="yup")

			index += 1

		if self.mirrored:

			mirror_xy = False
			mirror_yz = False
			mirror_xz = False

			if self.mirror_plane == "XY":

				mirror_xy = True

			elif self.mirror_plane == "YZ":

				mirror_yz = True

			elif self.mirror_plane == "XZ":

				mirror_xz = True

			mirror_behavior = False

			if self.rotation_function == "behavior":

				mirror_behavior = True

			mirror_nodes = cmds.mirrorJoint(
												joints[0],
												mirrorXY=mirror_xy,
												mirrorYZ=mirror_yz,
												mirrorXZ=mirror_xz,
												mirrorBehavior=mirror_behavior
											)

			cmds.delete(joints)

			mirrored_joints = []

			for node in mirror_nodes:

				if cmds.objectType(node, isType="joint"):

					mirrored_joints.append(node)

				else:

					cmds.delete(node)

			index = 0

			for joint in mirrored_joints:

				joint_name = self.joint_info[index][0]

				new_joint_name = cmds.rename(joint, self.module_namespace+":"+joint_name)

				self.joint_info[index][1] = cmds.xform(new_joint_name, query=True, worldSpace=True, translation=True)

				index += 1



		cmds.parent(joints[0], self.joints_grp, absolute=True)

		self.init_module_trans(self.joint_info[0][1])

		trans_ctrl = []

		for joint in joints:
			trans_ctrl.append(self.create_trans_ctrl_at_joint(joint))

		root_joint_point_con = cmds.pointConstraint(
														trans_ctrl[0],
														joints[0],
														maintainOffset=False,
														name=joints[0]+"_pointConstraint"
													)

		utils.add_node_to_container(self.container_name, root_joint_point_con)

		self.initialize_hook(trans_ctrl[0])

		# Set up stretchy joint segment

		for index in range(len(joints)-1):
			self.setup_stretchy_jnt_segment(joints[index], joints[index+1])

		self.install_custom(joints)

		utils.force_scene_update()

		cmds.lockNode(self.container_name, lock=True, lockUnpublished=True)
예제 #58
0
    def createLimb(self, controlSize):
        cmds.select(cl=1)
        Hooffront=("anklefrontRight_guide","toefrontRight_guide", "toeTipFrontRight_guide")    
        HoofIKfront=("heelfrontRight_guide", "toefrontRight_guide", "anklefrontRight_guide")  
        Hoofrear=("anklerearRight_guide","toerearRight_guide", "toeTipRearRight_guide")   
        HoofIKrear=("heelrearRight_guide", "toerearRight_guide", "anklerearRight_guide")
             
        for each in Hoofrear:
            jointSuffix=each.split("_guide")[0]+"_jnt"
            getTranslation=cmds.xform(each, q=1, t=1, ws=1)
            cmds.joint(n=jointSuffix, p=getTranslation)  
        cmds.select(cl=1) 
        for each in HoofIKrear:      
            jointSuffix=each.split("_guide")[0]+"IK_jnt"
            getTranslation=cmds.xform(each, q=1, t=1, ws=1)
            cmds.joint(n=jointSuffix, p=getTranslation)  
        cmds.select(cl=1)        
        for each in Hooffront:
            jointSuffix=each.split("_guide")[0]+"_jnt"
            getTranslation=cmds.xform(each, q=1, t=1, ws=1)
            cmds.joint(n=jointSuffix, p=getTranslation)  
        cmds.select(cl=1) 
        for each in HoofIKfront:      
            jointSuffix=each.split("_guide")[0]+"IK_jnt"
            getTranslation=cmds.xform(each, q=1, t=1, ws=1)
            cmds.joint(n=jointSuffix, p=getTranslation)  
        cmds.select(cl=1) 
        
        cmds.mirrorJoint("anklefrontRight_jnt", myz=1, sr=("Right", "Left"))
        cmds.mirrorJoint("heelfrontRightIK_jnt", myz=1, sr=("Right", "Left"))
        cmds.mirrorJoint("anklerearRight_jnt", myz=1, sr=("Right", "Left"))
        cmds.mirrorJoint("heelrearRightIK_jnt", myz=1, sr=("Right", "Left"))  
        

        
        #########################################################################
        #########################################################################
        #########################################################################
        #########################################################################
        
        Side=["Right", "Left"]
        DepthDimension=["front", "rear"]
        
        for eachSide in Side:
            for eachDim in DepthDimension:
        
                resetOrient=[
                             "ankle"+eachDim+eachSide+"_jnt",
                             "heel"+eachDim+eachSide+"IK_jnt", 
                            ]
                            
                for each in resetOrient:
                        cmds.joint( each, e=1, children=1, zso=1, oj='xyz', sao='ydown', spa=1) 
                           
                locsForCleanup=[]
                    #locators
                legRFL=( "heel"+eachDim+eachSide+"_guide", "toe"+eachDim+eachSide+"_jnt", "ankle"+eachDim+eachSide+"_jnt")
                for each in legRFL:
                    getName=each.split("_")[0]+'_lctr'
                    transformWorldMatrix, rotateWorldMatrix=getClass.locationXForm(each)
                    RFLitem=cmds.spaceLocator(n=getName, p=(transformWorldMatrix[0],0, transformWorldMatrix[2]))
                    locsForCleanup.append(RFLitem)
                    cmds.CenterPivot()
        
                        
                #ik hookup
                startLegJoint=["ankle"+eachDim+eachSide+"_jnt",
                            ]
                
                IKleglist=[
                        "toe"+eachDim+eachSide,
                        ]
                for each, item in map(None, IKleglist, startLegJoint):
                    cmds.ikHandle(n=each+"_ik", sj=item, ee=each+"_jnt", sol="ikSCsolver")
                    #cmds.setAttr(each+"_ik.visibility", 0)
                    cmds.parent(each+"_ik", each+"IK_jnt")
                    
                    
                    
                    
                jointGroup=[
                            "toe"+eachDim+eachSide, 
                            ]
                for eachjoint in jointGroup:
                    eachName=eachjoint+"_jnt"
                    getTranslation=cmds.xform(eachName, q=1, t=1, ws=1)
                    cmds.spaceLocator(n=str(eachName)+"Pole_lctr", p=(getTranslation))
                    cmds.CenterPivot()
                    cmds.setAttr(str(eachName)+"Pole_lctr.visibility", 0)
                
                #cmds.poleVectorConstraint("toe"+eachDim+eachSide+"_jntPole_lctr", "toe"+eachDim+eachSide+"_ik")   
    
                cmds.parent("toe"+eachDim+eachSide+"_ik", "heel"+eachDim+eachSide+"IK_jnt")
                
                
                #CONTROLLER
                name="heel"+eachDim+eachSide+"IK_ctrl"
                grpname="heel"+eachDim+eachSide+"IK_grp"
                numlen=controlSize[1]
                numwid=controlSize[0]
                colour=13
                transformWorldMatrix=cmds.xform("heel"+eachDim+eachSide+"_guide", q=1, t=1, ws=1)
                #pivtransformWorldMatrix, rotateWorldMatrix=getClass.locationXForm(each)ankleLeft_jnt
                rotateWorldMatrix=[0,0,0]
                getClass.rectI(name, grpname, numlen, numwid, transformWorldMatrix, rotateWorldMatrix, colour)  
                cmds.move(0, 0, controlSize[2], name ,r=1, rpr=1, )
                cmds.move(0, 0, -controlSize[2], name+".rotatePivot" ,r=1, rpr=1 )                 
                cmds.makeIdentity(name, a=True, t=1, s=1, r=1, n=0)
    
                
                cmds.parentConstraint("heel"+eachDim+eachSide+"IK_ctrl", "heel"+eachDim+eachSide+"IK_jnt", mo=1, w=1)
    
                
                #use only if controller is lacking these attributes
                cmds.addAttr("heel"+eachDim+eachSide+"IK_ctrl", ln="RaiseHeel", at="long", min=-90, max=90, dv=0, k=1, nn="RaiseHeel")  
                footAttributes=["TipToe",
                                "RaiseToe",
                                "PivotToe", 
                                "SwivelHeel"]
                for each in footAttributes:
                    cmds.addAttr("heel"+eachDim+eachSide+"IK_ctrl", ln=each, at="long", min=-90, max=90, dv=0, k=1, nn=each)    
    
                cmds.connectAttr ("heel"+eachDim+eachSide+"IK_ctrl.RaiseHeel", "toe"+eachDim+eachSide+"IK_jnt.rotateZ", f=1)
                cmds.connectAttr ("heel"+eachDim+eachSide+"IK_ctrl.PivotToe", "toe"+eachDim+eachSide+"IK_jnt.rotateY", f=1)
                cmds.connectAttr ("heel"+eachDim+eachSide+"IK_ctrl.SwivelHeel", "heel"+eachDim+eachSide+"IK_jnt.rotateY", f=1)
    
    
                    
                    
                cmds.orientConstraint("ankle"+eachDim+eachSide+"IK_jnt", "ankle"+eachDim+eachSide+"_jnt", mo=1, w=1)
                   
                    
                    
                cmds.pointConstraint("toe"+eachDim+eachSide+"IK_jnt", "toe"+eachDim+eachSide+"_ik", mo=1)
            
            
            
#             for each in locsForCleanup:
#                 cmds.delete(each)             
예제 #59
0
def HandlesCallback(*pArgs):
    l_armPosition = cmds.joint('leftArmIK', query=True, position=True)
    armHandle = cmds.circle()
    #cmds.select('leftShoulder')
    cmds.move(int((l_armPosition))
	
def BindCallback(*Args):
    #cmds.select('root')
    cmds.bindSkin('root')
	
def MirrorCallback(*pArgs):
    if cmds.objExists('rightShoulder'):
        cmds.delete('rightShoulder')
        #cmds.delete('rightArmIK')
    else:
        cmds.mirrorJoint('leftShoulder', myz=True, mxz=True, searchReplace=['left','right'])
    if cmds.objExists('right_upLeg'):
        cmds.delete('right_upLeg')
        #cmds.delete('rightLegIK')
    else:
        cmds.mirrorJoint('left_upLeg', myz=True,searchReplace=['left','right'])
	
def SampleCallback(field, *pArgs):
    centerX = 0
    centerY = 15
    centerZ = 0

    if cmds.objExists('root'):
        cmds.delete('root')

    rootJoint = cmds.joint(p=(0,centerY,0), name='root')
                
    numSpineJoints = cmds.intField(field, query=True, value=True)
    #pNumSpine = numSpineJoints
    for i in range(1,numSpineJoints):
        cmds.joint(p=(0,(2*i+centerY),0), name='spine#')
  		
    #cmds.ikHandle(sj='spine1',ee='spine5', name='spineHandleIK')
    
    cmds.select('spine'+str(numSpineJoints-1))    
    cmds.joint(p=(0,2*i+centerY,1), name='collarBone')

    #left arm
    cmds.joint(p=(3,2*i+centerY,1),name='leftShoulder')
    cmds.joint(p=(numSpineJoints+3,2*i+centerY,.75),name='leftElbow')
    cmds.joint(p=((numSpineJoints+3)*2,2*i+centerY,1),name='leftWrist')
    cmds.joint(p=((numSpineJoints+3)*2+.5,2*i+centerY,1),name='leftHand')
    cmds.ikHandle(sj='leftShoulder',ee='leftWrist', name='leftArmIK')

    cmds.joint(p=(0,centerY-2,centerZ+1), name='pelvis')
    cmds.parent('pelvis', 'root')
    # left leg
    cmds.joint(p=(centerX+3,centerY-2,0), name='left_upLeg')
    cmds.joint(p=(centerX+3,centerY-7,centerZ+.5), name='left_loLeg')
    cmds.joint(p=(centerX+3,centerY-12,0), name='left_foot')
    cmds.joint(p=(centerX+3,centerY-14,1), name='left_ball')
    cmds.joint(p=(centerX+3,centerY-14,3), name='left_ball_end')
    cmds.ikHandle(sj='left_upLeg',ee='left_foot', name='leftLegIK')

    #joint orientation 
    cmds.joint('root', edit = True, orientJoint = 'xyz',sao= 'yup', ch = True, zso= True)
        
createWindow('Auto Rigger', applyCallback)
예제 #60
0
    def createLimb(self, controlSize, controlDist):
        getGuide=cmds.ls("*_guide")
        shoulderShrug=("armcollarRight_guide",
                        "armshoulderRight_guide", )
        ArmRightList=("armcollarRight_guide",
                        "armshoulderRight_guide", 
                        "armelbowRight_guide", 
                        "armwristRight_guide")
        sudoArm=("armshoulderRight_guide",
                "armelbowRight_guide",
                "armwristRight_guide")
        cmds.select(cl=1)        
        getLimbs=(ArmRightList)         
        for item in getLimbs:
            jointSuffix='_jnt'
            getClass.rigJoints(item, jointSuffix)
        cmds.select(cl=1)
        for item in sudoArm:
            jointSuffix='FK_jnt'
            getClass.rigJoints(item, jointSuffix)
        cmds.select(cl=1)  
        for item in sudoArm:
            jointSuffix='IK_jnt'
            getClass.rigJoints(item, jointSuffix)
        cmds.select(cl=1)
        for item in shoulderShrug:
            jointSuffix='SH_jnt'
            getClass.rigJoints(item, jointSuffix)
        cmds.select(cl=1)
        cmds.mirrorJoint("armcollarRightSH_jnt", myz=1, sr=("Right", "Left"))
        cmds.mirrorJoint("armcollarRight_jnt", myz=1, sr=("Right", "Left"))
        cmds.mirrorJoint("armshoulderRightFK_jnt", myz=1, sr=("Right", "Left"))
        cmds.mirrorJoint("armshoulderRightIK_jnt", myz=1, sr=("Right", "Left"))
    
        
        Side=["Right", "Left"]
  
        
        for eachSide in Side:
            resetOrient=[
                        "armcollar"+eachSide+"SH_jnt",
                        "armcollar"+eachSide+"_jnt",
                        "armshoulder"+eachSide+"_jnt",
                        "armshoulder"+eachSide+"FK_jnt",
                        "armshoulder"+eachSide+"IK_jnt"
                        ]
            for each in resetOrient:
                 cmds.joint( each, e=1, children=1, zso=1, oj='xyz', sao='yup', spa=1)        
                 #cmds.setAttr(each+".jo", lock=1)    
                 #cmds.setAttr(each+".rotateX", lock=1) 
                  
            #CONTROLS
            translations=[".tx", ".ty", ".tz"] 
            rotation=[".rx", ".ry", ".rz"]
            
            jointGroup=[
                        "armshoulder"+eachSide, 
                        "armelbow"+eachSide, 
                        "armwrist"+eachSide,          
                        ]
            
            controlGroup=["armwrist"+eachSide, 
                        "armcollar"+eachSide, 
                       
                        ]
            
            cmds.group( em=True, name='IK_grp' )
            
            groupCtrls=[]
            for eachjoint in jointGroup:
                eachPiece=eachjoint+"_jnt"
                name=eachjoint+"_ctrl"
                grpname=eachjoint+"_grp"  
                if "shoulder" in eachjoint:
                    size=controlSize[1]
                    colour=6
                if "wrist" in eachjoint:
                    nrx=0
                    nry=1
                    nrz=0            
                else:
                    size=controlSize[2]
                    colour=6
                    nrx=1
                    nry=0
                    nrz=0
                getTranslation, getRotation=getClass.locationXForm(eachPiece)
                getClass.buildCtrl(eachjoint, name, grpname, getTranslation, getRotation, size, colour, nrx, nry, nrz)
       

                                     
            
            for eachjoint in controlGroup:
                eachPiece=eachjoint+"_jnt"
                name=eachjoint+"IK_ctrl"
                grpname=eachjoint+"IK_grp" 
                if "collar" in eachjoint:
                    size=controlSize[0]
                    nrx=1
                    nry=0
                    nrz=0                    
                else:
                    size=controlSize[0]
                    nrx=0
                    nry=1
                    nrz=0                    
                colour=13
                getTranslation, getRotation=getClass.locationXForm(eachPiece)
                getClass.buildCtrl(eachjoint, name, grpname, getTranslation, getRotation, size, colour, nrx, nry, nrz)
                colour1=18
                colour2=colour1
                colour3=colour1        
                getClass.guideBuild(eachjoint, getTranslation, getRotation, colour1, colour2, colour3 )
                getsel=cmds.ls(sl=1)
                cmds.setAttr(getsel[0]+".overrideColor", colour1)
                lognm=each.replace("grp", 'nod')   
                cmds.rename(getsel[0], getsel[0]+'_nod')
                getsel=cmds.ls(sl=1)
                getClass.buildGrp(getsel[0])
   
            eachPiece="armwrist"+eachSide+"_jnt"              
            getTranslation, getRotation=getClass.locationXForm(eachPiece)
            size=controlSize[4]
            name="armwrist"+eachSide+"_offset_IK_ctrl"
            grpname="armwrist"+eachSide+"_offset_IK_grp"
            colour=23
            nrx=0
            nry=1
            nrz=0
            cmds.select(cl=1)     
            getClass.buildCtrl("armwrist"+eachSide, name, grpname, getTranslation, getRotation, size, colour, nrx, nry, nrz)    
            cmds.setAttr("armwrist"+eachSide+"_offset_IK_ctrl.visibility", 0)         






















            #create ik pole constraint controllers            
            jointGroup=[
                        "armshoulder"+eachSide,
                        "armwrist"+eachSide,
                        ]
            #IK POLE VECTORS
            IKHandlesLimbs=[
                            "armelbow"+eachSide, 
                            "armwrist"+eachSide
                            ]

            for each in IKHandlesLimbs:
                name=each+"_jnt_ikPole_lctr"
                grpname=each+"_jnt_ikPole_lctr_grp"
                num=controlSize[3]
                color=13                
                getTranslation=cmds.xform(each+"_jnt", q=1, t=1, ws=1)
                if "elbow" in each:
                    getClass.JackI(name, grpname, num, getTranslation, (0.0,0.0,0.0), color)
                    cmds.move( 0.0, 0.0, -controlDist[0],grpname,r=1, rpr=1)                    
                elif "wrist" in each and "Right" in each:
                    getClass.JackI(name, grpname, num, getTranslation, (0.0,0.0,0.0), color)
                    cmds.move( controlDist[1], 0.0, -controlDist[0],grpname,r=1, rpr=1)                     
                elif "wrist" in each and "Left" in each:
                    getClass.JackI(name, grpname, num, getTranslation, (0.0,0.0,0.0), color)
                    cmds.move( -controlDist[1], 0.0, -controlDist[0],grpname,r=1, rpr=1)                     
                else:
                    getClass.JackI(name, grpname, num, getTranslation, (0.0,0.0,0.0), color)                   
 
                getTranslation=cmds.xform(each+"_jnt", q=1, t=1, ws=1)
                cmds.move(getTranslation[0], getTranslation[1], getTranslation[2],each+"_jnt_ikPole_lctr"+"_grp"+".rotatePivot", ws=1, rpr=1 )
                if 'wrist' in each:
                     cmds.setAttr(each+"_jnt_ikPole_lctr.visibility", 0)
                name=each+"FK_target"
                grpname=each+"FK_target"+"_grp"
                print grpname
                num=3
                color=22
                if "elbow" in each:
                    getClass.JackI(name, grpname, num, getTranslation, (0.0,0.0,0.0), color)
                    cmds.move( 0.0, 0.0, -controlDist[0],grpname,r=1, rpr=1)     
                    cmds.parent(grpname,each+"FK_jnt")
                    cmds.setAttr(name+".visibility", 0)
                    cmds.makeIdentity(name, a=True, t=1, s=1, r=1, n=0)  
            cmds.ikHandle(n="armwrist"+eachSide+"_ik", sj="armshoulder"+eachSide+"IK_jnt", ee="armwrist"+eachSide+"IK_jnt", sol="ikRPsolver")
            cmds.setAttr("armwrist"+eachSide+"_ik.visibility", 0)


            
            cmds.connectAttr("armelbow"+eachSide+"_jnt_ikPole_lctr.translateX", "armwrist"+eachSide+"_jnt_ikPole_lctr_grp.rotateY", f=1)

            
            cmds.poleVectorConstraint("armelbow"+eachSide+"_jnt_ikPole_lctr", "armwrist"+eachSide+"_ik")  


            ########
            #connect
            ########
            
            cmds.addAttr("armshoulder"+eachSide+"_ctrl", ln=eachSide+"LegFK_IK",  min=0, max=1, at="double", en="FK:IK:", k=1, nn=eachSide+"LegFK_IK")
            cmds.setAttr("armshoulder"+eachSide+"_ctrl."+eachSide+"LegFK_IK", 1)
            








































            #poleVector Constraints
            cmds.parent("armwrist"+eachSide+"_jnt_ikPole_lctr_grp", "armwrist"+eachSide+"IK_ctrl" )
            #cmds.parent("armelbow"+eachSide+"_jnt_ikPole_lctr_grp", "armshoulder"+eachSide+"IK_jnt")
 

            

            
            
#             #IKpole twist
#             if "Left" in eachSide:
#                 cmds.setAttr("armwrist"+eachSide+"_ik.twist",90)
#             else:
#                 cmds.setAttr("armwrist"+eachSide+"_ik.twist", -90)
            

            ########ARMS
            #Connect Blender Controls for IK/FK switch
            ########
            cmds.addAttr("armcollar"+eachSide+"IK_ctrl", ln=eachSide+"ArmFK_IK", min=0, max=1, at="double", k=1, nn=""+eachSide+"ArmFK_IK")
            #cmds.addAttr("armcollar"+eachSide+"IK_ctrl", ln=eachSide+"ArmFK_IK", at="enum",en="FK:IK:", k=1, nn=""+eachSide+"ArmFK_IK")
            cmds.parent("armshoulder"+eachSide+"_jnt", w=1)
            
            Controller="armcollar"+eachSide+"IK_ctrl."+eachSide+"ArmFK_IK"
            armskel=[
                    "armshoulder"+eachSide,
                    "armelbow"+eachSide,
                    "armwrist"+eachSide
                        ]
            for each in armskel:
                getClass.blendColors(each, Controller)
                getClass.blendColorsTranslate(each, Controller)#this creates a FK stretch. Use parentConstraint on the joint to control to work


            #Twist arm
            cmds.addAttr("armwrist"+eachSide+"IK_ctrl", ln="TwistArm", at="long", min=-360, max=360, dv=0, k=1, nn="TwistArm")
            
            cmds.connectAttr ("armwrist"+eachSide+"IK_ctrl.TwistArm", "armelbow"+eachSide+"_jnt.rotate.rotateX", f=1)
            cmds.connectAttr ("armwrist"+eachSide+"IK_ctrl.TwistArm", "armshoulder"+eachSide+"_jnt.rotate.rotateX", f=1)
                
            IKArmlist=[
                     "armshoulder"+eachSide+"SH"
                            ]
            
            startArmJoint=[
                        "armcollar"+eachSide+"SH_jnt"
                        ]
            
            for each, item in map(None, IKArmlist, startArmJoint):
                cmds.ikHandle(n=each+"_ik", sj=item, ee=each+"_jnt", sol="ikRPsolver")
                cmds.setAttr(each+"_ik.visibility", 0)

            #connect FK controllers to FK skel
            
            cmds.connectAttr ("armshoulder"+eachSide+"_ctrl.rotate", "armshoulder"+eachSide+"FK_jnt.rotate", f=1)

            
            
            #cmds.connectAttr ("armelbow"+eachSide+"_ctrl.rotate", "armelbow"+eachSide+"FK_jnt.rotate", f=1)
            
            cmds.parentConstraint ("armelbow"+eachSide+"_ctrl", "armelbow"+eachSide+"FK_jnt", mo=1)     
            cmds.parentConstraint ("armwrist"+eachSide+"_ctrl", "armwrist"+eachSide+"FK_jnt", mo=1)       
            #cmds.connectAttr ("armelbow"+eachSide+"_ctrl.translate", "armelbow"+eachSide+"FK_jnt.translate", f=1)
            #cmds.orientConstraint("armwrist"+eachSide+"_ctrl", "armwrist"+eachSide+"FK_jnt", mo=1)


            #FK controls parents
            cmds.parent("armwrist"+eachSide+"_grp","armelbow"+eachSide+"_ctrl")
            cmds.parent("armelbow"+eachSide+"_grp","armshoulder"+eachSide+"_ctrl")               

            #set visibility
            ChildActivatedValue=1
            ChildDeactivatedValue=0
            ControllerSecondValue=1
            ControllerFirstValue=0
            Children=["armelbow"+eachSide+"_ctrl.visibility", 
                      "armwrist"+eachSide+"_ctrl.visibility", 
                      "armshoulder"+eachSide+"_ctrl.visibility"]
            Controller="armcollar"+eachSide+"IK_ctrl."+eachSide+"ArmFK_IK"
            defaultSet=0
            for eachChild in Children:
                getClass.controlFirstValueChildOn(Controller, 
                                                  eachChild, 
                                                  defaultSet, 
                                                  ChildActivatedValue, 
                                                  ChildDeactivatedValue, 
                                                  ControllerSecondValue, 
                                                  ControllerFirstValue)

            Children=["armelbow"+eachSide+"_jnt_ikPole_lctr.visibility", "armwrist"+eachSide+"_offset_IK_ctrl.visibility"]
            ChildActivatedValue=1
            ChildDeactivatedValue=0
            ControllerSecondValue=1
            ControllerFirstValue=0
            Controller="armcollar"+eachSide+"IK_ctrl."+eachSide+"ArmFK_IK"
            defaultSet=1
            for Child in Children:
                getClass.controlSecondValueChildOn(Controller, 
                                                   Child, 
                                                   defaultSet, 
                                                   ChildActivatedValue, 
                                                   ChildDeactivatedValue, 
                                                   ControllerSecondValue, 
                                                   ControllerFirstValue)


                        
            #cmds.connectAttr ("armhand"+eachSide+"IK_ctrl.translate", "armhand"+eachSide+"_ctrl.translate" , f=1)
            
            #set stretch
            
            getIKClass.stretch("armshoulder"+eachSide+"IK_jnt")
            
            cmds.addAttr("armwrist"+eachSide+"IK_ctrl", ln="Stretch", at="enum",en="on:off:", k=1, nn="Stretch")
            
            
            
#             ChildActivatedValue=2
#             ChildDeactivatedValue=0
#             ControllerSecondValue=1
#             ControllerFirstValue=0
#             Child="armshoulder"+eachSide+"IK_jnt_cond.operation"
#             Controller="armwrist"+eachSide+"IK_ctrl.Stretch"
#             defaultSet=0
#             getClass.controlFirstValueChildOn(Controller, 
#                                                Child, 
#                                                defaultSet, 
#                                                ChildActivatedValue, 
#                                                ChildDeactivatedValue, 
#                                                ControllerSecondValue,
#                                                ControllerFirstValue)
            

            #hooking up the nods

 

            #parent ik controls
            cmds.parent("armshoulder"+eachSide+"SH_ik", "armcollar"+eachSide+"IK_ctrl") #shoulder shrug ik to the collar control
            cmds.parent("armcollar"+eachSide+"IK_grp", "armcollar"+eachSide+"_nod")
            cmds.parent("armcollar"+eachSide+"SH_jnt", "armcollar"+eachSide+"_nod")

            #connect wrist orientation to FK wrist control
            #cmds.orientConstraint("armwrist"+eachSide+"IK_ctrl", "armwrist"+eachSide+"IK_jnt", mo=1)#aim wrist to ik control
            

            cmds.pointConstraint("armshoulder"+eachSide+"_ctrl", "armshoulder"+eachSide+"IK_jnt")#follow the IK chain to the shoulder control
            cmds.pointConstraint("armshoulder"+eachSide+"_ctrl", "armshoulder"+eachSide+"FK_jnt")#follow the FK chain to the shoulder control
            cmds.pointConstraint("armshoulder"+eachSide+"_ctrl", "armshoulder"+eachSide+"_jnt")#follow the skeleton to the shoulder control
            cmds.pointConstraint("armshoulder"+eachSide+"SH_ik", "armshoulder"+eachSide+"_ctrl")#follow the shoulder control to the ik handle of the shrug
            

            cmds.parent("armshoulder"+eachSide+"_jnt", "armcollar"+eachSide+"_nod")                          
            cmds.parent("armshoulder"+eachSide+"_grp", "armcollar"+eachSide+"_nod")
            cmds.parent("armshoulder"+eachSide+"FK_jnt", "armcollar"+eachSide+"_nod") 

            #cmds.parentConstraint("armcollar"+eachSide+"_nod", "armshoulder"+eachSide+"IK_jnt", mo=1)  
            cmds.parent("armshoulder"+eachSide+"IK_jnt", "armcollar"+eachSide+"_nod")  #attach the IK chain to parent nod 
            cmds.setAttr("armwrist"+eachSide+"IK_ctrl.visibility", 0)