示例#1
0
    def createReverseFoot(self):
        # create foot temple
        pivotPos = cmds.xform(self.IkForeLegJointList[-2],
                              t=True,
                              ws=True,
                              q=True)

        FTT = cmds.spaceLocator(n=self.footTemplateLocList[4])
        cmds.move(pivotPos[0], pivotPos[1], pivotPos[2], FTT[0])

        BRT = cmds.spaceLocator(n=self.footTemplateLocList[5])
        POsnap(BRT[0], self.IkForeLegJointList[-2])

        TTT = cmds.spaceLocator(n=self.footTemplateLocList[6])
        POsnap(TTT[0], self.IkForeLegJointList[-2])

        # create pivot positon
        for x in range(len(self.footTemplateLocList)):
            PL = cmds.group(em=True,
                            n=self.footTemplateLocList[x].replace(
                                'Temple', '_PIVOT'))
            POsnap(PL, self.footTemplateLocList[x])

            self.pivotList.append(PL)

        for x in range(len(self.pivotList) - 1):
            cmds.parent(self.pivotList[x + 1], self.pivotList[x])

        for x in range(len(self.pivotList)):
            PH = homeNul(self.pivotList[x])

            self.pivotNulList.append(PH)

        cmds.parent(self.pivotNulList[-1], self.pivotList[4])

        cmds.delete(self.footTemplateLocList[4:7])

        # parenting handle
        cmds.parent(self.G_RPName, self.pivotList[5])

        cmds.parent(self.SCs1Name, self.G_RPName)
        cmds.parent(self.SCs2Name, self.pivotList[5])
        cmds.parent(self.SCs3Name, self.pivotList[-1])

        self.wristPivotName = cmds.group(em=True, n='L_wistRoll_PIVOT')
        self.wristPos = cmds.xform(self.IkForeLegJointList[3],
                                   t=True,
                                   ws=True,
                                   q=True)
        cmds.move(self.wristPos[0], self.wristPos[1], self.wristPos[2],
                  self.wristPivotName)
        cmds.parent(self.wristPivotName, self.subIkJointList[2])

        cmds.parent(self.RPsName, self.wristPivotName)

        homeNul(self.wristPivotName)
示例#2
0
文件: ikHindLeg.py 项目: mappp7/tools
    def createReverseFoot(self):
        # create foot temple
        pivotPos = cmds.xform( self.IkHindLegJointList[-2], t=True, ws=True, q=True )

        FTT = cmds.spaceLocator( n=self.footTemplateLocList[4] )
        cmds.move( pivotPos[0], pivotPos[1], pivotPos[2], FTT[0] )

        BRT = cmds.spaceLocator( n=self.footTemplateLocList[5] )
        POsnap( BRT[0], self.IkHindLegJointList[-2] )

        TTT = cmds.spaceLocator( n=self.footTemplateLocList[6] )
        POsnap( TTT[0], self.IkHindLegJointList[-2] )


        # create pivot positon
        for x in range( len( self.footTemplateLocList ) ):
            PL = cmds.group( em=True, n=self.footTemplateLocList[x].replace( 'Temple', '_PIVOT' ) )
            POsnap( PL, self.footTemplateLocList[x] )

            self.pivotList.append(PL)

        for x in range( len( self.pivotList ) - 1 ):
            cmds.parent( self.pivotList[x+1], self.pivotList[x] )

        for x in range( len( self.pivotList ) ):
            PH = homeNul( self.pivotList[x] )

            self.pivotNulList.append(PH)

        cmds.parent( self.pivotNulList[-1], self.pivotList[4] )

        cmds.delete( self.footTemplateLocList[4:7] )

        # parenting handle
        cmds.parent( self.sRPsName, self.pivotList[5] )

        cmds.parent( self.SCsNameList[0], self.sRPsName )
        cmds.parent( self.SCsNameList[1], self.pivotList[5] )
        cmds.parent( self.SCsNameList[2], self.pivotList[-1] )


        self.anklePivotName = cmds.group( em=True, n='%s_ankleRoll_PIVOT' % self.side )
        self.anklePos = cmds.xform( self.IkHindLegJointList[3], t=True, ws=True, q=True )
        cmds.move( self.anklePos[0], self.anklePos[1], self.anklePos[2], self.anklePivotName )

        cmds.delete( cmds.aimConstraint( self.subIkJointList[2], self.anklePivotName, aimVector=[ 0, 1, 0 ], upVector=[ 0, 0, 1 ], worldUpType='vector', worldUpVector=[ 0, 1, 0 ] ) )

        cmds.parent( self.anklePivotName, self.subIkJointList[2] )

        cmds.parent( self.RPsName, self.anklePivotName )

        homeNul( self.anklePivotName )
示例#3
0
文件: noneFlip.py 项目: mappp7/tools
    def setup(self, base, target, con):
        name = ''

        if '_' in con:
            lst = con.split('_')
            for e in lst[:-1]:
                if len(name) != 0:
                    name = name + '_' + e
                else:
                    name = name + e
            name = name
        else:
            name = con

        tmp = cmds.spaceLocator(n=name + 'Aim')
        aim_locator = setUniqueName(tmp[0], 'LOC')
        aim_nul = homeNul(aim_locator)

        tmp = cmds.spaceLocator(n=name + 'Target')
        target_locator = setUniqueName(tmp[0], 'LOC')
        target_nul = homeNul(target_locator)

        tmp = cmds.spaceLocator(n=name + 'Offset')
        offset_locator = setUniqueName(tmp[0], 'LOC')
        offset_nul = homeNul(offset_locator)

        tmp = cmds.group(aim_nul, target_nul, n=name + 'NoneFlip')
        group = setUniqueName(tmp, 'GRP')

        cmds.pointConstraint(base, aim_nul, w=True)
        cmds.pointConstraint(target, target_nul, w=True)
        cmds.delete(cmds.parentConstraint(con, offset_nul, w=True))

        cmds.aimConstraint(target,
                           aim_locator,
                           w=True,
                           aim=[1, 0, 0],
                           u=[0, 1, 0],
                           wut='objectrotation',
                           wu=[1, 0, 0],
                           wuo=base)

        sp = spaceBlend()
        sp.parentBlend(offset_locator, 'move_CON', con)

        cmds.parent(offset_nul, aim_locator)
        cmds.parent(group, 'noneFlip_GRP')

        return [aim_locator, target_locator, offset_locator]
示例#4
0
def pivotToControllerOP(mySide):
    myColor = 'blue'
    if mySide == 'R':
        myColor = 'red'
    else:
        pass

    anklePivotName =  '%s_ankleRoll_main_PIVOT' % mySide
    pivotList = [ '%s_hindLeg_inSideRoll_PIVOT'% mySide, '%s_hindLeg_outSideRoll_PIVOT'% mySide, '%s_hindLeg_heelRoll_PIVOT'% mySide, '%s_hindLeg_toeRoll_PIVOT'% mySide, '%s_hindLeg_footTwist_PIVOT'% mySide, '%s_hindLeg_ballRoll_PIVOT'% mySide, '%s_hindLeg_toeTab_PIVOT'% mySide ]
    pivotNulList = [ '%s_inSideRoll_hindLeg_NUL'% mySide ]
    # create foot controller
    ankleRollCONT = controllerShape( anklePivotName.replace( 'PIVOT', 'CON' ), 'cube', myColor )
    cvNum = cmds.getAttr( '%s.spans' % ankleRollCONT ) + cmds.getAttr( '%s.degree' % ankleRollCONT )
    cmds.select( '%s.cv[0:%s]' % ( ankleRollCONT, cvNum-1 ) )
    cmds.scale( 0.5, 0.5, 0.5 )
    cmds.select( cl=True )
    cmds.parent( '%sShape' % ankleRollCONT, anklePivotName, r=True, s=True )
    cmds.delete( ankleRollCONT )
    ankleRollCON = cmds.rename( anklePivotName, anklePivotName.replace( 'PIVOT', 'CON' ) )

    for x in range( len( pivotList ) ):
        CONT = controllerShape( pivotList[x].replace( 'PIVOT', 'CON' ), 'cube', myColor )
        cvNum = cmds.getAttr( '%s.spans' % CONT ) + cmds.getAttr( '%s.degree' % CONT )
        cmds.select( '%s.cv[0:%s]' % ( CONT, cvNum-1 ) )
        cmds.scale( 0.5, 0.5, 0.5 )
        cmds.select( cl=True )
        cmds.parent( '%sShape' % CONT, pivotList[x], r=True, s=True )
        cmds.delete( CONT )
        ankleRollCON = cmds.rename( pivotList[x], pivotList[x].replace( 'PIVOT', 'CON' ) )




    # 2018/ 01.15 >>  taehoon : change controller hierarchy!!!
    cmds.parent( '%s_hindLeg_toeTab_NUL' % mySide, '%s_hindLeg_footTwist_CON' % mySide )




    # make ankle controller by main ankle controller
    myParent = '%s_rig_ball_JNT' % mySide
    myMainCon = '%s_ankleRoll_main_CON' % mySide
    myMainNul = '%s_ankleRoll_main_NUL' % mySide

    myAimParnt = '%s_template_ankle_JNT' % mySide
    myAimUp = '%s_template_knee_JNT' % mySide

    myCon = controllerShape( myMainCon.replace( 'main_CON', 'CON' ), 'cube', myColor )
    myNul = homeNul( myCon )

    cmds.delete ( cmds.parentConstraint( myParent, myNul, mo=0 ) )
    cmds.delete ( cmds.aimConstraint ( myAimParnt, myNul, aim=( 1, 0, 0 ), u=( 0, 1, 0 ), wut='object', wuo=myAimUp ) )

    cmds.parentConstraint( myParent, myNul, mo=1 )
    cmds.parentConstraint( myCon, myMainNul, mo=1 )

    cmds.parent ( '%s_IK_ankle_SC_HDL' % mySide, myCon )
