Пример #1
0
    def eyeCtlSet(self):
        self.eyeLCtl = rigbase.Controler(n='EyeAim_L_CTL')
        self.eyeRCtl = rigbase.Controler(n='EyeAim_R_CTL')
        self.eyeCtl = rigbase.Controler(n='Eye_CTL')
        self.eyeLCtl.setShape(normal=[0, 0, 1], radius=.2)
        self.eyeRCtl.setShape(normal=[0, 0, 1], radius=.2)
        self.eyeCtl.setShape(normal=[0, 0, 1], radius=1)

        self.eyeLCtl.setParent(self.eyeCtl)
        self.eyeRCtl.setParent(self.eyeCtl)
        self.eyeCtl.setParent(self.headCtl)

        self.eyeLCtl.setColor(13)
        self.eyeRCtl.setColor(6)
        self.eyeCtl.setColor(23)

        attrEdit = rigbase.AttrEdit(self.eyeLCtl.name, self.eyeRCtl.name)
        attrEdit.lockAndHideAttrs('rx', 'ry', 'rz', 'sx', 'sy', 'sz', 'v')

        attrEdit = rigbase.AttrEdit(self.eyeCtl.name)
        attrEdit.lockAndHideAttrs('sx', 'sy', 'sz', 'v')
        rigbase.addHelpTx(self.eyeCtl.name, 'Follow')
        attrEdit.addAttr(ln='chestFollow', min=0, max=10, k=1)
        attrEdit.addAttr(ln='rootFollow', min=0, max=10, k=1)
        attrEdit.addAttr(ln='flyFollow', min=0, max=10, k=1)
        attrEdit.addAttr(ln='moveFollow', min=0, max=10)
Пример #2
0
 def controlSet(self):
     self.rootCtl, self.rootCtlGrp = rigbase.putControler( self.rootInit, n= self.rootInit.replace( 'Init', 'CTL' ), typ='box', size=[2.5,.1,2.2] )
     self.flyCtl, self.flyCtlGrp = rigbase.putControler( self.rootCtl, n=self.rootCtl.replace( 'Root', 'Fly' ), typ='fly', size=[1.2,1,1.8], orient=[90,0,0], offset=[0,0.2,-2.6] )
     self.hipCtl , self.hipCtlGrp = rigbase.putControler( self.rootCtl,  n= self.rootCtl.replace( 'Root', 'Hip' ), typ='quadrangle', size=[1.5,1.5,1.5], orient=[0,45,0] )
     self.torsoCtl , self.torsoCtlGrp = rigbase.putControler( self.rootCtl,  n= self.rootCtl.replace( 'Root', 'TorsoRotate' ), typ='bar', size=[1.5,.7,.7], orient=[90,0,0] )
     self.waistCtl, self.waistCtlGrp = rigbase.putControler( self.waistInit, n= self.waistInit.replace( 'Init', 'CTL' ), normal=[0,1,0], r=1.5 )
     self.chestCtl, self.chestCtlGrp = rigbase.putControler( self.chestInit, n= self.chestInit.replace( 'Init', 'CTL' ), typ='box', size=[1.5,.3,1.5] )
     self.chestMoveCtl, self.chestMoveCtlGrp = rigbase.putControler( self.chestInit, n= self.chestCtl.replace( 'Chest_CTL', 'ChestMove_CTL' ), normal=[0,0,1], center=[0,0,2.5], r=.5 )
     self.collarLCtl, self.collarLCtlGrp = rigbase.putControler( self.collarLInit, n=self.collarLInit.replace( 'Init', 'CTL' ), normal=[1,0,0], r=1 )
     self.collarRCtl, self.collarRCtlGrp = rigbase.putControler( self.collarRInit, n=self.collarRInit.replace( 'Init', 'CTL' ), normal=[1,0,0], r=1 )
     self.shoulderLCtl, self.shoulderLCtlGrp = rigbase.putControler( self.shoulderLInit, n=self.shoulderLInit.replace( 'Init', 'CTL' ), typ='pin', orient=[0,0,-30], size=[.6,.6,.6] )
     self.shoulderRCtl, self.shoulderRCtlGrp = rigbase.putControler( self.shoulderRInit, n=self.shoulderRInit.replace( 'Init', 'CTL' ), typ='pin', orient=[0,0,-30], size=[-.6,-.6,-.6] )
     
     self.rootGrp = cmds.createNode( 'transform', n='Root_GRP' )
     rigbase.constraint( self.rootCtl, self.rootGrp, s=1, sh=1 )
     torsoGrp = cmds.createNode( 'transform', n= 'torso_GRP' )
     #waistCtlPointObj = cmds.createNode( 'transform', n=self.waistInit.replace( 'Init', 'CtlPoint' ) )
     
     rigbase.AttrEdit( torsoGrp, self.torsoCtl ).lockAndHideAttrs( 'tx', 'ty','tz', 'sx', 'sy','sz', 'v' )
     rigbase.AttrEdit( self.flyCtl, self.rootCtl, self.hipCtl, self.waistCtl, self.chestCtl, self.chestMoveCtl, self.collarLCtl, self.collarRCtl ).lockAndHideAttrs( 'sx', 'sy','sz','v' )
     rigbase.AttrEdit( self.shoulderLCtl, self.shoulderRCtl ).lockAndHideAttrs( 'rx', 'ry', 'rz', 'sx', 'sy', 'sz', 'v' )
     
     cmds.parent( self.shoulderLCtlGrp, self.collarLCtl )
     cmds.parent( self.shoulderRCtlGrp, self.collarRCtl )
     cmds.parent( self.collarLCtlGrp , self.collarRCtlGrp, self.chestMoveCtl )
     cmds.parent( self.chestMoveCtlGrp, self.chestCtl )
     cmds.parent( self.chestCtlGrp, self.torsoCtl )
     cmds.parent(  self.waistCtlGrp, torsoGrp )
     cmds.parent( torsoGrp, self.torsoCtlGrp, self.hipCtlGrp, self.rootGrp )
     
     cmds.setAttr( self.shoulderLCtlGrp+'.r', 0,0,0 )
     cmds.setAttr( self.shoulderRCtlGrp+'.r', 0,0,0 )
     
     rigbase.connectSameAttr( self.rootInit, self.flyCtlGrp ).doIt( 't', 'r' )
     rigbase.connectSameAttr( self.torsoCtl, torsoGrp ).doIt( 'r' )
     #rigbase.connectSameAttr( self.waistInit, waistCtlPointObj ).doIt( 't' )
     #rigbase.connectSameAttr( self.waistInit, self.waistCtlGrp ).doIt( 't', 'r' )
     #rigbase.connectSameAttr( self.chestInit, self.chestCtlGrp ).doIt( 't', 'r' )
     rigbase.connectSameAttr( self.collarLInit, self.collarLCtlGrp ).doIt( 't', 'r' )
     rigbase.connectSameAttr( self.collarRInit, self.collarRCtlGrp ).doIt( 't', 'r' )
     rigbase.connectSameAttr( self.shoulderLInit, self.shoulderLCtlGrp ).doIt( 't' )
     rigbase.connectSameAttr( self.shoulderRInit, self.shoulderRCtlGrp ).doIt( 't' )
     
     #rigbase.constraint( self.waistCtl, waistCtlPointObj, t=0 )
     
     rigbase.followAdd( self.flyCtl, self.rootCtlGrp )
     
     cmds.parent( self.rootCtlGrp, self.flyCtlGrp, self.rigInstance.moveCtl )
     cmds.parent( self.rootGrp, self.rigInstance.worldCtl )
     
     self.rigInstance.collarLCtl = self.collarLCtl
     self.rigInstance.collarRCtl = self.collarRCtl
     self.rigInstance.chestCtl   = self.chestCtl
     self.rigInstance.chestMoveCtl   = self.chestMoveCtl
     self.rigInstance.waistCtl   = self.waistCtl
     self.rigInstance.torsoCtl    = self.torsoCtl
     self.rigInstance.hipCtl     = self.hipCtl
     self.rigInstance.flyCtl     = self.flyCtl
     self.rigInstance.rootCtl    = self.rootCtl
     self.rigInstance.rootGrp    = self.rootGrp
Пример #3
0
    def doIt(self):
        self.torsoPart = TorsoInitCtlRig(initCtlNameList)
        self.headPart = HeadInitCtlRig(initCtlNameList)
        self.armPart = ArmInitCtlRig(initCtlNameList)
        self.legPart = LegInitCtlRig(initCtlNameList)
        self.fingerPart = FingerInitCtlRig(initCtlNameList)

        self.torsoPart.rigAll()
        self.headPart.rigAll()
        self.armPart.rigAll()
        self.legPart.rigAll()
        self.fingerPart.rigAll()

        self.initAllCtl = cmds.circle(normal=[0, 1, 0],
                                      radius=7,
                                      n='All_InitCTL')[0]
        cmds.setAttr(self.initAllCtl + '.dh', 1)
        rigbase.addParent(self.initAllCtl)
        rigbase.connectSameAttr(self.initAllCtl,
                                self.initJntsGrp).doIt('t', 'r')

        for initCtlName in initCtlNameList:
            if not cmds.listRelatives(initCtlName, p=1):
                cmds.parent(initCtlName, self.initAllCtl)

        self.initJointSet()
        cmds.parent(self.torsoInitJnts[0], self.initJntsGrp)
        rigbase.transformSetColor(self.torsoInitJnts[0], 22)

        cmds.select(self.torsoInitJnts[0], hi=1)
        for sel in cmds.ls(sl=1):
            cmds.setAttr(sel + '.radius', 0)

        cmds.select(self.initAllCtl)

        INIT = cmds.group(em=1, n='INIT')
        cmds.parent('All_InitJnt', 'All_InitCTL_GRP', INIT)

        self.rObj = cmds.createNode('multDoubleLinear',
                                    n='RightClickObj_Inits')
        attrEdit = rigbase.AttrEdit(self.rObj)
        attrEdit.addAttr(ln='originalName', dt='string')
        cmds.setAttr(self.rObj + '.originalName', self.rObj, type='string')

        for initCtl in cmds.ls('*_InitCTL'):
            attrEdit.addAttr(ln=initCtl, at='message')
            cmds.connectAttr(initCtl + '.message', self.rObj + '.' + initCtl)

        rigbase.AttrEdit('All_InitCTL').addAttr(ln=self.rObj, at='message')
        cmds.connectAttr(self.rObj + '.message', 'All_InitCTL.' + self.rObj)
