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
def allSet(self): colorLIndexList = [21, 20, 4, 15, 18] colorRIndexList = [21, 20, 4, 15, 18] def createScaleNode(switchCtl): scaleNode = cmds.createNode('multiplyDivide', n=switchCtl + '_handScale') cmds.setAttr(scaleNode + '.op', 3) cmds.connectAttr(switchCtl + '.handScale', scaleNode + '.input2X') cmds.connectAttr(switchCtl + '.handScale', scaleNode + '.input2Y') cmds.connectAttr(switchCtl + '.handScale', scaleNode + '.input2Z') cmds.setAttr(scaleNode + '.input1X', 2) cmds.setAttr(scaleNode + '.input1Y', 2) cmds.setAttr(scaleNode + '.input1Z', 2) return scaleNode handLGrp = rigbase.Transform(n='Hand_L_CTL_GRP') rigbase.constraint(self.handLConst, handLGrp) cmds.connectAttr(self.switchLCtl + '.fingerCtl', handLGrp + '.v') handRGrp = rigbase.Transform(n='Hand_R_CTL_GRP') rigbase.constraint(self.handRConst, handRGrp) cmds.connectAttr(self.switchRCtl + '.fingerCtl', handRGrp + '.v') handLGrp.setParent(self.rootGrp) handRGrp.setParent(self.rootGrp) for inits in self.fingerLInits: self.ctlSet.create(inits[:-1], handLGrp, colorLIndexList.pop(0)) self.aimObjSet.create(self.ctlSet.ctls) self.jointSet.create(inits, self.ctlSet.ctls, self.aimObjSet.aimObjs, self.handLRjt) for inits in self.fingerRInits: self.ctlSet.create(inits[:-1], handRGrp, colorRIndexList.pop(0)) self.aimObjSet.create(self.ctlSet.ctls) self.jointSet.create(inits, self.ctlSet.ctls, self.aimObjSet.aimObjs, self.handRRjt) scaleNode = createScaleNode(self.switchLCtl) cmds.connectAttr(scaleNode + '.output', handLGrp + '.s') cmds.connectAttr(scaleNode + '.output', self.handLRjt + '.s', f=1) children = cmds.listRelatives(self.handLRjt, c=1, type='joint') for child in children: cmds.setAttr(child + '.ssc', False) scaleNode = createScaleNode(self.switchRCtl) cmds.connectAttr(scaleNode + '.output', handRGrp + '.s') cmds.connectAttr(scaleNode + '.output', self.handRRjt + '.s', f=1) children = cmds.listRelatives(self.handRRjt, c=1, type='joint') for child in children: cmds.setAttr(child + '.ssc', False)
def connectInit(self, inits): rigbase.connectSameAttr(inits[0], self.neckCtl.transformGrp).doIt('t', 'r') neckMiddleMtxDcmp = self.getMtxDcmpInNeckSet() cmds.connectAttr(neckMiddleMtxDcmp + '.ot', self.neckMiddleCtl.transformGrp + '.t') cmds.connectAttr(neckMiddleMtxDcmp + '.or', self.neckMiddleCtl.transformGrp + '.r') headPosMtxDcmp = rigbase.getChildMtxDcmp(inits[2], inits[0]) cmds.connectAttr(headPosMtxDcmp + '.ot', self.headCtl.transformGrp + '.t') cmds.connectAttr(headPosMtxDcmp + '.or', self.headCtl.transformGrp + '.r') eyeCenterMtx = cmds.createNode('blendTwoMatrixDecompose', n='EyeCenterMtx') eyeLMtxDcmp = cmds.createNode('multMatrixDecompose', n='Eye_L_MtxDcmp') eyeRMtxDcmp = cmds.createNode('multMatrixDecompose', n='Eye_R_MtxDcmp') eyeCenterObj = rigbase.Transform(n='EyeCenterObj') eyeCenterObj.setParent(self.headCtl) eyeLInitTarget = rigbase.Transform(n='Eye_L_InitTarget') eyeRInitTarget = rigbase.Transform(n='Eye_R_InitTarget') eyeLInitTarget.setParent(self.headCtl) eyeRInitTarget.setParent(self.headCtl) rigbase.connectSameAttr(inits[3], eyeLInitTarget.name).doIt('t', 'r') rigbase.connectSameAttr(inits[4], eyeRInitTarget.name).doIt('t', 'r') cmds.connectAttr(eyeLInitTarget + '.m', eyeCenterMtx + '.inMatrix1') cmds.connectAttr(eyeRInitTarget + '.m', eyeCenterMtx + '.inMatrix2') cmds.connectAttr(eyeCenterMtx + '.ot', eyeCenterObj + '.t') cmds.connectAttr(eyeLInitTarget + '.wm', eyeLMtxDcmp + '.i[0]') cmds.connectAttr(eyeRInitTarget + '.wm', eyeRMtxDcmp + '.i[0]') cmds.connectAttr(eyeCenterObj + '.wim', eyeLMtxDcmp + '.i[1]') cmds.connectAttr(eyeCenterObj + '.wim', eyeRMtxDcmp + '.i[1]') cmds.connectAttr(eyeLMtxDcmp + '.ot', self.eyeLCtl.transformGrp + '.t') cmds.connectAttr(eyeRMtxDcmp + '.ot', self.eyeRCtl.transformGrp + '.t') cmds.connectAttr(inits[-1] + '.t', self.eyeCtl.transformGrp + '.t')
def originalOrientSet(self): shoulderLOr = rigbase.Transform( n='Shoulder_L_OriginalOrient' ) shoulderROr = rigbase.Transform( n='Shoulder_R_OriginalOrient' ) shoulderLOr.setParent( self.shoulderLCtl ) shoulderROr.setParent( self.shoulderRCtl ) rigbase.transformDefault( shoulderLOr, shoulderROr ) cmds.setAttr( shoulderLOr+'.t', 0,0,0 ) cmds.setAttr( shoulderLOr+'.r', 0,0,-45 ) cmds.setAttr( shoulderROr+'.t', 0,0,0 ) cmds.setAttr( shoulderROr+'.r', 0,0,-45 ) hipLOr = rigbase.Transform( n='Hip_L_OriginalOrient' ) hipROr = rigbase.Transform( n='Hip_R_OriginalOrient' ) hipLOr.setParent( self.hipCtl ) hipROr.setParent( self.hipCtl ) cmds.connectAttr( self.hipLInit+'.t', hipLOr+'.t' ) cmds.connectAttr( self.hipRInit+'.t', hipROr+'.t' ) cmds.setAttr( hipLOr+'.r', 0,0,-90 ) cmds.setAttr( hipROr+'.r', -180,0, 90 ) self.rigInstance.shoulderLOr = shoulderLOr self.rigInstance.shoulderROr = shoulderROr self.rigInstance.hipLOr = hipLOr self.rigInstance.hipROr = hipROr
def setStartUpObj(self): self.startUpObj = rigbase.Transform(n='Neck_SplineStartUp') self.startUpObj.setParent(self.neckCtl) rigbase.transformDefault(self.startUpObj) mtxDcmp = cmds.createNode('multMatrixDecompose', n='Neck_SplineStartUp_mtxDcmp') ffmMtx = cmds.createNode('fourByFourMatrix', n='Neck_SplineStartUp_ffm') smOri = cmds.createNode('smartOrient', n='Neck_SplineStartUp_SmOri') cmds.setAttr(smOri + '.aimAxis', 1) cmds.connectAttr(self.headCtl + '.wm', mtxDcmp + '.i[0]') cmds.connectAttr(self.neckCtl + '.wim', mtxDcmp + '.i[1]') cmds.connectAttr(mtxDcmp + '.otx', ffmMtx + '.i10') cmds.connectAttr(mtxDcmp + '.oty', ffmMtx + '.i11') cmds.connectAttr(mtxDcmp + '.otz', ffmMtx + '.i12') cmds.connectAttr(ffmMtx + '.output', smOri + '.inputMatrix') cmds.connectAttr(smOri + '.outAngle', self.startUpObj + '.r')
def headConstSet(self): headConst = rigbase.Transform( n='Head_Const' ) headConst.goto( self.headInit ) headConst.setParent( self.chestCtl ) self.rigInstance.headConst = headConst.name