示例#5
0
def fkAddSpineOP():

    fkSpineJointList = [
        'C_FKsub_spine1_NUL', 'C_FKsub_spine2_NUL', 'C_FKsub_spine3_NUL',
        'C_FKsub_chest_NUL'
    ]

    fkControllerMaker('circle', 'yellow', fkSpineJointList[1:3])

    homeNul('C_IK_upBody_CON', 'C_IK_upBody_fkSubAttach_NUL')

    cmds.parentConstraint('C_IK_lowBodySub_CON', fkSpineJointList[0], mo=True)

    attachNode('C_FKsub_chest_NUL', 'C_IK_upBody_fkSubAttach_NUL', 'translate',
               'rotate', 'scale', 'shear')

    attachPart('C_IK_root_CON', 'C_FKsub_spine2_NUL_NUL', 'translate',
               'rotate', 'scale', 'shear')
示例#6
0
def fkAddNeckOP():

    fkSpineJointList = [
        'C_FK_neck1_NUL', 'C_FK_neck2_NUL', 'C_FK_neck3_NUL', 'C_FK_head_NUL'
    ]

    fkControllerMaker('circle', 'yellow', fkSpineJointList[1:3])

    homeNul('C_IK_head_CON', 'C_IK_head_extra_NUL')

    cmds.parentConstraint('C_IK_neck1Sub_CON', fkSpineJointList[0], mo=True)

    attachNode('C_FK_head_NUL', 'C_IK_head_extra_NUL', 'translate', 'rotate',
               'scale', 'shear')

    attachPart('C_IK_neck1_CON', 'C_FK_neck2_NUL', 'translate', 'rotate',
               'scale', 'shear')

    cmds.parent('C_FK_neck1_NUL', w=1)
示例#7
0
def ikControllerMaker(target, handle):

    z = defaultGroupNode()
    z.createGroupNode()

    par = cmds.listRelatives(target, p=True)

    loc = cmds.spaceLocator(n=handle.split('_HDL')[0] + '_LOC')[0]
    loc_nul = cmds.group(loc, n=loc.replace('_LOC', 'Space_NUL'))
    sub = controllerShape(
        handle.split('_HDL')[0] + 'Sub_CON', 'circle', 'yellow')
    con = controllerShape(handle.split('_HDL')[0] + '_CON', 'cube', 'yellow')
    vec = controllerShape(
        handle.split('_HDL')[0] + 'Vec_CON', 'sphere', 'yellow')

    snul = homeNul(sub)
    cnul = homeNul(con)
    vnul = homeNul(vec)

    cmds.parent(loc_nul, sub)
    cmds.parent(snul, con)

    cmds.delete(cmds.pointConstraint(target, cnul, w=True))
    cmds.delete(cmds.orientConstraint(target, snul, w=True))
    cmds.delete(cmds.orientConstraint(con, loc_nul, w=True))
    cmds.delete(cmds.pointConstraint(par, vnul, w=True))

    cmds.parentConstraint(loc, handle, mo=True)
    cmds.orientConstraint(loc, target, mo=True)
    cmds.poleVectorConstraint(vec, handle, w=1)

    cmds.rotate(0, 0, 90, sub + '.cv[*]', os=1)
    cmds.setAttr(loc + '.v', 0)

    cmds.parent(cnul, vnul, 'IKControl_GRP')

    return [sub, con, vec], [snul, cnul, vnul]
示例#8
0
def fkControllerMaker( conSahpe, colorShape, target ):

    conList = []
    constraintList = []
    nulList = []

    for x in range( len(target) ):
        controllerName = controllerShape( target[x].split('_JNT')[0]  + '_CON', conSahpe, colorShape )
        POsnap( controllerName, target[x] )
        
        PC = cmds.parentConstraint( controllerName, target[x] )

        conList.append( controllerName )
        constraintList.append( PC[0] )

    for i in range(len(conList)-1):
        cmds.parent( conList[i+1], conList[i] )

    for e in conList:
        NUL = homeNul( e )
        nulList.append( NUL )

    return conList, nulList, constraintList
示例#9
0
    def createController(self):
        # create controller
        foreLegControllerName = controllerShape(
            self.IkForeLegJointList[3].replace('foot1_JNT', 'foreLeg_CON'),
            'cube', 'blue')
        cmds.move(self.wristPos[0], self.wristPos[1], self.wristPos[2],
                  foreLegControllerName)

        shoulderContollerName = controllerShape(
            self.IkForeLegJointList[0].replace('JNT', 'CON'), 'rombus', 'blue')
        shoulderPos = cmds.xform(self.IkForeLegJointList[0],
                                 t=True,
                                 ws=True,
                                 q=True)
        cmds.move(shoulderPos[0], shoulderPos[1], shoulderPos[2],
                  shoulderContollerName)

        elbowPVContollerName = controllerShape(
            self.IkForeLegJointList[1].replace('JNT', 'CON'), 'sphere', 'blue')
        elbowPVPos = cmds.xform(self.IkForeLegJointList[1],
                                t=True,
                                ws=True,
                                q=True)
        cmds.move(elbowPVPos[0], elbowPVPos[1], elbowPVPos[2],
                  elbowPVContollerName)

        # controller homeNull
        homeNul(foreLegControllerName)
        shoulderContollerNul = homeNul(shoulderContollerName)
        homeNul(elbowPVContollerName)

        # constraints & grouping
        cmds.parent(self.pivotNulList[0], foreLegControllerName)

        cmds.pointConstraint(self.clavicleIkJointList[1],
                             self.IkForeLegJointList[0])
        cmds.pointConstraint(self.clavicleIkJointList[1],
                             self.subIkJointList[0])

        cmds.poleVectorConstraint(elbowPVContollerName, self.G_RPName)
        cmds.poleVectorConstraint(elbowPVContollerName, self.RPsName)

        # add attr
        cmds.addAttr(foreLegControllerName,
                     longName='foot',
                     at='enum',
                     en='Controls',
                     keyable=True)
        cmds.setAttr('%s.foot' % foreLegControllerName, lock=True)

        #########################################################################################################################
        # create clavicle controller
        clavicleControllerName = controllerShape(
            self.clavicleIkJointList[0].replace('JNT', 'CON'), 'cube', 'blue')
        Psnap(clavicleControllerName, self.clavicleIkJointList[0])
        clavicleControllerRotZNul = homeNul(
            clavicleControllerName,
            clavicleControllerName.replace('_CON', 'RotZ_NUL'))
        clavicleControllerNul = homeNul(
            clavicleControllerRotZNul,
            clavicleControllerName.replace('_CON', '_NUL'))

        # create clavicle
        cmds.aimConstraint(foreLegControllerName,
                           clavicleControllerRotZNul,
                           mo=True,
                           worldUpType='none',
                           skip=['x', 'y'])

        cmds.setKeyframe('%s.rz' % clavicleControllerRotZNul)
        cmds.disconnectAttr('pairBlend1_inRotateZ1.output',
                            'pairBlend1.inRotateZ1')
        cmds.delete('pairBlend1_inRotateZ1')

        cmds.rename('pairBlend1', 'L_clvicleRotZ_PBD')

        # add attr autoClavicle
        cmds.addAttr(foreLegControllerName,
                     longName='auto',
                     at='enum',
                     en='Shoulder',
                     keyable=True)
        cmds.setAttr('%s.foot' % foreLegControllerName, lock=True)
        cmds.addAttr(foreLegControllerName,
                     longName='front',
                     at='double',
                     keyable=True,
                     attributeType='float',
                     min=0,
                     max=1,
                     dv=0.5)

        # connection
        cmds.connectAttr('%s.front' % foreLegControllerName,
                         '%s.blendAim1' % clavicleControllerRotZNul)

        clavicleSc = ikHandleMaker(self.clavicleIkJointList[0],
                                   self.clavicleIkJointList[1], 'ikSCsolver')
        clavicleScName = cmds.rename(
            clavicleSc[0],
            self.clavicleIkJointList[0].replace('JNT', 'SC_HDL'))
        clavicleScEffectorName = cmds.rename(
            clavicleSc[1],
            self.clavicleIkJointList[0].replace('JNT', 'SC_IKEFFECTOR'))

        cmds.pointConstraint(clavicleControllerName,
                             self.clavicleIkJointList[0],
                             mo=True)

        cmds.parent(clavicleScName, clavicleControllerName)

        cmds.pointConstraint(shoulderContollerName, clavicleScName, mo=True)

        cmds.parent(shoulderContollerNul, clavicleControllerName)

        # create foot controller             wristPivotName
        wristRollCONT = controllerShape(
            self.wristPivotName.replace('PIVOT', 'CON'), 'cube', 'yellow')
        cvNum = cmds.getAttr('%s.spans' % wristRollCONT) + cmds.getAttr(
            '%s.degree' % wristRollCONT)
        cmds.select('%s.cv[0:%s]' % (wristRollCONT, cvNum - 1))
        cmds.scale(0.5, 0.5, 0.5)
        cmds.select(cl=True)
        cmds.parent('%sShape' % wristRollCONT,
                    self.wristPivotName,
                    r=True,
                    s=True)
        cmds.delete(wristRollCONT)
        wristRollCON = cmds.rename(self.wristPivotName,
                                   self.wristPivotName.replace('PIVOT', 'CON'))

        for x in range(len(self.pivotList)):
            CONT = controllerShape(self.pivotList[x].replace('PIVOT', 'CON'),
                                   'cube', 'yellow')
            cvNum = cmds.getAttr('%s.spans' % CONT) + cmds.getAttr(
                '%s.degree' % CONT)
            cmds.select('%s.cv[0:%s]' % (CONT, cvNum - 1))
            cmds.scale(0.5, 0.5, 0.5)
            cmds.select(cl=True)
            cmds.parent('%sShape' % CONT, self.pivotList[x], r=True, s=True)
            cmds.delete(CONT)
            wristRollCON = cmds.rename(
                self.pivotList[x], self.pivotList[x].replace('PIVOT', 'CON'))