Пример #4
0
 def connect( self, sels, *args ):
     worldCtl = None
     bjtWorld = None
     for sel in sels:
         if sel.find( 'BJT_World' ) != -1:
             bjtWorld = sel
         elif sel.find( 'World_CTL' ) != -1:
             worldCtl = sel
             
     if not bjtWorld or not worldCtl:
         return None
         
     bjtWorldGrp, bjtWorld, rootBjtGrp = self.getInputsGrp( bjtWorld )
     worldCtlGrp, worldCtl, rootGrp = self.getOutputsGrp( worldCtl )
     
     bjtNamespace = self.getNamespace( bjtWorld )
     rjtNamespace = self.getNamespace( worldCtl )
     
     rigbase.connectSameAttr( worldCtlGrp, bjtWorldGrp ).doIt( 't', 'r','s' )
     rigbase.connectSameAttr( worldCtl, bjtWorld  ).doIt( 't', 'r','s' )
     #cmds.connectAttr( worldCtl+'.message', bjtWorld+'.World_CTL' )
     rigbase.connectSameAttr( rootGrp, rootBjtGrp ).doIt( 't', 'r' )
     
     bjts = self.getBjts( bjtWorld )
     
     
     try:
         attrEdit = rigbase.AttrEdit( worldCtl )
         attrEdit.addAttr( ln=bjtNamespace.replace( ':', '' ), at='long', cb=1, min=0, max=1 )
     except: pass
     try:
         bjtWorldShape = cmds.listRelatives( bjtWorld, s=1 )[0]
         cmds.connectAttr( worldCtl+'.'+bjtNamespace.replace( ':', '' ), bjtWorldShape+'.v' )
     except: pass
     
     for bjt in bjts:
         rjt = bjt.replace( '_BJT', '_RJT' )
         if not bjtNamespace:
             rjt = rjtNamespace + rjt
         else:
             rjt = rjt.replace( bjtNamespace, rjtNamespace )
         
         if not cmds.objExists( rjt ):continue
         
         cmds.connectAttr( rjt+'.t', bjt+'.t' )
         cmds.connectAttr( rjt+'.r', bjt+'.r' )
         cmds.connectAttr( rjt+'.s', bjt+'.s' )
         if rjt.find( 'Leg_L_Lower4' ) != -1 or rjt.find( 'Leg_R_Lower4' ) != -1:
             cmds.connectAttr( rjt+'.sh', bjt+'.sh' )
             
         try:
             cmds.connectAttr( rjt+'.jo', bjt+'.jo' )
         except: pass
         
         try:
             cmds.setAttr( bjt+'.jo', 0,0,0 )
         except: pass
         
         if cmds.attributeQuery( 'parameter', node=bjt, ex=1 ):
             cmds.connectAttr( bjt+'.parameter', rjt+'.parameter', f=1 )
Пример #5
0
    def connectCurve(self, crvShape):
        if cmds.nodeType(crvShape) == 'transform':
            crvShape = cmds.listRelatives(crvShape, s=1)[0]
        crv = cmds.listRelatives(crvShape, p=1)[0]

        spci = cmds.createNode('splineCurveInfo', n='Neck_Spline_Crv_Spci')
        cmds.connectAttr(crvShape + '.local', spci + '.inputCurve')
        cmds.setAttr(spci + '.sua', 2)
        cmds.setAttr(spci + '.eua', 2)
        cmds.setAttr(spci + '.taa', 1)
        cmds.setAttr(spci + '.tua', 2)

        for rjt in self.rjts[0:-1]:
            i = self.rjts.index(rjt)
            paramValue = (i + .0001) / (len(self.rjts) - 1)
            rigbase.AttrEdit(rjt).addAttr(ln='parameter',
                                          min=0,
                                          max=1,
                                          k=1,
                                          dv=paramValue)
            cmds.connectAttr(rjt + '.parameter', spci + '.parameter[%d]' % i)
            point = cmds.createNode('transform', n='NeckSpline_point%d' % i)
            cmds.parent(point, crv)
            cmds.connectAttr(spci + '.output[%d].position' % i, point + '.t')
            cmds.connectAttr(spci + '.output[%d].rotate' % i, point + '.r')
            rigbase.constraint(point, rjt)

        self.spci = spci
Пример #6
0
    def neckMiddleCtlSet(self):
        self.neckMiddleCtl = rigbase.Controler(n='NeckMiddle_CTL')
        self.neckMiddleCtl.setShape(normal=[0, 1, 0], radius=.5)
        self.neckMiddleCtl.setColor(29)

        self.middlePoint1 = rigbase.Transform(n='NeckMiddle_spline_Point1')
        self.middlePoint2 = rigbase.Transform(n='NeckMiddle_spline_Point2')

        self.middlePoint1.setParent(self.neckMiddleCtl)
        self.middlePoint2.setParent(self.neckMiddleCtl)
        rigbase.transformDefault(self.middlePoint1, self.middlePoint2)

        midPnt1Dist = cmds.createNode('distanceBetween',
                                      n='NeckMiddle_spPnt1_dist')
        midPnt2Dist = cmds.createNode('distanceBetween',
                                      n='NeckMiddle_spPnt2_dist')
        midMult1Dist = cmds.createNode('multDoubleLinear', n='NeckMiddle_md1')
        midMult2Dist = cmds.createNode('multDoubleLinear', n='NeckMiddle_md2')

        cmds.setAttr(midMult1Dist + '.input2', -.4)
        cmds.setAttr(midMult2Dist + '.input2', .4)

        cmds.connectAttr(self.neckMiddleInit + '.m',
                         midPnt1Dist + '.inMatrix1')
        cmds.connectAttr(self.headInit + '.m', midPnt2Dist + '.inMatrix2')
        cmds.connectAttr(midPnt1Dist + '.distance', midMult1Dist + '.input1')
        cmds.connectAttr(midPnt2Dist + '.distance', midMult2Dist + '.input1')
        cmds.connectAttr(midMult1Dist + '.output', self.middlePoint1 + '.ty')
        cmds.connectAttr(midMult2Dist + '.output', self.middlePoint2 + '.ty')

        attrEdit = rigbase.AttrEdit(self.neckMiddleCtl.name)
        attrEdit.lockAndHideAttrs('sx', 'sy', 'sz', 'v')

        self.rigInstance.neckMiddleCtl = self.neckMiddleCtl.name
Пример #7
0
    def rigAll(self):
        neck, neckMiddle, head, eyeL, eyeR, eyeAimPiv = self.HeadInitCtlData.getSortList(
        )

        aimObject = rigbase.makeAimObject(head,
                                          neck,
                                          axis=1,
                                          replaceTarget='InitCTL',
                                          replace='InitCtl')[0]
        aimObject = cmds.rename(aimObject,
                                aimObject.replace('AimObj', 'AimGrp'))

        rigbase.betweenRigInAimObject(neckMiddle,
                                      aimObject,
                                      replaceTarget='InitCTL',
                                      replace='InitCtl')
        rigbase.AttrEdit(neckMiddle).lockAttrs('tx')

        aimObjectNeck = rigbase.makeAimObject(neckMiddle,
                                              neck,
                                              axis=1,
                                              replaceTarget='InitCTL',
                                              replace='InitCtl')[0]
        aimObjectNeckMiddle = rigbase.makeAimObject(head,
                                                    neckMiddle,
                                                    axis=1,
                                                    replaceTarget='InitCTL',
                                                    replace='InitCtl')[0]

        cmds.parent(eyeL, eyeR, eyeAimPiv, head)

        self.outputTransform = [neck, neckMiddle, head, eyeL, eyeR, eyeAimPiv]