示例#10
0
def L_ikHindLegOP():

    hindLegIkJointList = [
        'L_IK_hip_JNT', 'L_IK_knee_JNT', 'L_IK_ankle_JNT', 'L_IK_ball_JNT',
        'L_IK_toe_JNT', 'L_IK_toeTip_JNT'
    ]

    footTemplateLocLict = [
        'L_hindLeg_inSideRollTemple', 'L_hindLeg_outSideRollTemple',
        'L_hindLeg_heelRollTemple', 'L_hindLeg_toeRollTemple',
        'L_hindLeg_footTwistTemple', 'L_hindLeg_ballRollTemple',
        'L_hindLeg_toeTabTemple'
    ]

    # separate duplicate for ikSpringSolver
    sSJointList = []
    dList = cmds.duplicate(hindLegIkJointList[0], renameChildren=True)
    for x in range(len(dList)):
        rN = cmds.rename(dList[x], dList[x].replace('IK', 'rig')[0:-1])
        sSJointList.append(rN)
    cmds.delete(sSJointList[4])
    del sSJointList[4:]

    # create IK
    RPs = ikHandleMaker(hindLegIkJointList[0], hindLegIkJointList[2],
                        'ikRPsolver')
    RPsName = cmds.rename(RPs[0],
                          hindLegIkJointList[0].replace('JNT', 'RP_HDL'))
    RPsEffectorName = cmds.rename(
        RPs[1], hindLegIkJointList[0].replace('JNT', 'RP_IKEFFECTOR'))

    SCs1 = ikHandleMaker(hindLegIkJointList[2], hindLegIkJointList[3],
                         'ikSCsolver')
    SCs1Name = cmds.rename(RPs[0],
                           hindLegIkJointList[2].replace('JNT', 'SC_HDL'))
    SCs1EffectorName = cmds.rename(
        RPs[1], hindLegIkJointList[2].replace('JNT', 'SC_IKEFFECTOR'))

    SCs2 = ikHandleMaker(hindLegIkJointList[3], hindLegIkJointList[4],
                         'ikSCsolver')
    SCs2Name = cmds.rename(RPs[0],
                           hindLegIkJointList[3].replace('JNT', 'SC_HDL'))
    SCs2EffectorName = cmds.rename(
        RPs[1], hindLegIkJointList[3].replace('JNT', 'SC_IKEFFECTOR'))

    SCs3 = ikHandleMaker(hindLegIkJointList[4], hindLegIkJointList[5],
                         'ikSCsolver')
    SCs3Name = cmds.rename(RPs[0],
                           hindLegIkJointList[4].replace('JNT', 'SC_HDL'))
    SCs3EffectorName = cmds.rename(
        RPs[1], hindLegIkJointList[4].replace('JNT', 'SC_IKEFFECTOR'))

    mel.eval('ikSpringSolver;')
    Ss = cmds.ikHandle(sj=sSJointList[0],
                       ee=sSJointList[3],
                       sol='ikSpringSolver')
    SsName = cmds.rename(RPs[0], sSJointList[0].replace('JNT', 'SS_HDL'))
    SsEffectorName = cmds.rename(
        RPs[1], sSJointList[0].replace('JNT', 'SS_IKEFFECTOR'))

    ####################################################################################################################################

    IST = footTemplateLocLict[0]
    OST = footTemplateLocLict[1]
    HRT = footTemplateLocLict[2]
    TRT = footTemplateLocLict[3]

    FTT = footTemplateLocLict[4]

    BRT = footTemplateLocLict[5]

    TTT = cmds.spaceLocator(n=footTemplateLocLict[6])
    pSnap(TTT[0], hindLegIkJointList[-2])

    ####################################################################################################################################

    # create pivot positon
    pivotList = []
    pivotNulList = []

    for x in range(len(footTemplateLocLict)):
        PL = cmds.group(em=True,
                        n=footTemplateLocLict[x].replace('Temple', '_PIVOT'))
        pSnap(PL, footTemplateLocLict[x])

        pivotList.append(PL)

    for x in range(len(pivotList) - 1):
        cmds.parent(pivotList[x + 1], pivotList[x])

    for x in range(len(pivotList)):
        PH = homeNul(pivotList[x])
        pivotNulList.append(PH)

    cmds.parent(SCs2Name, pivotList[5])
    cmds.parent(SCs3Name, pivotList[-1])

    anklePivotName = cmds.group(em=True, n='L_ankleRoll_main_PIVOT')
    anklePos = cmds.xform(hindLegIkJointList[3], t=True, ws=True, q=True)
    cmds.move(anklePos[0], anklePos[1], anklePos[2], anklePivotName)
    cmds.parent(anklePivotName, sSJointList[2])

    homeNul(anklePivotName)

    # create controller
    haindLegControllerName = controllerShape(
        hindLegIkJointList[3].replace('ball_JNT', 'hindLeg_CON'), 'cube',
        'blue')
    cmds.move(anklePos[0], anklePos[1], anklePos[2], haindLegControllerName)

    hipContollerName = controllerShape(
        hindLegIkJointList[0].replace('JNT', 'CON'), 'cube', 'blue')
    hipPos = cmds.xform(hindLegIkJointList[0], t=True, ws=True, q=True)
    cmds.move(hipPos[0], hipPos[1], hipPos[2], hipContollerName)

    kneePVContollerName = controllerShape(
        hindLegIkJointList[1].replace('JNT', 'CON'), 'sphere', 'blue')
    kneePVPos = cmds.xform(hindLegIkJointList[1], t=True, ws=True, q=True)
    cmds.move(kneePVPos[0], kneePVPos[1], kneePVPos[2], kneePVContollerName)

    # controller homeNull
    homeNul(haindLegControllerName)
    homeNul(hipContollerName)
    homeNul(kneePVContollerName)

    # constraints & grouping
    cmds.parent(pivotNulList[0], haindLegControllerName)

    cmds.pointConstraint(hipContollerName, hindLegIkJointList[0])
    cmds.pointConstraint(hipContollerName, sSJointList[0])

    cmds.poleVectorConstraint(kneePVContollerName, SsName)
    cmds.poleVectorConstraint(sSJointList[1], RPsName)

    cmds.parent(SsName, pivotList[5])

    cmds.parent(RPsName, anklePivotName)

    # add Attr
    cmds.addAttr(haindLegControllerName,
                 longName='foot',
                 at='enum',
                 en='Controls',
                 keyable=True)
    cmds.setAttr('%s.foot' % haindLegControllerName, lock=True)

    cmds.addAttr(haindLegControllerName,
                 longName='leg',
                 at='enum',
                 en='Angle',
                 keyable=True)
    cmds.setAttr('%s.leg' % haindLegControllerName, lock=True)
    cmds.addAttr(haindLegControllerName,
                 longName='angle',
                 at='double',
                 keyable=True,
                 attributeType='float',
                 min=-10,
                 max=10,
                 dv=0)

    SAB0 = cmds.createNode('setRange',
                           n=haindLegControllerName.replace(
                               '_CON', 'SAB0_RNG'))
    SAB1 = cmds.createNode('setRange',
                           n=haindLegControllerName.replace(
                               '_CON', 'SAB1_RNG'))

    cmds.setAttr('%s.minX' % SAB0, 0)
    cmds.setAttr('%s.maxX' % SAB0, 1)
    cmds.setAttr('%s.oldMinX' % SAB0, -10)
    cmds.setAttr('%s.oldMaxX' % SAB0, 10)

    cmds.setAttr('%s.minX' % SAB1, 1)
    cmds.setAttr('%s.maxX' % SAB1, 0)
    cmds.setAttr('%s.oldMinX' % SAB1, -10)
    cmds.setAttr('%s.oldMaxX' % SAB1, 10)

    cmds.connectAttr('%s.angle' % haindLegControllerName, '%s.valueX' % SAB0)
    cmds.connectAttr(
        '%s.outValue.outValueX' % SAB0,
        '%s.springAngleBias[0].springAngleBias_FloatValue' % SsName)

    cmds.connectAttr('%s.angle' % haindLegControllerName, '%s.valueX' % SAB1)
    cmds.connectAttr(
        '%s.outValue.outValueX' % SAB1,
        '%s.springAngleBias[1].springAngleBias_FloatValue' % SsName)