Пример #8
0
 def _splineJointUpObjectSet(self):
     self.startUp = cmds.createNode( 'transform', n='Torso_Spline_startUp' )
     self.endUp   = cmds.createNode( 'transform', n='Torso_Spline_endUp' )
     rigbase.AttrEdit( self.startUp, self.endUp ).lockAndHideAttrs( 'tx', 'ty','tz', 'sx', 'sy','sz', 'v' )
     cmds.parent( self.endUp,  self.chestMoveCtl )
     cmds.parent( self.startUp,  self.hipCtl )
     
     chestDcmp = rigbase.getChildMtxDcmp( self.waistCtl, self.chestMoveCtl )
     hipDcmp   = rigbase.getChildMtxDcmp( self.waistCtl, self.hipCtl   )
     ffmChest  = cmds.createNode( 'fourByFourMatrix', n= self.chestMoveCtl+'_childPosFFM' )
     ffmHip    = cmds.createNode( 'fourByFourMatrix', n= self.hipCtl  +'_childPosFFM' )
     smorChest = cmds.createNode( 'smartOrient', n=self.chestMoveCtl +'_childPosSmtOri' )
     smorHip   = cmds.createNode( 'smartOrient', n=self.hipCtl   +'_childPosSmtOri' )
     
     cmds.setAttr( chestDcmp +'.invt', 1 )
     cmds.setAttr( smorChest+'.aimAxis', 1 )
     cmds.setAttr( smorHip  +'.aimAxis', 1 )
     
     cmds.connectAttr( chestDcmp+'.otx', ffmChest+'.i10' )
     cmds.connectAttr( chestDcmp+'.oty', ffmChest+'.i11' )
     cmds.connectAttr( chestDcmp+'.otz', ffmChest+'.i12' )
     cmds.connectAttr( hipDcmp+  '.otx', ffmHip+  '.i10' )
     cmds.connectAttr( hipDcmp+  '.oty', ffmHip+  '.i11' )
     cmds.connectAttr( hipDcmp+  '.otz', ffmHip+  '.i12' )
     cmds.connectAttr( ffmChest+'.output', smorChest+'.inputMatrix' )
     cmds.connectAttr( ffmHip  +'.output', smorHip  +'.inputMatrix' )
     cmds.connectAttr( smorChest+'.oa', self.endUp    +'.r' )
     cmds.connectAttr( smorHip  +'.oa', self.startUp  +'.r' )
Пример #9
0
 def twistAttrSet(self, side ):
     if side == 'L':
         targetCtl = self.shoulderLCtl
     elif side == 'R':
         targetCtl = self.shoulderRCtl
     
     rigbase.addHelpTx( targetCtl, 'Twist' )
     attrEdit = rigbase.AttrEdit( targetCtl )
     attrEdit.addAttr( ln='twistCollar', k=1 )
     attrEdit.addAttr( ln='twistShoulder', k=1 )
Пример #10
0
 def create(self, inits, grp, colorIndex):
     parentTarget = grp
     self.ctls = []
     for init in inits:
         ctl = rigbase.Controler(n=init.replace('Init', 'CTL'))
         rigbase.AttrEdit(ctl).lockAndHideAttrs('sx', 'sy', 'sz', 'v')
         rigbase.connectSameAttr(init, ctl.transformGrp).doIt('t', 'r')
         ctl.setShape(typ='box', size=[.1, .1, .1])
         ctl.setColor(colorIndex)
         ctl.setParent(parentTarget)
         parentTarget = ctl
         self.ctls.append(ctl)
Пример #11
0
def markingMenuSet(rigInstance):
    ctls = cmds.ls('*_CTL')

    rObj = cmds.createNode('multDoubleLinear', n='RightClickObj_Rigs')
    attrEdit = rigbase.AttrEdit(rObj)
    attrEdit.addAttr(ln='originalName', dt='string')
    cmds.setAttr(rObj + '.originalName', rObj, type='string')

    attrEdit = rigbase.AttrEdit(rObj)

    for ctl in ctls:
        attrEdit.addAttr(ln=ctl, at='message')
        cmds.connectAttr(ctl + '.message', rObj + '.' + ctl)
    rigbase.AttrEdit('World_CTL').addAttr(ln=rObj, at='message')
    cmds.connectAttr(rObj + '.message', 'World_CTL.' + rObj)

    bjts = cmds.ls('*_BJT')
    bjts.append('BJT_World')

    rObj = cmds.createNode('multDoubleLinear', n='RightClickObj_Bjts')
    attrEdit = rigbase.AttrEdit(rObj)
    attrEdit.addAttr(ln='originalName', dt='string')
    cmds.setAttr(rObj + '.originalName', rObj, type='string')

    attrEdit = rigbase.AttrEdit(rObj)

    for bjt in bjts:
        attrEdit.addAttr(ln=bjt, at='message')
        cmds.connectAttr(bjt + '.message', rObj + '.' + bjt)
    rigbase.AttrEdit('BJT_World').addAttr(ln=rObj, at='message')
    cmds.connectAttr(rObj + '.message', 'BJT_World.' + rObj)
Пример #12
0
    def headCtlSet(self):
        self.headCtl = rigbase.Controler(n='Head_CTL')
        self.headCtl.setShape(normal=[0, 0, 1], radius=1.2, center=[0, .8, 0])
        self.headCtl.setColor(30)

        attrEdit = rigbase.AttrEdit(self.headCtl.name)
        rigbase.addHelpTx(self.headCtl.name, 'Follow')
        attrEdit.lockAndHideAttrs('sx', 'sy', 'sz', 'v')
        attrEdit.addAttr(ln='neckFollow', min=0, max=10, k=1)
        attrEdit.addAttr(ln='chestFollow', min=0, max=10, k=1)
        attrEdit.addAttr(ln='rootFollow', min=0, max=10)
        attrEdit.addAttr(ln='flyFollow', min=0, max=10, k=1)
        attrEdit.addAttr(ln='moveFollow', min=0, max=10)
        rigbase.addHelpTx(self.headCtl.name, 'MiddleNeckVis')
        attrEdit.addAttr(ln='middleNeckVis', min=0, max=1, at='long', cb=1)
Пример #13
0
    def rigSelf(self):
        root, waist, chest = self.torsoInitCtlData.getSortList()[:3]
        aimObject = rigbase.makeAimObject(chest,
                                          root,
                                          axis=1,
                                          replaceTarget='InitCTL',
                                          replace='InitCtl')[0]

        rigbase.betweenRigInAimObject(waist,
                                      aimObject,
                                      replaceTarget='InitCTL',
                                      replace='InitCtl')

        rigbase.AttrEdit(root, waist, chest).lockAttrs('r', 's', 'tx')

        self.outputTransform = [root, waist, chest]
Пример #14
0
    def rigOther(self):
        collar_L, collar_R = self.torsoInitCtlData.getSortList()[-2:]
        shoulder_L = self.armInitCtlData.getSortList('_L_')[0]
        shoulder_R = self.armInitCtlData.getSortList('_R_')[0]

        aimObjectL = rigbase.makeAimObject(shoulder_L,
                                           collar_L,
                                           replaceTarget='InitCTL',
                                           replace='InitCtl')[0]
        aimObjectR = rigbase.makeAimObject(shoulder_R,
                                           collar_R,
                                           replaceTarget='InitCTL',
                                           replace='InitCtl',
                                           inverseAim=1)[0]

        rigbase.AttrEdit(aimObjectL, aimObjectR).lockAttrs('s')

        self.outputTransform += [aimObjectL, aimObjectR]
Пример #15
0
    def rigFootPart(self, side):
        ankle = self.legInitCtlData.getSortList(side)[2]
        footInitCtls = self.legInitCtlData.getSortList(side)[4:]
        ball, toe, heel, ballPiv, bankIn, bankOut, toePiv = footInitCtls
        rigbase.parentOrder(toePiv, bankOut, bankIn, ballPiv, heel)
        rigbase.parentOrder(toe, ball)
        cmds.parent(ball, heel, ankle)

        for footInitCtl in footInitCtls:
            rigbase.AttrEdit(footInitCtl).lockAttrs('r', 's', 'v')

        if side.find('L') != -1:
            self.outputTransformL += [
                ball, toe, heel, ballPiv, bankIn, bankOut, toePiv
            ]
        else:
            self.outputTransformR += [
                ball, toe, heel, ballPiv, bankIn, bankOut, toePiv
            ]
Пример #16
0
 def splineSquashSet(self):
     crvInfo = cmds.createNode( 'curveInfo', n=self.epBindNode_after+'_info' )
     initCrvInfo = cmds.createNode( 'curveInfo', n=self.epBindNode_before+'_info' )
     
     cmds.connectAttr( self.epBindNode_after+'.outputCurve', crvInfo+'.inputCurve' )
     cmds.connectAttr( self.epBindNode_before+'.outputCurve', initCrvInfo+'.inputCurve' )
     
     squashNode = cmds.createNode( 'squash', n='Torso_squash' )
     cmds.connectAttr( initCrvInfo+'.arcLength', squashNode+'.lengthOriginal' )
     cmds.connectAttr( crvInfo+'.arcLength', squashNode+'.lengthModify' )
     
     rigbase.addHelpTx( self.chestCtl, 'Squash' )
     attrEdit = rigbase.AttrEdit( self.chestCtl )
     attrEdit.addAttr( ln='squash', min=-1, max=1, k=1 )
     attrEdit.addAttr( ln='forceScale', k=1 )
     
     cmds.connectAttr( self.chestCtl+'.squash', squashNode+'.squashRate' )
     cmds.connectAttr( self.chestCtl+'.forceScale', squashNode+'.forceValue' )
     
     for splineJnt in self.splineJnts[1:-1]:
         cmds.connectAttr( squashNode+'.output', splineJnt+'.sx' )
         cmds.connectAttr( squashNode+'.output', splineJnt+'.sy' )
         cmds.connectAttr( squashNode+'.output', splineJnt+'.sz' )
Пример #17
0
    def rigEachPart(self, index, side):
        outputTransform = []

        inverseAim = False
        globalMult = 1
        if side.find('R') != -1:
            inverseAim = True
            globalMult = -1

        aimObjectOptions = {
            'axis': 0,
            'inverseAim': inverseAim,
            'replaceTarget': 'InitCTL',
            'replace': 'InitCtl'
        }

        fingerInitCtlNameList = self.fingerInitCtlData.getEachFingerList(
            index, side)

        firstFingerInitCtl = fingerInitCtlNameList[0]
        secondFingerInitCtl = fingerInitCtlNameList[1]
        betweenFingerInitCtls = fingerInitCtlNameList[2:-1]
        endFingerInitCtl = fingerInitCtlNameList[-1]

        aimObject0 = rigbase.makeAimObject(secondFingerInitCtl,
                                           firstFingerInitCtl,
                                           **aimObjectOptions)[0]
        outputTransform.append(aimObject0)
        aimObject1 = rigbase.makeAimObject(endFingerInitCtl,
                                           secondFingerInitCtl,
                                           **aimObjectOptions)[0]
        aimObject1 = cmds.rename(aimObject1,
                                 aimObject1.replace('AimObj', 'AimGrp'))

        rigbase.betweenRigInAimObject(betweenFingerInitCtls,
                                      aimObject1,
                                      replaceTarget='InitCTL',
                                      replace='InitCtl',
                                      globalMult=globalMult)

        for fingerInitCtl in betweenFingerInitCtls:
            rigbase.AttrEdit(fingerInitCtl).lockAttrs('tz')
            if side.find('L') != -1:
                cmds.transformLimits(fingerInitCtl,
                                     ty=[0.01, 1],
                                     ety=[True, False])
            else:
                cmds.transformLimits(fingerInitCtl,
                                     ty=[-1, 0.01],
                                     ety=[False, True])
        betweenFingerInitCtls.append(endFingerInitCtl)

        aimObjectParent = secondFingerInitCtl
        for fingerInitCtl in betweenFingerInitCtls:
            aimObject = rigbase.makeAimObject(fingerInitCtl, aimObjectParent,
                                              **aimObjectOptions)[0]
            aimObjectParent = fingerInitCtl
            outputTransform.append(aimObject)

        outputTransform.append(endFingerInitCtl)
        return outputTransform
Пример #18
0
 def moveCtlSet(self):
     self.moveCtl, self.moveCtlGrp = rigbase.putControler( self.worldCtl, n='Move_CTL', typ='move', size= [2,2,2] )
     cmds.parent( self.moveCtlGrp, self.worldCtl )
     self.rigInstance.moveCtl = self.moveCtl
     rigbase.controlerSetColor( self.moveCtl , 20 )
     rigbase.AttrEdit( self.moveCtl ).lockAndHideAttrs( 'sx', 'sy', 'sz', 'v' )
Пример #19
0
 def collarConstSet(self, side ):
     si = 0
     if side == 'R':
         si = 1
     
     shoulderInitList = [self.shoulderLInit, self.shoulderRInit ]
     shoulderCtlList = [self.shoulderLCtl,self.shoulderRCtl]
     collarCtlList = [self.collarLCtl, self.collarRCtl]
     
     const    = cmds.createNode( 'transform', n='Shoulder_%s_Const'          % side )
     inCollar = cmds.createNode( 'transform', n='Shoulder_%s_Const_inCollar' % side )
     inChest  = cmds.createNode( 'transform', n='Shoulder_%s_Const_inChest'  % side )
     inRoot   = cmds.createNode( 'transform', n='Shoulder_%s_Const_inRoot'   % side )
     inFly    = cmds.createNode( 'transform', n='Shoulder_%s_Const_inFly'    % side )
     inMove    = cmds.createNode( 'transform', n='Shoulder_%s_Const_inMove'   % side )
     
     cmds.parent( const   , shoulderCtlList[si] )
     cmds.parent( inCollar, collarCtlList[si]   )
     cmds.parent( inChest , self.chestCtl.replace( 'Chest', 'ChestMove' ) )
     cmds.parent( inRoot  , self.rootGrp  )
     cmds.parent( inFly   , self.rootCtlGrp )
     cmds.parent( inMove  , self.rigInstance.moveCtl )
     
     rigbase.transformDefault( const )#; cmds.setAttr( const+'.dla', 1 )
     rigbase.connectSameAttr( shoulderInitList[si], inCollar ).doIt( 't', 'r' )
     chestDcmp = rigbase.getChildMtxDcmp( shoulderInitList[si], self.chestInit )
     cmds.connectAttr( chestDcmp+'.ot', inChest+'.t' )
     cmds.connectAttr( chestDcmp+'.or', inChest+'.r' )
     rootDcmp = rigbase.getChildMtxDcmp( shoulderInitList[si], self.rootInit )
     cmds.connectAttr( rootDcmp+'.ot', inRoot+'.t' )
     cmds.connectAttr( rootDcmp+'.or', inRoot+'.r' )
     cmds.connectAttr( rootDcmp+'.ot', inFly+'.t' )
     cmds.connectAttr( rootDcmp+'.or', inFly+'.r' )
     cmds.connectAttr( rootDcmp+'.ot', inMove+'.t' )
     cmds.connectAttr( rootDcmp+'.or', inMove+'.r' )
     
     followMtx = cmds.createNode( 'followMatrix', n='Shoulder_%s_ConstFollow' % side )
     mtxDcmp   = cmds.createNode( 'multMatrixDecompose', n='Shoulder_%s_ConstMtxDcmp' % side )
     
     cmds.connectAttr( inCollar+'.wm', followMtx+'.originalMatrix' )
     cmds.connectAttr( inChest +'.wm', followMtx+'.inputMatrix[0]' )
     cmds.connectAttr( inRoot  +'.wm', followMtx+'.inputMatrix[1]' )
     cmds.connectAttr( inFly   +'.wm', followMtx+'.inputMatrix[2]' )
     cmds.connectAttr( inMove  +'.wm', followMtx+'.inputMatrix[3]' )
     
     cmds.connectAttr( followMtx+'.outputMatrix', mtxDcmp+'.i[0]' )
     cmds.connectAttr( const +'.pim', mtxDcmp+'.i[1]' )
     cmds.connectAttr( mtxDcmp+'.or', const+'.r' )
     
     rigbase.addHelpTx( collarCtlList[si], 'Follow' )
     attrEdit = rigbase.AttrEdit( collarCtlList[si] )
     attrEdit.addAttr( ln='chestFollow', min=0, max=10 )
     attrEdit.addAttr( ln='rootFollow' , min=0, max=10 )
     attrEdit.addAttr( ln='flyFollow'  , min=0, max=10, k=1 )
     attrEdit.addAttr( ln='moveFollow'  , min=0, max=10 )
     
     cmds.connectAttr( collarCtlList[si]+'.chestFollow', followMtx+'.inputWeight[0]' )
     cmds.connectAttr( collarCtlList[si]+'.rootFollow' , followMtx+'.inputWeight[1]' )
     cmds.connectAttr( collarCtlList[si]+'.flyFollow'  , followMtx+'.inputWeight[2]' )
     cmds.connectAttr( collarCtlList[si]+'.moveFollow' , followMtx+'.inputWeight[3]' )
     
     if side == 'L':
         self.shoulderLConst = const
         self.rigInstance.ikGroupLConst = inChest
     else:
         self.shoulderRConst = const
         self.rigInstance.ikGroupRConst = inChest