示例#11
0
def splineControllerMaker(crv,handle):

    list=[]

    #씬안에 필요한 group node생성
    z=defaultGroupNode()
    z.createGroupNode()

    par= cmds.listRelatives (crv,p=True)
    locs= setUpCurve (crv)


    for e in locs:
        tmp= cmds.rename(e,e.replace('_LOC','Attach'))
        name=setUniqueName(tmp,'LOC')
        nul= homeNul(name)
        cmds.parent(nul,'attach_GRP')
        list.append(nul)

    low= controllerShape('C_IK_lowBody','cube','yellow')
    lowBody=setUniqueName(low,'CON')

    up= controllerShape( 'C_IK_upBody','cube','yellow')
    upBody=setUniqueName(up,'CON')

    lowNul= homeNul(lowBody)
    upNul= homeNul(upBody)
    cmds.parent(upNul,lowNul,'IKControl_GRP')

    cmds.delete(cmds.parentConstraint(list[0],lowNul,w=True))
    cmds.delete(cmds.parentConstraint(list[-1],upNul,w=True))

    for i in range(len(list)):
        chd= cmds.listRelatives(list[i],c=True)
        cmds.parent(chd[0],w=True)
        if i <= 1:
            mmx=cmds.createNode ('multMatrix')
            dcm=cmds.createNode ('decomposeMatrix')
            cmds.connectAttr (lowBody+'.worldMatrix',mmx+'.matrixIn[0]',f=True)
            cmds.connectAttr (list[i]+'.parentInverseMatrix',mmx+'.matrixIn[1]',f=True)
            cmds.connectAttr (mmx+'.matrixSum',dcm+'.inputMatrix',f=True)
            cmds.connectAttr (dcm+'.outputTranslate',list[i]+'.t',f=True)
            cmds.connectAttr (dcm+'.outputRotate',list[i]+'.r',f=True)
            cmds.parent(chd,list[i])
        else:
            mmx=cmds.createNode ('multMatrix')
            dcm=cmds.createNode ('decomposeMatrix')
            cmds.connectAttr (upBody+'.worldMatrix',mmx+'.matrixIn[0]',f=True)
            cmds.connectAttr (list[i]+'.parentInverseMatrix',mmx+'.matrixIn[1]',f=True)
            cmds.connectAttr (mmx+'.matrixSum',dcm+'.inputMatrix',f=True)
            cmds.connectAttr (dcm+'.outputTranslate',list[i]+'.t',f=True)
            cmds.connectAttr (dcm+'.outputRotate',list[i]+'.r',f=True)
            cmds.parent(chd,list[i])

    cmds.setAttr (handle+'.dTwistControlEnable',1)
    cmds.setAttr (handle+'.dWorldUpType',4)
    cmds.setAttr (handle+'.dWorldUpVector', 0,0,1)
    cmds.setAttr (handle+'.dWorldUpVectorEnd',0,0,1)
    cmds.connectAttr (lowBody+'.worldMatrix[0]',handle+'.dWorldUpMatrix',f=1)
    cmds.connectAttr (upBody+'.worldMatrix[0]',handle+'.dWorldUpMatrixEnd',f=1)

    #FK컨트롤러 생성및 세팅
    sp1= controllerShape('C_IK_upBodyRot1','circle','yellow')
    spine1=setUniqueName(sp1,'CON')
    spNul1= homeNul(spine1)

    sp2= controllerShape('C_IK_upBodyRot2','circle','yellow')
    spine2=setUniqueName(sp2,'CON')
    spNul2= homeNul(spine2)

    cmds.delete(cmds.parentConstraint(list[1].replace('NUL','LOC'),spNul1,w=True))
    cmds.delete(cmds.parentConstraint(list[2].replace('NUL','LOC'),spNul2,w=True))
    cmds.parent (spNul2,spine1)
    cmds.parent(spNul1,'IKControl_GRP')


    return [lowBody,upBody]
示例#12
0
    def setIK(self,*jnt):
        buffer=[]
        copied=[]

        tmp=cmds.listRelatives (jnt[0],c=1,ad=1)
        c=jnt[0]
        buffer.append(c)

        for i in range(len(tmp)):

            if jnt[-1] in c:
                break
            else:
                c=cmds.listRelatives (c,c=True)
                buffer.append(c[0])

        #조인트 복사 및 중복된 네임 정리
        for e in buffer:
            name=e.split('_')[0]+'_IK_'+e.split('_')[2]
            dup= cmds.duplicate (e,n=name,rr=True,rc=True)

            tmp= setUniqueName(dup[0],'JNT')
            par= cmds.listRelatives (tmp,p=True,typ='joint')
            chi= cmds.listRelatives (tmp,c=True,typ='joint')

            if par is not None:
                if len(copied) is not 0:
                    cmds.parent (tmp,copied[-1])
                    if cmds.connectionInfo (tmp+'.inverseScale',id=True) is False:
                        cmds.connectAttr (copied[-1]+'.scale',tmp+'.inverseScale',f=True)
            if chi is not None:
                cmds.delete (chi)
            copied.append(tmp)

        cmds.parent(copied[0],'IKJoint_GRP')
        tmp= ikHandleMaker( copied[0], copied[-2], 'ikRPsolver' )
        hdl= cmds.rename (tmp[0],copied[-2].replace('JNT','HDL'))
        cmds.setAttr (hdl+'.v',0)
        cmds.parent (hdl,'auxillary_GRP')


        self.IkCon=ikControllerMaker( copied[-2] ,hdl)

        otherCon= fkControllerMaker( 'circle', 'yellow', [copied[-1]] )

        cmds.delete(otherCon[2])
        cmds.orientConstraint (otherCon[0],copied[-1],w=True)

        ballUp= controllerShape(otherCon[0][0].replace('_CON','RollUp_CON'),'hexagon', 'yellow' )
        ballUp_Nul= homeNul (ballUp)
        cmds.delete(cmds.pointConstraint (copied[-1],ballUp_Nul,w=True))
        cmds.rotate (90,0,0,ballUp+'.cv[*]',os=1)

        heelUp= controllerShape(self.IkCon[0][1].replace('_CON','RollUp_CON'),'hexagon', 'yellow' )
        heelUp_Nul= homeNul (heelUp)
        cmds.delete(cmds.pointConstraint (copied[-2],heelUp_Nul,offset=(0,-1,-1),w=True))
        cmds.rotate (90,0,0,heelUp+'.cv[*]',os=1)

        self.IkCon[0].append(str(otherCon[0][0]))
        self.IkCon[1].append(str(otherCon[1][0]))

        cmds.parent (self.IkCon[1][3],ballUp_Nul,heelUp_Nul,self.IkCon[0][0])

        #rolling up
        roll=addRollingUp()
        tmp=roll.rollUp(self.IkCon[0][1].replace('_CON','_LOC'),ballUp,heelUp)
        cmds.parent (tmp,'roll_GRP')

        #attach shoulder
        tmp=attachPart2(heelUp ,self.IkCon[1][3] , 'translate','rotate','scale','shear')
        cmds.parent(tmp,'attach_GRP')

        #connect stretchy
        st=stretchyLock()
        if cmds.objExists (self.IkCon[0][1].replace('_CON','_LOC')) is True:
            st.setStretchyLock(self.IkCon[0][1],self.IkCon[0][2],self.IkCon[0][1].replace('_CON','_LOC'),copied[0],copied[1],copied[2])
        else:
            tempString= cmds.spaceLocator (n=self.IkCon[0][1].replace('_CON','_LOC'))
            cmds.parent (tempString,self.IkCon[0][1].replace('_CON','Sub_CON'))
            st.setStretchyLock(self.IkCon[0][1],self.IkCon[0][2],self.IkCon[0][1].replace('_CON','_LOC'),copied[0],copied[1],copied[2])

        n=noneFlip()
        n.setup(self.IkCon[0][1].replace('_CON','_LOC'),copied[0],self.IkCon[0][2])
        cmds.rotate (90,0,0,self.IkCon[0][3]+'.cv[*]',os=1)

        return self.IkCon[0]
示例#13
0
def neckControllerMaker(crv,handle):

    list=[]

    #씬안에 필요한 group node생성
    z=defaultGroupNode()
    z.createGroupNode()

    par= cmds.listRelatives (crv,p=True)
    locs= setUpCurve (crv)


    for e in locs:
        tmp= cmds.rename(e,e.replace('_LOC','Attach'))
        name=setUniqueName(tmp,'LOC')
        nul= homeNul(name)
        cmds.parent(nul,'attach_GRP')
        list.append(nul)

    low= controllerShape('C_IK_neck','cube','yellow')
    neck=setUniqueName(low,'CON')

    up= controllerShape( 'C_IK_head','cube','yellow')
    head=setUniqueName(up,'CON')

    neckNul= homeNul(neck)
    headNul= homeNul(head)
    cmds.parent(headNul,neckNul,'IKControl_GRP')

    cmds.delete(cmds.parentConstraint(list[0],neckNul,w=True))
    cmds.delete(cmds.parentConstraint(list[-1],headNul,w=True))

    for i in range(len(list)):
        chd= cmds.listRelatives(list[i],c=True)
        cmds.parent(chd[0],w=True)
        if i == 0:
            mmx=cmds.createNode ('multMatrix')
            dcm=cmds.createNode ('decomposeMatrix')
            cmds.connectAttr (neck+'.worldMatrix',mmx+'.matrixIn[0]',f=True)
            cmds.connectAttr (list[i]+'.parentInverseMatrix',mmx+'.matrixIn[1]',f=True)
            cmds.connectAttr (mmx+'.matrixSum',dcm+'.inputMatrix',f=True)
            cmds.connectAttr (dcm+'.outputTranslate',list[i]+'.t',f=True)
            cmds.connectAttr (dcm+'.outputRotate',list[i]+'.r',f=True)
            cmds.parent(chd,list[i])
        else:
            mmx=cmds.createNode ('multMatrix')
            dcm=cmds.createNode ('decomposeMatrix')
            cmds.connectAttr (head+'.worldMatrix',mmx+'.matrixIn[0]',f=True)
            cmds.connectAttr (list[i]+'.parentInverseMatrix',mmx+'.matrixIn[1]',f=True)
            cmds.connectAttr (mmx+'.matrixSum',dcm+'.inputMatrix',f=True)
            cmds.connectAttr (dcm+'.outputTranslate',list[i]+'.t',f=True)
            cmds.connectAttr (dcm+'.outputRotate',list[i]+'.r',f=True)
            cmds.parent(chd,list[i])

    cmds.setAttr (handle+'.dTwistControlEnable',1)
    cmds.setAttr (handle+'.dWorldUpType',3)
    cmds.setAttr (handle+'.dWorldUpVector', 0,0,1)
    cmds.connectAttr (neck+'.worldMatrix[0]',handle+'.dWorldUpMatrix',f=1)


    return [neck,head]
示例#14
0
from baseRig.util.fkControllerMaker import *
from baseRig.util.snap import *
from baseRig.util.homeNul import *
from baseRig.util.attach import *

fkSpineJointList = [
    'C_FKsub_spine1_NUL', 'C_FKsub_spine2_NUL', 'C_FKsub_spine3_NUL',
    'C_FKsub_chest_NUL'
]

fkControllerMaker('circle', 'yellow', fkSpineJointList[1:3])

homeNul('C_IK_upBody_CON', 'C_IK_upBody_fkSubAttach_NUL')

cmds.parentConstraint('C_IK_lowBodySub_CON', fkSpineJointList[0], mo=True)

attachNode('C_FKsub_chest_NUL', 'C_IK_upBody_fkSubAttach_NUL', 'translate',
           'rotate', 'scale', 'shear')

attachPart('C_IK_root_CON', 'C_FKsub_spine2_NUL_NUL', 'translate', 'rotate',
           'scale', 'shear')
示例#15
0
    def setBlend(self,hip,*jnt):
        buffer=[]
        copied=[]
        const=[]
        crv=''
        tmp=cmds.listRelatives (jnt[0],c=1,ad=1)
        c=jnt[0]
        buffer.append(c)

        if tmp is not None:
            for i in range(len(tmp)):

                if jnt[-1] in c:
                    break
                else:
                    c=cmds.listRelatives (c,c=True)
                    buffer.append(c[0])

        #조인트 복사 및 중복된 네임 정리
        for e in buffer:
            name=e.split('_')[0]+'_Blend_'+e.split('_')[2]
            dup= cmds.duplicate (e,n=name,rr=True,rc=True)
            tmp= setUniqueName(dup[0],'JNT')
            par= cmds.listRelatives (tmp,p=True,typ='joint')
            chi= cmds.listRelatives (tmp,c=True,typ='joint')

            if par is not None:
                if len(copied) is not 0:
                    cmds.parent (tmp,copied[-1])
                    if cmds.connectionInfo (tmp+'.inverseScale',id=True) is False:
                        cmds.connectAttr (copied[-1]+'.scale',tmp+'.inverseScale',f=True)
            if chi is not None:
                cmds.delete (chi)
            copied.append(tmp)
        cmds.parent(copied[0],'BlendJoint_GRP')


        #스위치 콘트롤러 생성
        prefix= copied[0].split('_')[0]
        buf= controllerShape(prefix+'_legBlend','fatCross','yellow')
        sw= setUniqueName(buf,'CON')
        swNul= homeNul(sw)
        sha= cmds.listRelatives (sw,s=True,typ='nurbsCurve')
        cmds.rotate (90,0,0,sha[0]+'.cv[*]',os=1)
        cmds.scale (0.5,0.5,0.5,sha[0]+'.cv[*]',os=1)

        v= cmds.getAttr (copied[0]+'.tx')
        cmds.delete(cmds.pointConstraint (copied[0],swNul,w=True,offset=(v/(abs(v)),1,0)))

        cmds.addAttr (sw,ln ='FKIKBlend',at='double',min= 0 ,max= 1 ,dv= 0)
        cmds.setAttr (sw+'.FKIKBlend',e=True,keyable=True)

        cmds.addAttr (sw,ln ='FKConVis',at='bool')
        cmds.setAttr (sw+'.FKConVis',e=True,keyable=True)

        cmds.addAttr (sw,ln ='IKConVis',at='bool')
        cmds.setAttr (sw+'.IKConVis',e=True,keyable=True)

        cmds.parent (swNul,'otherControl_GRP')

        for e in copied:
            if cmds.objExists (e.replace('Blend','FK')) :
                const.append(cmds.parentConstraint (e.replace('Blend','FK'),e,w= 1)[0])

            if cmds.objExists (e.replace('Blend','IK')):
                const.append(cmds.parentConstraint (e.replace('Blend','IK'),e,w= 1)[0])
        for e in const:
            buf= cmds.parentConstraint (e,q=True,tl=True)
            if len(buf) is 2:
                z=connectSwitch()
                z.FKIKConstraint(sw,e)
            else:
                cmds.delete(swNul)
                break
        for e in self.FkCon[0]:
            z=connectSwitch()
            z.ConnectFKVisibility(sw,e.replace('_CON','_NUL'))
        for e in self.IkCon[0]:
            z=connectSwitch()
            z.ConnectIKVisibility(sw,e.replace('_CON','_NUL'))

        #twist setup
        t=twistSetUp()
        t.blendTwist(hip,copied[0],copied[1],5)
        t.blendTwist(copied[0],copied[1],copied[2],5)

        #skin setup
        s=setSkinJoint()
        s.set()

        return copied
示例#16
0
    def blendTwist(self, base, start, end, num):

        name = ''
        twist = []
        twistNul = []
        joints = []

        if '_' in start:
            lst = start.split('_')
            for e in lst[:-1]:
                if len(name) != 0:
                    name = name + '_' + e
                else:
                    name = name + e
            name = name
        else:
            name = start

        tmp = cmds.spaceLocator(n=name + 'Up')
        rotUpVec = setUniqueName(tmp[0], 'LOC')
        rotUpNul = homeNul(rotUpVec)
        cmds.parentConstraint(end, rotUpNul, w=True)

        v = cmds.getAttr(end + '.tx')

        #레프트 라이트에따라서 에임되는 수치가 다르다.
        #레프트는 -1 0 0
        #라이트는 1 0 0 이다.

        cmds.aimConstraint(start,
                           rotUpVec,
                           w=True,
                           aim=[v / (abs(v)) * -1, 0, 0],
                           u=[0, 1, 0],
                           wut='none')

        #지정된 갯수만큼 블랜드 로케이터를 생성 한다.
        for i in range(num):
            tmp = cmds.spaceLocator(n=name + 'Twist')
            twist.append(setUniqueName(tmp[0], 'LOC'))
            twistNul.append(homeNul(twist[i]))

        tmp = cmds.group(twistNul, n=name + 'TwistAim')
        twistAim = setUniqueName(tmp, 'NUL')

        tmp = cmds.group(twistAim, n=name + 'TwistGroup')
        twistGrp = setUniqueName(tmp, 'NUL')

        cmds.delete(cmds.parentConstraint(start, twistGrp, w=True))
        cmds.parentConstraint(base, twistGrp, mo=True)
        cmds.aimConstraint(end,
                           twistAim,
                           w=True,
                           aim=[v / (abs(v)), 0, 0],
                           u=[0, 1, 0],
                           wut='none')
        cmds.pointConstraint(start, twistAim, w=True)

        #페어블랜드 노드를 이용하여
        #조인트의 늘어난 거리만큼 블랜드 로케이터들을 위치 시킨다.
        for i in range(num):
            pbd = cmds.createNode('pairBlend')
            cmds.connectAttr(end + '.t', pbd + '.inTranslate2', f=True)
            cmds.connectAttr(pbd + '.outTranslateX',
                             twistNul[i] + '.tx',
                             f=True)
            if i is 0:
                cmds.setAttr(pbd + '.weight', 0.01)
            else:
                cmds.setAttr(pbd + '.weight', (0.99 / (num - 1)) * i)

        cmds.aimConstraint(start,
                           twist[-1],
                           w=True,
                           aim=[v / (abs(v)) * -1, 0, 0],
                           u=[0, 1, 0],
                           wut='objectrotation',
                           wuo=rotUpVec)

        #페어블랜드로 로케이터들의 트위스트값을
        #나눈다.
        for i in range(num - 1):
            pbd = cmds.createNode('pairBlend')
            cmds.connectAttr(twist[-1] + '.r', pbd + '.inRotate2', f=True)
            cmds.connectAttr(pbd + '.outRotate', twist[i] + '.r', f=True)
            cmds.setAttr(pbd + '.weight', (1.0 / (num - 1)) * i)
            cmds.setAttr(pbd + '.rotInterpolation', 1)

        #트위스트 블랜드 조인트를 생성 하여
        #트위스트 로케이터와 컨스트레인 한다.
        z = zeroOut()
        for e in twist:
            tmp = cmds.createNode('joint', n=e.replace('_LOC', ''))
            jnt = setUniqueName(tmp, 'JNT')
            cmds.delete(cmds.parentConstraint(e, jnt, w=True))
            z.zeroOutJoint(jnt)
            cmds.parentConstraint(e, jnt, w=True)
            cmds.parent(jnt, 'BlendJoint_GRP')
            joints.append(jnt)

        cmds.parent(rotUpNul, twistGrp)
        cmds.parent(twistGrp, 'twist_GRP')

        return joints