Пример #20
0
 def hipConstSet(self):
     hipLConst_inFly = cmds.createNode( 'transform', n='Hip_L_Const_inFly' )
     hipRConst_inFly = cmds.createNode( 'transform', n='Hip_R_Const_inFly' )
     hipLConst_inRoot = cmds.createNode( 'transform', n='Hip_L_Const_inRoot' )
     hipRConst_inRoot = cmds.createNode( 'transform', n='Hip_R_Const_inRoot' )
     hipLConst_inHip = cmds.createNode( 'transform', n='Hip_L_Const_inHip' )
     hipRConst_inHip = cmds.createNode( 'transform', n='Hip_R_Const_inHip' )
     hipLConst = cmds.createNode( 'transform', n='Hip_L_Const' )
     hipRConst = cmds.createNode( 'transform', n='Hip_R_Const' )
     
     cmds.parent( hipLConst_inFly, hipRConst_inFly, self.rootCtlGrp )
     cmds.parent( hipLConst_inRoot, hipRConst_inRoot, self.rootGrp )
     cmds.parent( hipLConst, hipRConst, hipLConst_inHip, hipRConst_inHip, self.hipCtl )
     
     rigbase.connectSameAttr( self.hipLInit, hipLConst_inFly ).doIt( 't','r' )
     rigbase.connectSameAttr( self.hipRInit, hipRConst_inFly ).doIt( 't','r' )
     
     rigbase.connectSameAttr( self.hipLInit, hipLConst_inRoot ).doIt( 't' )
     rigbase.connectSameAttr( self.hipRInit, hipRConst_inRoot ).doIt( 't' )
     
     rigbase.constraint( hipLConst_inFly, hipLConst_inRoot, t=0 )
     rigbase.constraint( hipRConst_inFly, hipRConst_inRoot, t=0 )
     
     rigbase.connectSameAttr( self.hipLInit, hipLConst_inHip ).doIt( 't','r' )
     rigbase.connectSameAttr( self.hipRInit, hipRConst_inHip ).doIt( 't','r' )
     
     #cmds.setAttr( hipLConst_inHip+'.rz', -90 )
     #cmds.setAttr( hipLConst_inRoot+'.rz', -90 )
     
     #cmds.setAttr( hipRConst_inHip+'.rx', 180 )
     #cmds.setAttr( hipRConst_inHip+'.rz', 90 )
     #cmds.setAttr( hipRConst_inRoot+'.rx', 180 )
     #cmds.setAttr( hipRConst_inRoot+'.rz', 90 )
     
     blendMtxL = cmds.createNode( 'blendTwoMatrix', n='Hip_L_Const_blendMtx' )
     blendMtxR = cmds.createNode( 'blendTwoMatrix', n='Hip_R_Const_blendMtx' )
     
     multMtxDcmpL = cmds.createNode( 'multMatrixDecompose', n='Hip_L_Const_MtxDcmp' )
     multMtxDcmpR = cmds.createNode( 'multMatrixDecompose', n='Hip_R_Const_MtxDcmp' )
     
     cmds.connectAttr( hipLConst_inRoot+'.wm', blendMtxL+'.inMatrix1' )
     cmds.connectAttr( hipRConst_inRoot+'.wm', blendMtxR+'.inMatrix1' )
     cmds.connectAttr( hipLConst_inHip+'.wm', blendMtxL+'.inMatrix2' )
     cmds.connectAttr( hipRConst_inHip+'.wm', blendMtxR+'.inMatrix2' )
     
     cmds.connectAttr( blendMtxL+'.outMatrix', multMtxDcmpL+'.i[0]' )
     cmds.connectAttr( blendMtxR+'.outMatrix', multMtxDcmpR+'.i[0]' )
     
     cmds.connectAttr( hipLConst+'.pim', multMtxDcmpL+'.i[1]' )
     cmds.connectAttr( hipRConst+'.pim', multMtxDcmpR+'.i[1]' )
     
     cmds.connectAttr( hipLConst_inHip+'.t', hipLConst+'.t' )
     cmds.connectAttr( hipRConst_inHip+'.t', hipRConst+'.t' )
     cmds.connectAttr( multMtxDcmpL+'.or', hipLConst+'.r' )
     cmds.connectAttr( multMtxDcmpR+'.or', hipRConst+'.r' )
     
     rigbase.addHelpTx( self.hipCtl, 'Options' )
     attrEdit = rigbase.AttrEdit( self.hipCtl )
     attrEdit.addAttr( ln='legFollowL', min=0, max=1, k=1 )
     attrEdit.addAttr( ln='legFollowR', min=0, max=1, k=1 )
     
     cmds.connectAttr( self.hipCtl+'.legFollowL', blendMtxL+'.attributeBlender' )
     cmds.connectAttr( self.hipCtl+'.legFollowR', blendMtxR+'.attributeBlender' )
     
     self.rigInstance.hipLConst_inRoot = hipLConst_inRoot
     self.rigInstance.hipRConst_inRoot = hipRConst_inRoot
     self.rigInstance.hipLConst_inHip = hipLConst_inHip
     self.rigInstance.hipRConst_inHip = hipRConst_inHip
     self.rigInstance.hipLConstInFly = hipLConst_inFly
     self.rigInstance.hipRConstInFly = hipRConst_inFly
     self.hipLConst = hipLConst
     self.hipRConst = hipRConst
Пример #21
0
 def neckCtlSet(self):
     self.neckCtl = rigbase.Controler(n='Neck_CTL')
     self.neckCtl.setShape(normal=[0, 1, 0], radius=.6)
     self.neckCtl.setColor(29)
     attrEdit = rigbase.AttrEdit(self.neckCtl)
     attrEdit.lockAndHideAttrs('sx', 'sy', 'sz', 'v')
Пример #22
0
 def curveSet(self):
     #self.crv = cmds.curve( n='Torso_Spline_CRV', d=3, p=[[0,0,0],[0,0,0],[0,0,0],[0,0,0]] )
     self.initCrv = cmds.curve( n='Torso_SplineInit_CRV', d=3, p=[[0,0,0],[0,0,0],[0,0,0],[0,0,0]] )
     
     #cmds.setAttr( self.crv+'.v', 0 )
     cmds.setAttr( self.initCrv+'.v', 0 )
     
     #self.crvShape = cmds.listRelatives( self.crv, s=1 )[0]
     self.initCrvShape = cmds.listRelatives( self.initCrv, s=1 )[0]
     
     self.crvPoint0Obj = self.hipCtl
     self.crvPoint1Obj = cmds.createNode( 'transform', n= 'Torso_Spline_point1' )
     self.crvPoint2Obj = cmds.createNode( 'transform', n= 'Torso_Spline_point2' )
     self.crvPoint3Obj = self.chestCtl
     
     self.crvOrigPoint0Obj = self.torsoCtl
     self.crvOrigWaistObj = cmds.createNode( 'transform', n= 'Waist_CTL_SqPos' )
     self.crvOrigPoint1Obj = cmds.createNode( 'transform', n= 'Torso_Spline_SquPoint1' )
     self.crvOrigPoint2Obj = cmds.createNode( 'transform', n= 'Torso_Spline_SquPoint2' )
     self.crvOrigPoint3Obj = cmds.createNode( 'transform', n= 'Chest_CTL_SquPos' )
     
     rigbase.AttrEdit( self.crvPoint1Obj, self.crvPoint2Obj ).lockAndHideAttrs( 'tx', 'tz', 'rx', 'ry','rz', 'sx', 'sy','sz', 'v' )
     cmds.parent( self.crvPoint1Obj, self.crvPoint2Obj, self.waistCtl )
     
     cmds.parent( self.crvOrigWaistObj, self.crvOrigPoint3Obj, self.rootGrp )
     cmds.parent( self.crvOrigPoint1Obj, self.crvOrigPoint2Obj, self.crvOrigWaistObj )
     self.crvOrigSqPointGrp = cmds.group( self.crvOrigPoint1Obj, self.crvOrigPoint2Obj, n='Waist_CTL_SqSqPointGrp' )
     cmds.xform( self.crvOrigSqPointGrp, piv=[0,0,0], os=1 )
     
     rigbase.pInvRotConst( self.crvOrigSqPointGrp )
     
     rigbase.connectSameAttr( self.waistInit, self.crvOrigWaistObj ).doIt( 't','r' )
     chMtxDcmp = rigbase.getChildMtxDcmp( self.chestInit, self.rootInit )
     cmds.connectAttr( chMtxDcmp+'.ot', self.crvOrigPoint3Obj+'.t' )
     cmds.connectAttr( chMtxDcmp+'.or', self.crvOrigPoint3Obj+'.r' )
     #rigbase.connectSameAttr( self.chestCtlGrp, self.crvOrigPoint3Obj ).doIt( 't', 'r' )
     #rigbase.connectSameAttr( self.crvPoint1Obj, self.crvOrigPoint1Obj ).doIt( 't','r' )
     #rigbase.connectSameAttr( self.crvPoint2Obj, self.crvOrigPoint2Obj ).doIt( 't','r' )
     
     multPoint1Node = cmds.createNode( 'multDoubleLinear', n='Torso_Spline_point1_mult' )
     multPoint2Node = cmds.createNode( 'multDoubleLinear', n='Torso_Spline_point2_mult' )
     distPoint1Node = cmds.createNode( 'distanceBetween', n='Torso_spline_point1_dist' )
     distPoint2Node = cmds.createNode( 'distanceBetween', n='Torso_spline_point2_dist' )
     
     cmds.connectAttr( self.waistInit+'.t', distPoint1Node+'.point1' )
     cmds.connectAttr( self.chestInit+'.t', distPoint2Node+'.point2' )
     cmds.connectAttr( distPoint1Node+'.distance', multPoint1Node+'.input1' )
     cmds.connectAttr( distPoint2Node+'.distance', multPoint2Node+'.input1' )
     #cmds.connectAttr( multPoint1Node+'.output', self.crvPoint1Obj+'.ty' )
     #cmds.connectAttr( multPoint2Node+'.output', self.crvPoint2Obj+'.ty' )
     cmds.connectAttr( multPoint1Node+'.output', self.crvOrigPoint1Obj+'.ty' )
     cmds.connectAttr( multPoint2Node+'.output', self.crvOrigPoint2Obj+'.ty' )
     
     cmds.setAttr( multPoint1Node+'.input2', -.4 )
     cmds.setAttr( multPoint2Node+'.input2', .4 )
     
     '''
     for i in range( 4 ):
         dcmp = cmds.createNode( 'decomposeMatrix', n= self.crv+'_point%d_dcmp' % i )
         exec( 'cmds.connectAttr( self.crvPoint%dObj+".wm", dcmp+".imat" )' % i )
         cmds.connectAttr( dcmp+".ot", self.crvShape+'.controlPoints[%d]' %i )'''
         
     for i in range( 4 ):
         dcmp = cmds.createNode( 'multMatrixDecompose', n= self.initCrv+'_origPoint%d_dcmp' % i )
         exec( 'cmds.connectAttr( self.crvOrigPoint%dObj+".wm", dcmp+".i[0]" )' % i )
         cmds.connectAttr( self.initCrv+".wim", dcmp+".i[1]" )
         cmds.connectAttr( dcmp+".ot", self.initCrvShape+'.controlPoints[%d]' %i )
     
     rigbase.transformDefault( self.initCrv )
     
     #rigbase.connectSameAttr( self.crv, self.initCrv ).doIt( 't', 'r', 's', 'sh' )
     
     cmds.parent( self.initCrv, self.rootGrp )