示例#17
0
    def createIkSpineSet(self):
        IKH = ikHandleMaker(self.spineJointList[1], self.spineJointList[-1],
                            'ikSplineSolver')
        print IKH
        IKH = [u'ikHandle1', u'effector1', u'curve1']
        handleName = cmds.rename(IKH[0], 'C_IK_spine1_HDL')
        effectorName = cmds.rename(IKH[1], 'C_IK_spine1_EFFECTOR')
        curveName = cmds.rename(IKH[2], 'C_IK_spine1_CRV')

        cmds.rebuildCurve(curveName, s=2, d=3)

        locatorName = curveToLocatorFix(curveName)
        print locatorName
        cmds.parent(curveName, w=True)

        for x in range(len(locatorName)):
            NUL = homeNul(locatorName[x])
            self.locatorNulList.append(NUL)

        # Advanced Twist Controls Set
        upLoc = cmds.spaceLocator(n=self.upBody.replace('CON', 'aTwist_LOC'))
        POsnap(upLoc, self.spineJointList[-1])
        cmds.parent(upLoc, self.upBodySubCon)
        #[u'C_IK_root_JNT', u'C_IK_spine1_JNT', u'C_IK_spine2_JNT', u'C_IK_spine3_JNT', u'C_IK_chest_JNT']
        lowLoc = cmds.spaceLocator(n=self.lowBody.replace('CON', 'aTwist_LOC'))
        POsnap(lowLoc, self.spineJointList[1])
        cmds.parent(lowLoc, self.lowBodySubCon)

        cmds.setAttr('%s.dTwistControlEnable' % handleName, 1)
        cmds.setAttr('%s.dWorldUpType' % handleName, 4)
        cmds.setAttr('%s.dWorldUpAxis' % handleName, 0)

        cmds.setAttr('%s.dWorldUpVectorX' % handleName, 0)
        cmds.setAttr('%s.dWorldUpVectorY' % handleName, 1)
        cmds.setAttr('%s.dWorldUpVectorZ' % handleName, 0)
        cmds.setAttr('%s.dWorldUpVectorEndX' % handleName, 0)
        cmds.setAttr('%s.dWorldUpVectorEndY' % handleName, 1)
        cmds.setAttr('%s.dWorldUpVectorEndZ' % handleName, 0)

        cmds.connectAttr('%s.worldMatrix' % lowLoc[0],
                         '%s.dWorldUpMatrix' % handleName)
        cmds.connectAttr('%s.worldMatrix' % upLoc[0],
                         '%s.dWorldUpMatrixEnd' % handleName)

        #
        cmds.orientConstraint(self.upBodySubCon,
                              self.spineJointList[-1],
                              mo=True)

        #print self.locatorNulList[u'C_IK_spine1_NUL', u'C_IK_spine2_NUL', u'C_IK_spine3_NUL', u'C_IK_spine4_NUL']
        AP_low0 = attachPart(self.lowBodySubCon, self.locatorNulList[0],
                             'translate', 'rotate', 'scale', 'shear')
        AP_low1 = attachPart(self.lowBodySubCon, self.locatorNulList[1],
                             'translate', 'rotate', 'scale', 'shear')

        AP_up4 = attachPart(self.upBodySubCon, self.locatorNulList[3],
                            'translate', 'rotate', 'scale', 'shear')
        AP_up5 = attachPart(self.upBodySubCon, self.locatorNulList[4],
                            'translate', 'rotate', 'scale', 'shear')

        cmds.parentConstraint(self.hipCon, self.spineJointList[0], mo=True)

        #......
        AP_lowBoy = attachPart(self.spineControllerList[0], self.lowBodyNul,
                               'translate', 'rotate', 'scale', 'shear')
        AP_upBoy = attachPart(self.spineControllerList[0], self.upBodyNul,
                              'translate', 'rotate', 'scale', 'shear')
        #...
        #noneScaleSpineGroup = cmds.group( handleName, curveName, self.locatorNulList[0], self.locatorNulList[1], self.locatorNulList[2], self.locatorNulList[3],
        #                                                         self.locatorNulList[4], self.locatorNulList[5], name='noneScaleSpine_GRP' )
        """
        cmds.parent( noneScaleSpineGroup, 'noneScale_GRP' )

        cmds.parent( self.spineJointList[0], 'C_IK_spineJoint_GRP' )

        cmds.parent( self.spineControllerNulList[0], 'C_move_CON' )

        cmds.parent( self.lowBodyNul, 'C_IK_spineController_GRP' )
        cmds.parent( self.upBodyNul, 'C_IK_spineController_GRP' )

        cmds.parent( AP_low0, 'C_IK_spineAttach_GRP' )
        cmds.parent( AP_low1, 'C_IK_spineAttach_GRP' )
        cmds.parent( AP_low2, 'C_IK_spineAttach_GRP' )
        cmds.parent( AP_up3, 'C_IK_spineAttach_GRP' )
        cmds.parent( AP_up4, 'C_IK_spineAttach_GRP' )
        cmds.parent( AP_up5, 'C_IK_spineAttach_GRP' )

        cmds.parent( AP_lowBoy, 'C_IK_spineAttach_GRP' )
        cmds.parent( AP_upBoy, 'C_IK_spineAttach_GRP' )
        """
        spineMiddleCon = controllerShape('C_IK_spineMiddle_CON', 'hexagon',
                                         'yellow')
        print spineMiddleCon
        #POsnap( spineMiddleCon, self.locatorNulList[2] )
        cmds.delete(
            cmds.parentConstraint(self.upBody, self.lowBody, spineMiddleCon))
        spineMiddleConNul = homeNul(spineMiddleCon)

        cmds.parentConstraint(self.upBodySubCon,
                              self.lowBodySubCon,
                              spineMiddleConNul,
                              mo=True)
        attachPart(spineMiddleCon, self.locatorNulList[2], 'translate',
                   'rotate', 'scale', 'shear')

        mySpineJnt1 = 'C_template_spine1_JNT'
        mySpineJnt2 = 'C_template_spine2_JNT'
        mySpineJnt3 = 'C_template_spine3_JNT'
        mySpineJnt4 = 'C_template_spine4_JNT'
        myChestJnt = 'C_template_chest_JNT'

        # make nul
        mySpineNul1 = cmds.group(em=True, name='C_FKsub_spine1_NUL')
        cmds.delete(
            cmds.parentConstraint(self.spineTempJointList[1], mySpineNul1))

        mySpineNul2 = cmds.group(em=True, name='C_FKsub_spine2_NUL')
        cmds.delete(
            cmds.parentConstraint(self.spineTempJointList[1],
                                  self.spineTempJointList[4], mySpineNul2))

        mySpineNul3 = cmds.group(em=True, name='C_FKsub_spine3_NUL')
        cmds.delete(
            cmds.parentConstraint(self.spineTempJointList[7],
                                  self.spineTempJointList[4], mySpineNul3))

        myChestNul = cmds.group(em=True, name='C_FKsub_chest_NUL')
        cmds.delete(
            cmds.parentConstraint(self.spineTempJointList[7], myChestNul))

        # nul parent
        cmds.parent(myChestNul, mySpineNul3)
        cmds.parent(mySpineNul3, mySpineNul2)
        cmds.parent(mySpineNul2, mySpineNul1)
示例#18
0
    def createController(self):
        # create controller
        foreLegControllerName = controllerShape(
            self.IkForeLegJointList[4].replace('foot1_JNT', 'foreLeg_CON'),
            'cube', 'blue')
        cmds.move(self.wristPos[0], self.wristPos[1], self.wristPos[2],
                  foreLegControllerName)

        clavicleControllerName = controllerShape(
            self.IkForeLegJointList[0].replace('JNT', 'CON'), 'cube', 'blue')
        shoulderPos = cmds.xform(self.IkForeLegJointList[0],
                                 t=True,
                                 ws=True,
                                 q=True)
        shoulderRot = cmds.xform(self.IkForeLegJointList[0],
                                 ro=True,
                                 ws=True,
                                 q=True)
        cmds.move(shoulderPos[0], shoulderPos[1], shoulderPos[2],
                  clavicleControllerName)
        cmds.rotate(shoulderRot[0], shoulderRot[1], shoulderRot[2],
                    clavicleControllerName)

        clavicleWorldControllerName = controllerShape(
            self.IkForeLegJointList[0].replace('JNT', 'world_CON'), 'cube',
            'blue')
        cmds.move(shoulderPos[0], shoulderPos[1], shoulderPos[2],
                  clavicleWorldControllerName)

        elbowPVContollerName = controllerShape(
            self.IkForeLegJointList[2].replace('JNT', 'CON'), 'sphere', 'blue')
        elbowPVPos = cmds.xform(self.IkForeLegJointList[2],
                                t=True,
                                ws=True,
                                q=True)
        cmds.move(elbowPVPos[0], elbowPVPos[1], elbowPVPos[2],
                  elbowPVContollerName)

        # controller homeNull
        homeNul(foreLegControllerName)
        shoulderContollerNul = homeNul(clavicleControllerName)
        elbowPVContollerNameNul = homeNul(elbowPVContollerName)
        cmds.select(elbowPVContollerNameNul)
        cmds.move(-5, r=True, z=True)

        clavicleWorldControllerNul = homeNul(clavicleWorldControllerName)

        # constraints & grouping
        cmds.parent(self.pivotNulList[0], foreLegControllerName)
        cmds.parent(shoulderContollerNul, clavicleWorldControllerName)

        # add attr
        cmds.addAttr(foreLegControllerName,
                     longName='foot',
                     at='enum',
                     en='Controls',
                     keyable=True)
        cmds.setAttr('%s.foot' % foreLegControllerName, lock=True)

        #########################################################################################################################
        # create clavicleControllerRotZNul
        clavicleControllerRotZNul = homeNul(
            clavicleControllerName,
            clavicleControllerName.replace('_CON', 'RotZ_NUL'))

        # create clavicle
        cmds.aimConstraint(foreLegControllerName,
                           clavicleControllerRotZNul,
                           mo=True,
                           worldUpType='none',
                           skip=['x', 'y'])

        cmds.setKeyframe('%s.rz' % clavicleControllerRotZNul)
        cmds.disconnectAttr('pairBlend1_inRotateZ1.output',
                            'pairBlend1.inRotateZ1')
        cmds.delete('pairBlend1_inRotateZ1')

        cmds.rename('pairBlend1', 'L_clvicleRotZ_PBD')

        # add attr autoClavicle
        cmds.addAttr(foreLegControllerName,
                     longName='auto',
                     at='enum',
                     en='Shoulder',
                     keyable=True)
        cmds.setAttr('%s.auto' % foreLegControllerName, lock=True)
        cmds.addAttr(foreLegControllerName,
                     longName='front',
                     at='double',
                     keyable=True,
                     attributeType='float',
                     min=0,
                     max=1,
                     dv=0.5)

        # connection
        cmds.connectAttr('%s.front' % foreLegControllerName,
                         '%s.blendAim1' % clavicleControllerRotZNul)

        # parentConstraint
        cmds.parentConstraint(clavicleControllerName,
                              self.IkForeLegJointList[0],
                              mo=True)
        cmds.parentConstraint(clavicleControllerName,
                              self.subIkJointList[0],
                              mo=True)

        # create foot controller
        wristRollCONT = controllerShape(
            self.wristPivotName.replace('PIVOT', 'CON'), 'cube', 'yellow')
        cvNum = cmds.getAttr('%s.spans' % wristRollCONT) + cmds.getAttr(
            '%s.degree' % wristRollCONT)
        cmds.select('%s.cv[0:%s]' % (wristRollCONT, cvNum - 1))
        cmds.scale(1.5, 1.5, 1.5)
        cmds.select(cl=True)
        cmds.parent('%sShape' % wristRollCONT,
                    self.wristPivotName,
                    r=True,
                    s=True)
        cmds.delete(wristRollCONT)
        wristRollCON = cmds.rename(self.wristPivotName,
                                   self.wristPivotName.replace('PIVOT', 'CON'))

        for x in range(len(self.pivotList)):
            CONT = controllerShape(self.pivotList[x].replace('PIVOT', 'CON'),
                                   'cube', 'yellow')
            cvNum = cmds.getAttr('%s.spans' % CONT) + cmds.getAttr(
                '%s.degree' % CONT)
            cmds.select('%s.cv[0:%s]' % (CONT, cvNum - 1))
            cmds.scale(0.5, 0.5, 0.5)
            cmds.select(cl=True)
            cmds.parent('%sShape' % CONT, self.pivotList[x], r=True, s=True)
            cmds.delete(CONT)
            wristRollCON = cmds.rename(
                self.pivotList[x], self.pivotList[x].replace('PIVOT', 'CON'))

        # create spaceLocator
        shoulderLOC = cmds.spaceLocator(
            n=self.subIkJointList[1].replace('JNT', 'PV_LOC'))
        shoulderLocatorNUL = homeNul(shoulderLOC[0])
        Psnap(shoulderLocatorNUL, self.subIkJointList[1])
        cmds.setAttr('%s.translateZ' % shoulderLOC[0], -5)

        wristRollLOC = cmds.spaceLocator(
            n=wristRollCONT.replace('CON', 'PV_LOC'))
        wristRollLocatorNUL = homeNul(wristRollLOC[0])
        cmds.parent(wristRollLocatorNUL, wristRollCONT)
        Psnap(wristRollLocatorNUL, wristRollCONT)
        cmds.setAttr('%s.translateZ' % wristRollLOC[0], -5)

        # pole Vector Constrain
        cmds.poleVectorConstraint(shoulderLOC, self.G_RPName)
        cmds.poleVectorConstraint(elbowPVContollerName, self.RPsName)
        cmds.poleVectorConstraint(wristRollLOC, self.RP1Name)

        #
        cmds.parentConstraint(self.subIkJointList[-2],
                              self.wristPivotNameNul,
                              mo=True)

        cmds.setKeyframe('%s.rx' % self.wristPivotNameNul)
        cmds.setKeyframe('%s.ry' % self.wristPivotNameNul)
        cmds.setKeyframe('%s.rz' % self.wristPivotNameNul)

        cmds.disconnectAttr('pairBlend1_inRotateX1.output',
                            'pairBlend1.inRotateX1')
        cmds.disconnectAttr('pairBlend1_inRotateY1.output',
                            'pairBlend1.inRotateY1')
        cmds.disconnectAttr('pairBlend1_inRotateZ1.output',
                            'pairBlend1.inRotateZ1')

        cmds.delete('pairBlend1_inRotateX1', 'pairBlend1_inRotateY1',
                    'pairBlend1_inRotateZ1')

        cmds.rename('pairBlend1', 'L_clvicleRotZ_PBD')

        #
        cmds.addAttr(wristRollCONT,
                     longName='wristRoll',
                     at='enum',
                     en='Lock',
                     keyable=True)
        cmds.setAttr('%s.wristRoll' % wristRollCONT, lock=True)
        cmds.addAttr(wristRollCONT,
                     longName='fallowRotate',
                     at='double',
                     keyable=True,
                     attributeType='float',
                     min=0,
                     max=1,
                     dv=1)

        cmds.connectAttr('%s.fallowRotate' % wristRollCONT,
                         '%s.blendParent1' % self.wristPivotNameNul)

        #cmds.connectAttr( '%s.vis' % haindLegControllerName, '%s.visibility' % self.pivotNulList[0] )

        cmds.select(cl=True)