Пример #23
0
 def splineJointSet( self, splineNumber ):
     self.splineJnts = []
     cmds.select( d=1 )
     
     self._splineJointUpObjectSet()
                                     
     spci = cmds.createNode( 'splineCurveInfo', n= self.initCrv+'_Spci'  )
     cmds.connectAttr( self.initCrvShape+'.local', spci+'.inputCurve' )
     #cmds.connectAttr( self.startUp+'.wm', spci+'.startTransform' )
     #cmds.connectAttr( self.endUp  +'.wm', spci+'.endTransform'   )
     
     cmds.setAttr( spci+'.startUpAxis', 2 )
     cmds.setAttr( spci+'.endUpAxis', 2 )
     cmds.setAttr( spci+'.targetAimAxis', 1 )
     cmds.setAttr( spci+'.targetUpAxis', 2 )
     
     for i in range( splineNumber ):
         self.splineJnts.append( cmds.joint( n='Spline%d_RJT' % i, radius=1.5 ) )
     
     pointObjs = []
     for i in range( 0, splineNumber ):
         pr = float(i)/(splineNumber-1)
         
         pointObj = cmds.createNode( 'transform', n='Spline%d_SplinePoint' % i )
         pointObjs.append( pointObj )
         
         cmds.addAttr( self.splineJnts[i], ln='parameter', min=0, max=1, dv=pr )
         cmds.setAttr( self.splineJnts[i]+'.parameter', e=1, k=1 )
         
         cmds.connectAttr( self.splineJnts[i]+'.parameter', spci+'.pr[%d]' % i )
         cmds.connectAttr( spci+'.o[%d].p' % i, pointObj+'.t' )
         cmds.connectAttr( spci+'.o[%d].r' % i, pointObj+'.r' )
         cmds.parent( pointObj, self.initCrv )
         
         rigbase.constraint( pointObj, self.splineJnts[i] )
         
     pointHObjs = []
     cmds.select( self.torsoCtl )
     for i in range( 0, splineNumber ):
         pointHObjs.append( cmds.joint( n=pointObjs[i].replace( 'SplinePoint', 'SplineHJnt' ) ) )
         mtxDcmp = rigbase.constraint( pointObjs[i], pointHObjs[i], r=0 )
         cmds.connectAttr( mtxDcmp+'.or', pointHObjs[i]+'.jo' )
         if i == 0:
             cmds.connectAttr( self.rootGrp+'.wim', mtxDcmp+'.i[1]', f=1 )
         else:
             cmds.connectAttr( pointObjs[i-1]+'.wim', mtxDcmp+'.i[1]', f=1 )
         cmds.select( pointHObjs[i] )
     cmds.setAttr( pointHObjs[0]+'.v', 0 )
     rigbase.constraint( pointHObjs[-1], self.chestCtlGrp, r=0 )
         
     epBindNode = cmds.createNode( 'epBindNode', n='Torso_epBindNode' )
     initEpBindNode = cmds.createNode( 'epBindNode', n='TorsoInit_epBindNode' )
     chestOrPointer = cmds.createNode( 'transform', n='Chest_OrPointer' )
     hipCuPointer = cmds.createNode( 'transform', n='Hip_CuPointer' )
     
     cmds.parent( chestOrPointer, self.chestCtlGrp )
     cmds.parent( hipCuPointer, self.hipCtlGrp )
     
     rigbase.transformDefault( chestOrPointer )
     
     cmds.connectAttr( self.chestCtl+'.r', chestOrPointer+'.r' )
     cmds.connectAttr( self.hipCtl+'.t', hipCuPointer+'.t' )
     
     cmds.connectAttr( self.hipCtlGrp+'.wm', epBindNode+'.om[0]' )
     cmds.connectAttr( chestOrPointer+'.wm', epBindNode+'.om[1]')
     cmds.connectAttr( hipCuPointer+'.wm', epBindNode+'.m[0]' )
     cmds.connectAttr( self.chestCtl+'.wm', epBindNode+'.m[1]' )
     
     for i in range( splineNumber ):
         dcmp = cmds.createNode( 'decomposeMatrix' , n=pointHObjs[i]+'_dcmp' )
         cmds.connectAttr( pointHObjs[i]+'.wm', dcmp+'.imat' )
         cmds.connectAttr( dcmp+'.ot', epBindNode+'.ip[%d]' % i )
         cmds.connectAttr( dcmp+'.ot', initEpBindNode+'.ip[%d]' % i )
     
     smOri = cmds.createNode( 'smartOrient', n='Torso_Spline_SmOri' )
     cmds.connectAttr( self.chestCtl+'.m', smOri+'.inputMatrix' )
     cmds.setAttr( smOri+'.aimAxis', 1 )
     for i in range( 1, splineNumber-1 ):
         cmds.addAttr( self.chestCtl, ln='rotRate%d' % i, min=0, max=1, dv=.333 )
         splineOrientMult = cmds.createNode( 'multiplyDivide', n='Torso_Spline_OrientMult%d' % i )
         cmds.connectAttr( smOri+'.outAngle', splineOrientMult+'.input1' )
         cmds.connectAttr( self.chestCtl+'.rotRate%d' % i, splineOrientMult+'.input2X' )
         cmds.connectAttr( self.chestCtl+'.rotRate%d' % i, splineOrientMult+'.input2Y' )
         cmds.connectAttr( self.chestCtl+'.rotRate%d' % i, splineOrientMult+'.input2Z' ) 
         cmds.connectAttr( splineOrientMult+'.output',  pointHObjs[i]+'.r' )
     
     '''
     firstCrv = cmds.circle( ch=0, n='Torso_FristCrv' )[0]
     firstCrvShape = cmds.listRelatives( firstCrv, s=1 )[0]
     cmds.connectAttr( epBindNode+'.outputCurve', firstCrvShape+'.create' )
     cmds.parent( firstCrv, self.rootGrp )
     firstCrv_dcmp = cmds.createNode( 'decomposeMatrix', n='Torso_firstCrv_invDcmp' )
     cmds.connectAttr( firstCrv+'.pim', firstCrv_dcmp+'.imat' )
     cmds.connectAttr( firstCrv_dcmp+'.ot', firstCrv+'.t' )
     cmds.connectAttr( firstCrv_dcmp+'.or', firstCrv+'.r' )
     cmds.connectAttr( firstCrv_dcmp+'.os', firstCrv+'.s' )
     cmds.connectAttr( firstCrv_dcmp+'.osh', firstCrv+'.sh' )'''
     
     def curveBasedCtlGrp( outputCurveAttr, ctlGrp, prRate=0.5 ):
         posInfo = cmds.createNode( 'pointOnCurveInfo', n='Waist_Ct;PoseInfo' )
         fbf = cmds.createNode( 'fourByFourMatrix', n='Waist_CtlFBF' )
         smOri = cmds.createNode( 'smartOrient', n='Waist_CtlSmOri' )
         compose = cmds.createNode( 'composeMatrix', n='Waist_CtlComp' )
         mtxDcmp = cmds.createNode( 'multMatrixDecompose', n='Waist_CtlMtxDcmp' )
         
         cmds.setAttr( posInfo+'.top', 1 )
         cmds.setAttr( posInfo+'.parameter', prRate )
         cmds.setAttr( smOri+'.aimAxis', 1 )
         
         cmds.connectAttr( outputCurveAttr, posInfo+'.inputCurve' )
         cmds.connectAttr( posInfo+'.tangentX', fbf+'.in10' )
         cmds.connectAttr( posInfo+'.tangentY', fbf+'.in11' )
         cmds.connectAttr( posInfo+'.tangentZ', fbf+'.in12' )
         cmds.connectAttr( fbf+'.output', smOri+'.inputMatrix' )
         cmds.connectAttr( posInfo+'.position', compose+'.it' )
         cmds.connectAttr( smOri+'.outAngle', compose+'.ir')
         cmds.connectAttr( compose+'.outputMatrix', mtxDcmp+'.i[0]' )
         cmds.connectAttr( ctlGrp+'.pim', mtxDcmp+'.i[1]' )
         cmds.connectAttr( mtxDcmp+'.ot', ctlGrp+'.t' )
         cmds.connectAttr( mtxDcmp+'.or', ctlGrp+'.r' )
     
     curveBasedCtlGrp( epBindNode+'.outputCurve', self.waistCtlGrp, prRate=0.5 )
     
     chestCuPointer = cmds.createNode( 'transform', n='ChestCuPointer' )
     cmds.parent( chestCuPointer, self.chestMoveCtlGrp )
     
     cmds.connectAttr( self.chestMoveCtl+'.t', chestCuPointer+'.t' )
     rigbase.transformDefault( chestCuPointer )
     
     epBindNode2 = cmds.createNode( 'epBindNode', n='Torso_epBindNode2' )
     
     for i in range( splineNumber ):
         cmds.connectAttr( epBindNode+'.op[%d]' % i, epBindNode2+'.ip[%d]' % i )
         
     waistOrientObj = cmds.createNode( 'transform', n='WaistOrient_OBJ' )
     cmds.parent( waistOrientObj, self.waistCtlGrp )
     rigbase.transformDefault( waistOrientObj )
     waistSmOrient = cmds.createNode( 'smartOrient', n='WaistOrient_ObjSmOrient' )
     cmds.connectAttr( self.waistCtl+'.m', waistSmOrient+'.inputMatrix' )
     cmds.setAttr( waistSmOrient+'.aimAxis', 1 )
     cmds.connectAttr( waistSmOrient+'.outAngle', waistOrientObj+'.r' )
     cmds.connectAttr( self.waistCtl+'.t', waistOrientObj+'.t' )
     
     cmds.connectAttr( hipCuPointer+'.wm', epBindNode2+'.m[0]' )
     cmds.connectAttr( hipCuPointer+'.wm', epBindNode2+'.om[0]' )
     cmds.connectAttr( waistOrientObj+'.wm', epBindNode2+'.m[1]' )
     cmds.connectAttr( self.waistCtlGrp+'.wm', epBindNode2+'.om[1]' )
     cmds.connectAttr( chestCuPointer+'.wm', epBindNode2+'.m[2]' )
     cmds.connectAttr( self.chestMoveCtlGrp+'.wm', epBindNode2+'.om[2]' )
     
     cuSpInfo = cmds.createNode( 'splineCurveInfo' , n='Torso_CurrentSplineInfo' )
     
     cmds.setAttr( cuSpInfo+'.paramFromLength', 0 )
     cmds.setAttr( cuSpInfo+'.startUpAxis', 2 )
     cmds.setAttr( cuSpInfo+'.endUpAxis', 2 )
     cmds.setAttr( cuSpInfo+'.targetAimAxis', 1 )
     cmds.setAttr( cuSpInfo+'.targetUpAxis', 2 )
     
     putCtls = []
     
     rigbase.addHelpTx( self.waistCtl, 'Itp CTL Vis' )
     rigbase.AttrEdit( self.waistCtl ).addAttr( ln='show', cb=1, min=0, max=1, at='long' )
     
     for i in range( 1, splineNumber-1 ):
         putCtl, putCtlGrp = rigbase.putControler( self.waistCtl, n='WaistItp%d_CTL' % i, normal=[0,1,0] )
         rigbase.AttrEdit( putCtl ).lockAndHideAttrs( 'sx', 'sy', 'sz' ,'v' )
         curveBasedCtlGrp( epBindNode2+'.outputCurve', putCtlGrp, i/( splineNumber-1.0 ) )
         cmds.connectAttr( self.waistCtl+'.show', putCtlGrp+'.v' )
         putCtls.append( [putCtl, putCtlGrp] )
         cmds.parent( putCtlGrp, self.rootGrp )
         
     epBindNode3 = cmds.createNode( 'epBindNode', n='Torso_epBindNode3' )
     
     for i in range( splineNumber ):
         cmds.connectAttr( epBindNode2+'.op[%d]' % i, epBindNode3+'.ip[%d]' % i )
         
     cmds.connectAttr( hipCuPointer+'.wm', epBindNode3+'.m[0]' )
     cmds.connectAttr( hipCuPointer+'.wm', epBindNode3+'.om[0]' )
     for i in range( 1, splineNumber-1 ):
         cmds.connectAttr( putCtls[i-1][0]+'.wm', epBindNode3+'.m[%d]' % i )
         cmds.connectAttr( putCtls[i-1][1]+'.wm', epBindNode3+'.om[%d]' % i )
     cmds.connectAttr( chestCuPointer+'.wm', epBindNode3+'.m[%d]' % (splineNumber-1) )
     cmds.connectAttr( self.chestMoveCtlGrp+'.wm', epBindNode3+'.om[%d]' % (splineNumber-1) )
     
     cuSpInfo = cmds.createNode( 'splineCurveInfo' , n='Torso_CurrentSplineInfo' )
     
     cmds.setAttr( cuSpInfo+'.paramFromLength', 0 )
     cmds.setAttr( cuSpInfo+'.startUpAxis', 2 )
     cmds.setAttr( cuSpInfo+'.endUpAxis', 2 )
     cmds.setAttr( cuSpInfo+'.targetAimAxis', 1 )
     cmds.setAttr( cuSpInfo+'.targetUpAxis', 2 )
     
     cmds.connectAttr( epBindNode3+'.outputCurve', cuSpInfo+'.inputCurve' )
     cmds.connectAttr( self.startUp+'.wm', cuSpInfo+'.startTransform' )
     cmds.connectAttr( self.endUp+'.wm', cuSpInfo+'.endTransform' )
     
     cuSpGrp = cmds.createNode( 'transform', n='Torso_Spline_GRP' )
     splinePtrs = []
     for i in range( splineNumber ):
         splineInfoPtr = cmds.createNode( 'transform', n='Torso%d_SplinePoint' % i )
         splinePtrs.append( splineInfoPtr )
         cmds.setAttr( cuSpInfo+'.parameter[%d]' % i, i/( splineNumber-1.0 )+0.001 )
         cmds.connectAttr( cuSpInfo+'.output[%d].position' % i, splineInfoPtr+'.t' )
         cmds.connectAttr( cuSpInfo+'.output[%d].rotate' % i, splineInfoPtr+'.r' )    
     
     cmds.parent( splinePtrs, cuSpGrp )
     
     cmds.parent( cuSpGrp, self.rootCtlGrp )
     splinePtrsInvDcmp = cmds.createNode( 'decomposeMatrix', n='Torso_SplinePtrsInvDcmp' )
     cmds.connectAttr( self.rootCtlGrp+'.wim', splinePtrsInvDcmp+'.imat' )
     cmds.connectAttr( splinePtrsInvDcmp+'.ot', cuSpGrp+'.t' )
     cmds.connectAttr( splinePtrsInvDcmp+'.or', cuSpGrp+'.r' )
     cmds.connectAttr( splinePtrsInvDcmp+'.os', cuSpGrp+'.s' )
     cmds.connectAttr( splinePtrsInvDcmp+'.osh', cuSpGrp+'.sh' )
     
     allWristAngle = cmds.createNode( 'wristAngle', n='Torso_TwistAllAngle' )
     cmds.setAttr( allWristAngle+'.axis', 1 )
     cmds.connectAttr( self.waistCtl+'.wm', allWristAngle+'.inputMatrix' )
     for i in range( 1, splineNumber-1 ):
         
         floatValue = i/(splineNumber-1.0)
         weightValue = 1-math.fabs( 0.5-floatValue )/.5
         
         cmds.addAttr( self.waistCtl, ln='multWeight%d' % i, min=0, max=1, dv=weightValue )
         
         cuSplinePtr = cmds.createNode( 'transform', n='Torso_cuSplinePtr%d' % i )
         cmds.parent( cuSplinePtr, splinePtrs[i] )
         rigbase.transformDefault( cuSplinePtr )
         rigbase.constraint( cuSplinePtr, self.splineJnts[i] )
         
         twistMultNode = cmds.createNode( 'multDoubleLinear', n='Torso_TwistMult%d' % i )
         addTwist = cmds.createNode( 'addDoubleLinear', n='Torso_TwistAdd%d' % i )
         wristAngle = cmds.createNode( 'wristAngle', n='Torso_TwistAngle%d' % i )
         cmds.setAttr( wristAngle+'.axis', 1 )
         
         cmds.connectAttr( putCtls[i-1][0]+'.m', wristAngle+'.inputMatrix' )
         cmds.connectAttr( wristAngle+'.outAngle', addTwist+'.input1' )
         
         cmds.connectAttr( allWristAngle+'.outAngle', twistMultNode+'.input1' )
         cmds.connectAttr( self.waistCtl+'.multWeight%d' % i, twistMultNode+'.input2' )
         
         cmds.connectAttr( twistMultNode+'.output', addTwist+'.input2' )
         
         cmds.connectAttr( addTwist+'.output', cuSplinePtr+'.ry' )
         
     rigbase.constraint( self.hipCtl, self.splineJnts[0] )
     rigbase.constraint( self.chestMoveCtl, self.splineJnts[-1] )
     
     cmds.parent( self.splineJnts[0], self.rootGrp )
     
     self.epBindNode_before = initEpBindNode
     self.epBindNode_after = epBindNode3