示例#19
0
    def createIkSpineController(self):
        rootCon = fkControllerMaker('cross', 'yellow',
                                    [self.spineJointList[0]])
        spine1Con = fkControllerMaker('cube', 'yellow',
                                      [self.spineJointList[1]])
        chestCon = fkControllerMaker('cube', 'yellow',
                                     [self.spineJointList[-1]])

        self.spineControllerList = rootCon[0][0], spine1Con[0][0], chestCon[0][
            0]
        self.spineControllerNulList = rootCon[1][0], spine1Con[1][0], chestCon[
            1][0]
        self.spineConstraintList = rootCon[2][0], spine1Con[2][0], chestCon[2][
            0]

        cmds.delete(self.spineConstraintList)
        """
        for each in range( len(self.spineControllerNulList)-1 ):
            cmds.delete( cmds.aimConstraint( self.spineJointList[each+1], self.spineControllerNulList[each], aimVector=[0,1,0], upVector=[0,0,-1], worldUpType='vector', worldUpVector=[0,1,0]  ) )
        cmds.delete( cmds.aimConstraint( self.spineJointList[-2], self.spineControllerNulList[-1], aimVector=[0,-1,0], upVector=[0,0,-1], worldUpType='vector', worldUpVector=[0,1,0]  ) )
        """
        self.hipCon = controllerShape('C_IK_hip_CON', 'cube', 'yellow')
        #print self.spineJointList[1]
        POsnap(self.hipCon, self.spineJointList[0])
        hipConNul = homeNul(self.hipCon)
        """
        cmds.delete( cmds.aimConstraint( self.spineJointList[2], hipConNul, aimVector=[0,1,0], upVector=[0,0,-1], worldUpType='vector', worldUpVector=[0,1,0]  ) )
        """
        #cmds.parent( hipConNul, self.spineControllerList[1] )

        # 'C_IK_hip_CON' pivot moving~~
        lowBodyPos = cmds.xform(spine1Con[0], ws=True, t=True, q=True)
        cmds.move(lowBodyPos[0], lowBodyPos[1], lowBodyPos[2],
                  '%s.rotatePivot' % self.hipCon)
        cmds.move(lowBodyPos[0], lowBodyPos[1], lowBodyPos[2],
                  '%s.rotatePivot' % hipConNul)

        hipConCvN = cmds.getAttr('%s.spans' % self.hipCon)
        cmds.select('%s.cv[0:%s]' % (self.hipCon, hipConCvN))
        cmds.scale(0.8, 0.8, 0.8, ocp=True)
        cmds.select(cl=True)

        # Add Sub Controller
        print self.spineControllerNulList
        self.lowBodySubCon = controllerShape('C_IK_lowBodySub_CON', 'cube',
                                             'yellow')
        self.upBodySubCon = controllerShape('C_IK_upBodySub_CON', 'cube',
                                            'yellow')

        lowBodySubConCvN = cmds.getAttr('%s.spans' % self.lowBodySubCon)
        cmds.select('%s.cv[0:%s]' % (self.lowBodySubCon, lowBodySubConCvN))
        cmds.scale(0.8, 0.8, 0.8, ocp=True)
        cmds.select(cl=True)
        upBodySubConCvN = cmds.getAttr('%s.spans' % self.upBodySubCon)
        cmds.select('%s.cv[0:%s]' % (self.upBodySubCon, upBodySubConCvN))
        cmds.scale(0.8, 0.8, 0.8, ocp=True)
        cmds.select(cl=True)

        self.lowBodySubConNul = homeNul(self.lowBodySubCon)
        self.upBodySubConNul = homeNul(self.upBodySubCon)

        POsnap(self.lowBodySubConNul, spine1Con[0][0])
        POsnap(self.upBodySubConNul, chestCon[0][0])

        cmds.parent(self.lowBodySubConNul, spine1Con[0][0])
        cmds.parent(self.upBodySubConNul, chestCon[0][0])

        cmds.parent(hipConNul, self.lowBodySubCon)

        #........................................................................................
        #print self.spineControllerList#(u'C_IK_root_CON', u'C_IK_spine1_CON', u'C_IK_chest_CON')
        self.lowBody = cmds.rename(self.spineControllerList[1],
                                   'C_IK_lowBody_CON')
        self.upBody = cmds.rename(self.spineControllerList[2],
                                  'C_IK_upBody_CON')

        self.lowBodyNul = cmds.rename(self.spineControllerNulList[1],
                                      'C_IK_lowBody_NUL')
        self.upBodyNul = cmds.rename(self.spineControllerNulList[2],
                                     'C_IK_upBody_NUL')
示例#20
0
文件: ikHindLeg.py 项目: mappp7/tools
    def createController(self):
        # create controller
        haindLegControllerName = controllerShape( self.IkHindLegJointList[3].replace( 'ball_JNT', 'hindLeg_CON' ), 'cube', 'blue' )
        cmds.move( self.anklePos[0], self.anklePos[1], self.anklePos[2], haindLegControllerName )

        hipControllerName = controllerShape( self.IkHindLegJointList[0].replace( 'JNT', 'CON' ), 'cube', 'blue' )
        POsnap( hipControllerName, self.IkHindLegJointList[0] )

        hipWorldControllerName = controllerShape( self.IkHindLegJointList[0].replace( 'JNT', 'world_CON' ), 'cube', 'blue' )
        Psnap( hipWorldControllerName, self.IkHindLegJointList[0] )

        kneePVContollerName = cmds.spaceLocator( n=self.IkHindLegJointList[1].replace( 'JNT', 'LOC' ) )[0]
        kneePVPos = cmds.xform( self.IkHindLegJointList[0], t=True, ws=True, q=True )
        cmds.move( kneePVPos[0], kneePVPos[1], kneePVPos[2] + 20, kneePVContollerName )

        anklePVContollerName = controllerShape( self.IkHindLegJointList[2].replace( 'JNT', 'CON' ), 'sphere', 'blue' )
        anklePVPos = cmds.xform( self.IkHindLegJointList[2], t=True, ws=True, q=True )
        cmds.move( anklePVPos[0], anklePVPos[1], anklePVPos[2], anklePVContollerName )

        # controller homeNull
        homeNul( haindLegControllerName )
        hipNul = homeNul( hipControllerName )
        hipRotZNul = homeNul( hipControllerName, hipNul.replace( 'hip', 'hipRotZ' ) )
        hipNulWorldNul = homeNul( hipWorldControllerName )
        kneePVNul = homeNul( kneePVContollerName )
        homeNul( anklePVContollerName )

        # constraints & grouping
        cmds.parent( self.pivotNulList[0], haindLegControllerName )
        cmds.parent( kneePVNul, hipControllerName )
        cmds.parent( hipNul, hipWorldControllerName )

        if self.side != 'R' :
            cmds.aimConstraint( haindLegControllerName, hipRotZNul, mo=True, weight=1, aimVector=[ 1, 0, 0 ], upVector=[ 0, 1, 0 ], worldUpType='none', skip=[ 'x', 'y' ] )
        else :
            cmds.aimConstraint( haindLegControllerName, hipRotZNul, mo=True, weight=1, aimVector=[ -1, 0, 0 ], upVector=[ 0, 1, 0 ], worldUpType='none', skip=[ 'x', 'y' ] )

        cmds.pointConstraint( hipControllerName, self.IkHindLegJointList[0] )
        cmds.pointConstraint( hipControllerName, self.subIkJointList[0] )
        cmds.orientConstraint( hipControllerName, self.subIkJointList[0] )

        cmds.poleVectorConstraint( anklePVContollerName, self.sRPsName )
        cmds.poleVectorConstraint( kneePVContollerName, self.RPsName )

        # addAttr & connection
        cmds.addAttr( haindLegControllerName, longName='auto', at='enum', en='Angle', keyable=True )
        cmds.setAttr( '%s.auto' % haindLegControllerName, lock=True )
        cmds.addAttr( haindLegControllerName, longName='front', at='double', keyable=True, attributeType='float', min=0, max=1, dv=0.5 )

        cmds.addAttr( haindLegControllerName, longName='subController', at='enum', en='Visibility', keyable=True )
        cmds.setAttr( '%s.subController' % haindLegControllerName, lock=True )
        cmds.addAttr( haindLegControllerName, longName='vis', at='bool', keyable=True )

        cmds.setKeyframe( '%s.rz' % hipRotZNul )
        cmds.disconnectAttr( 'pairBlend1_inRotateZ1.output', 'pairBlend1.inRotateZ1' )
        cmds.delete( 'pairBlend1_inRotateZ1' )
        cmds.rename( 'pairBlend1', hipRotZNul.replace( 'NUL', 'PBD' ) )
        cmds.connectAttr ( '%s.front' % haindLegControllerName, '%s.blendAim1' % hipRotZNul )

        # create foot controller
        ankleRollCONT = controllerShape( self.anklePivotName.replace( 'PIVOT', 'CON' ), 'cube', 'yellow' )
        cvNum = cmds.getAttr( '%s.spans' % ankleRollCONT ) + cmds.getAttr( '%s.degree' % ankleRollCONT )
        cmds.select( '%s.cv[0:%s]' % ( ankleRollCONT, cvNum-1 ) )
        cmds.scale( 0.5, 0.5, 0.5 )
        cmds.select( cl=True )
        cmds.parent( '%sShape' % ankleRollCONT, self.anklePivotName, r=True, s=True )
        cmds.delete( ankleRollCONT )
        ankleRollCON = cmds.rename( self.anklePivotName, self.anklePivotName.replace( 'PIVOT', 'CON' ) )

        for x in range( len( self.pivotList ) ):
            CONT = controllerShape( self.pivotList[x].replace( 'PIVOT', 'CON' ), 'cube', 'yellow' )
            cvNum = cmds.getAttr( '%s.spans' % CONT ) + cmds.getAttr( '%s.degree' % CONT )
            cmds.select( '%s.cv[0:%s]' % ( CONT, cvNum-1 ) )
            cmds.scale( 0.5, 0.5, 0.5 )
            cmds.select( cl=True )
            cmds.parent( '%sShape' % CONT, self.pivotList[x], r=True, s=True )
            cmds.delete( CONT )
            ankleRollCON = cmds.rename( self.pivotList[x], self.pivotList[x].replace( 'PIVOT', 'CON' ) )

        cmds.connectAttr( '%s.vis' % haindLegControllerName, '%s.visibility' % self.pivotNulList[0] )