Пример #24
0
    def rigLegPart(self, side):
        inverseAim = False
        inverseUp = True
        globalMult = 1
        if side.find('R') != -1:
            inverseAim = True
            inverseUp = False
            globalMult = -1

        hip, knee, ankle, poleV = self.legInitCtlData.getSortList(side)[:4]
        upperLeg, lowerLeg = self.legInitCtlAdd.getSortList(side)

        aimObjectOptions = {
            'axis': 0,
            'upAxis': 2,
            'inverseAim': inverseAim,
            'inverseUp': inverseUp,
            'upType': 'object',
            'upObject': poleV,
            'replaceTarget': 'InitCTL',
            'replace': 'InitCtl'
        }

        aimObject, anklePoseMltDcmp = rigbase.makeAimObject(
            ankle, hip, **aimObjectOptions)
        aimObject = cmds.rename(aimObject,
                                aimObject.replace('AimObj', 'AimGrp'))

        rigbase.betweenRigInAimObject(knee,
                                      aimObject,
                                      dcmp=anklePoseMltDcmp,
                                      replaceTarget='InitCTL',
                                      replace='InitCtl',
                                      globalMult=globalMult)
        rigbase.AttrEdit(knee).lockAttrs('ty')

        aimObjectKnee = rigbase.makeAimObject(ankle, knee,
                                              **aimObjectOptions)[0]
        aimObjectHip = rigbase.makeAimObject(knee, hip, **aimObjectOptions)[0]

        cmds.parent(upperLeg, aimObjectHip)
        cmds.parent(lowerLeg, aimObjectKnee)

        upperLegGrp = rigbase.addParent(upperLeg)
        lowerLegGrp = rigbase.addParent(lowerLeg)

        upperMtxDcmp = rigbase.getChildMtxDcmp(knee, aimObjectHip)
        lowerMtxDcmp = rigbase.getChildMtxDcmp(ankle, aimObjectKnee)
        upperMultMiddle = cmds.createNode('multiplyDivide',
                                          n=upperLeg.replace(
                                              'InitCTL', 'InitCtlMiddleMult'))
        lowerMultMiddle = cmds.createNode('multiplyDivide',
                                          n=lowerLeg.replace(
                                              'InitCTL', 'InitCtlMiddleMult'))

        cmds.connectAttr(upperMtxDcmp + '.ot', upperMultMiddle + '.input1')
        cmds.connectAttr(lowerMtxDcmp + '.ot', lowerMultMiddle + '.input1')

        cmds.setAttr(upperMultMiddle + '.input2', .5, .5, .5)
        cmds.setAttr(lowerMultMiddle + '.input2', .5, .5, .5)

        cmds.connectAttr(upperMultMiddle + '.output', upperLegGrp + '.t')
        cmds.connectAttr(lowerMultMiddle + '.output', lowerLegGrp + '.t')

        cmds.setAttr(upperLegGrp + '.r', 0, 0, 0)
        cmds.setAttr(lowerLegGrp + '.r', 0, 0, 0)

        if side.find('L') != -1:
            self.outputTransformL = [aimObjectHip, aimObjectKnee, ankle, poleV]
            self.outputAddTrL = [upperLeg, lowerLeg]
            cmds.transformLimits(knee, tz=[0.01, 1], etz=[True, False])
        else:
            self.outputTransformR = [aimObjectHip, aimObjectKnee, ankle, poleV]
            self.outputAddTrR = [upperLeg, lowerLeg]
            cmds.transformLimits(knee, tz=[-1, 0.01], etz=[False, True])
Пример #25
0
    def rigSide(self, side):
        inverseAim = False
        inverseUp = False
        globalMult = 1
        if side.find('R') != -1:
            inverseAim = True
            inverseUp = True
            globalMult = -1

        shoulder, elbow, wrist, poleV = self.armInitCtlData.getSortList(side)
        upperArm, lowerArm = self.armInitCtlAdd.getSortList(side)

        aimObjectOptions = {
            'axis': 0,
            'upAxis': 2,
            'inverseAim': inverseAim,
            'inverseUp': inverseUp,
            'upType': 'object',
            'upObject': poleV,
            'replaceTarget': 'InitCTL',
            'replace': 'InitCtl'
        }

        aimObject, wristPoseMltDcmp = rigbase.makeAimObject(
            wrist, shoulder, **aimObjectOptions)
        aimObject = cmds.rename(aimObject,
                                aimObject.replace('AimObj', 'AimGrp'))

        rigbase.betweenRigInAimObject(elbow,
                                      aimObject,
                                      dcmp=wristPoseMltDcmp,
                                      replaceTarget='InitCTL',
                                      replace='InitCtl',
                                      globalMult=globalMult)
        rigbase.AttrEdit(elbow).lockAttrs('ty')

        aimObjectElbow = rigbase.makeAimObject(wrist, elbow,
                                               **aimObjectOptions)[0]
        aimObjectShoulder = rigbase.makeAimObject(elbow, shoulder,
                                                  **aimObjectOptions)[0]

        cmds.parent(upperArm, aimObjectShoulder)
        cmds.parent(lowerArm, aimObjectElbow)

        upperArmGrp = rigbase.addParent(upperArm)
        lowerArmGrp = rigbase.addParent(lowerArm)

        upperMtxDcmp = rigbase.getChildMtxDcmp(elbow, aimObjectShoulder)
        lowerMtxDcmp = rigbase.getChildMtxDcmp(wrist, aimObjectElbow)
        upperMultMiddle = cmds.createNode('multiplyDivide',
                                          n=upperArm.replace(
                                              'InitCTL', 'InitCtlMiddleMult'))
        lowerMultMiddle = cmds.createNode('multiplyDivide',
                                          n=lowerArm.replace(
                                              'InitCTL', 'InitCtlMiddleMult'))

        cmds.connectAttr(upperMtxDcmp + '.ot', upperMultMiddle + '.input1')
        cmds.connectAttr(lowerMtxDcmp + '.ot', lowerMultMiddle + '.input1')

        cmds.setAttr(upperMultMiddle + '.input2', .5, .5, .5)
        cmds.setAttr(lowerMultMiddle + '.input2', .5, .5, .5)

        cmds.connectAttr(upperMultMiddle + '.output', upperArmGrp + '.t')
        cmds.connectAttr(lowerMultMiddle + '.output', lowerArmGrp + '.t')

        cmds.setAttr(upperArmGrp + '.r', 0, 0, 0)
        cmds.setAttr(lowerArmGrp + '.r', 0, 0, 0)

        if side.find('L') != -1:
            self.outputTransformL = [
                aimObjectShoulder, aimObjectElbow, wrist, poleV
            ]
            self.outputAddTrL = [upperArm, lowerArm]
            cmds.transformLimits(elbow, tz=[-1, 0.01], etz=[False, True])
        else:
            self.outputTransformR = [
                aimObjectShoulder, aimObjectElbow, wrist, poleV
            ]
            self.outputAddTrR = [upperArm, lowerArm]
            cmds.transformLimits(elbow, tz=[0.01, 1], etz=[True, False])
Пример #26
0
def createBjt(topRjt):
    topBjt = rigbase.hierarchyCopyConnections(topRjt,
                                              typ='joint',
                                              replaceTarget='_RJT',
                                              replace='_BJT',
                                              t=0,
                                              r=0)

    bjts = cmds.listRelatives(topBjt, c=1, ad=1)
    bjts.append(topBjt)

    for bjt in bjts:
        rjt = bjt.replace('_BJT', '_RJT')
        #cmds.setAttr( bjt+'.r', 0,0,0 )
        #cmds.setAttr( bjt+'.jox', e=1, k=1 )
        #cmds.setAttr( bjt+'.joy', e=1, k=1 )
        #cmds.setAttr( bjt+'.joz', e=1, k=1 )
        #cmds.connectAttr( rjt+'.rx', bjt+'.rx' )
        #cmds.connectAttr( rjt+'.ry', bjt+'.ry' )
        #cmds.connectAttr( rjt+'.rz', bjt+'.rz' )

        conSameAttr = rigbase.connectSameAttr(rjt, bjt)
        conSameAttr.doIt('t', 'r', 's')

        if rjt.find('Leg_L_Lower4') != -1 or rjt.find('Leg_R_Lower4') != -1:
            conSameAttr.doIt('sh')

        cmds.setAttr(bjt + '.ssc', cmds.getAttr(rjt + '.ssc'))

        if cmds.attributeQuery('parameter', node=rjt, ex=1):
            rigbase.AttrEdit(bjt).addAttr(ln='parameter',
                                          min=-.001,
                                          max=1.001,
                                          dv=cmds.getAttr(rjt + '.parameter'),
                                          cb=1)
            cmds.connectAttr(bjt + '.parameter', rjt + '.parameter')

        bjtP = cmds.listRelatives(bjt, p=1)

        if not bjtP: continue

        try:
            cmds.connectAttr(bjtP[0] + '.scale', bjt + '.inverseScale')
        except:
            pass

    topRjtGrp = cmds.listRelatives(topRjt, p=1)[0]
    topBjtGrp = cmds.group(em=1, n='Root_BJT_GRP')

    rigbase.transformSetColor(topRjtGrp, 11)
    rigbase.transformSetColor(topBjtGrp, 29)

    bjtWorld = cmds.group(n='BJT_World')
    rigbase.addControlerShape(bjtWorld,
                              typ='circle',
                              normal=[0, 1, 0],
                              radius=5.5)
    rigbase.controlerSetColor(bjtWorld, 29)
    bjtWorldGrp = cmds.group(bjtWorld, n='BJT_World_GRP')
    cmds.connectAttr(topRjtGrp + '.t', topBjtGrp + '.t')
    cmds.connectAttr(topRjtGrp + '.r', topBjtGrp + '.r')
    cmds.parent(topBjt, topBjtGrp)

    rigbase.connectSameAttr('World_CTL_GRP',
                            'BJT_World_GRP').doIt('t', 'r', 's')
    rigbase.connectSameAttr('World_CTL', 'BJT_World').doIt('t', 'r', 's')
    #rigbase.AttrEdit( 'BJT_World' ).addAttr( ln='World_CTL', at='message' )
    #cmds.connectAttr( 'World_CTL.message', 'BJT_World.World_CTL' )

    RIG = cmds.group(em=1, n='RIG')
    cmds.parent('World_CTL_GRP', 'All_Init', RIG)
    SKIN = cmds.group(em=1, n='SKIN')
    cmds.parent('BJT_World_GRP', SKIN)

    cmds.setAttr(topRjt + '.v', 0)