Exemple #1
0
def ik_rp(self, mHandle=None, ml_targets=None):
    _str_func = 'rp'
    #Mid IK...---------------------------------------------------------------------------------
    log.debug("|{0}| >> ...".format(_str_func) + '/' * 30)
    if mHandle == None:
        mHandle = self.mMidFormHandle
    if not ml_targets:
        self.ml_handleTargetsCulled

    size_knee = MATH.average(POS.get_bb_size(mHandle.mNode, True)) * .75
    crv = CURVES.create_fromName(
        'sphere',
        direction='z+',  #_jointOrientation[0]+'+',
        size=size_knee)  #max(size_knee) * 1.25)

    mRP = cgmMeta.validateObjArg(crv, setClass=True)
    mRP.p_position = self.mBlock.atUtils('prerig_get_rpBasePos', ml_targets,
                                         False)
    self.mBlock.asHandleFactory().color(mRP.mNode, controlType='main')

    #mRP.doCopyNameTagsFromObject(ml_fkJoints[1].mNode,ignore=['cgmType','cgmTypeModifier'])
    mRP.doStore('cgmName', self.d_module['partName'])
    mRP.doStore('cgmAlias', 'midIK')
    mRP.doStore('cgmTypeModifier', 'ikPole')

    mRP.doName()

    self.mRigNull.connectChildNode(mRP, 'controlIKMid', 'rigNull')  #Connect
    log.debug(cgmGEN._str_subLine)
    return mRP
Exemple #2
0
def get_axisBox_size(targets=None, maxDistance=10000000, mark=False):
    try:
        _str_func = 'get_axisBox_size'
        log.debug("|{0}| >> ".format(_str_func) + '-' * 80)

        targets = VALID.listArg(targets)
        _targets = VALID.mNodeStringList(targets)

        if not _targets:
            raise ValueError, "Must have targets!"

        d_res = {'x': [], 'y': [], 'z': []}

        for t in _targets:
            log.debug("|{0}| >> On t: {1}".format(_str_func, t))
            _proxy = CORERIG.create_axisProxy(t)
            _startPoint = POS.get(_proxy, 'bb')
            for k in d_res.keys():
                log.debug("|{0}| >> On t: {1} | {2}".format(_str_func, t, k))

                pos_positive = RAYS.get_cast_pos(t,
                                                 k + '+',
                                                 'near',
                                                 _proxy,
                                                 startPoint=_startPoint,
                                                 mark=False,
                                                 maxDistance=maxDistance)
                pos_neg = RAYS.get_cast_pos(t,
                                            k + '-',
                                            'near',
                                            _proxy,
                                            startPoint=_startPoint,
                                            mark=False,
                                            maxDistance=maxDistance)

                if mark:
                    LOCINATOR.LOC.create(position=pos_positive,
                                         name="{0}_{1}Pos_loc".format(t, k))
                    LOCINATOR.LOC.create(position=pos_neg,
                                         name="{0}_{1}Neg_loc".format(t, k))

                dist = DIST.get_distance_between_points(pos_positive, pos_neg)
                d_res[k].append(dist)
            mc.delete(_proxy)

        for k, v in d_res.iteritems():
            d_res[k] = COREMATH.average(v)

        return d_res['x'], d_res['y'], d_res['z']

    except Exception, err:
        cgmGEN.cgmExceptCB(Exception, err)
Exemple #3
0
def limbRoot(self):
    try:
        _str_func = 'limbRoot'
        log_start(_str_func)
        ml_fkJoints = self.ml_fkJoints
        _short_module = self.mModule.mNode
        mHandleFactory = self.mHandleFactory

        #limbRoot ------------------------------------------------------------------------------
        log.debug("|{0}| >> LimbRoot".format(_str_func))
        idx = 0
        #if self.b_lever:
        #    idx = 1

        mLimbRootHandle = self.ml_prerigHandles[idx]
        mLimbRoot = ml_fkJoints[0].rigJoint.doCreateAt()

        _size_root = MATH.average(POS.get_bb_size(self.mRootFormHandle.mNode))

        #MATH.average(POS.get_bb_size(self.mRootFormHandle.mNode))
        mRootCrv = cgmMeta.validateObjArg(CURVES.create_fromName(
            'locatorForm', _size_root),
                                          'cgmObject',
                                          setClass=True)
        mRootCrv.doSnapTo(ml_fkJoints[0])  #mLimbRootHandle

        #SNAP.go(mRootCrv.mNode, ml_joints[0].mNode,position=False)

        CORERIG.shapeParent_in_place(mLimbRoot.mNode, mRootCrv.mNode, False)

        for a in 'cgmName', 'cgmDirection', 'cgmModifier':
            if ATTR.get(_short_module, a):
                ATTR.copy_to(_short_module,
                             a,
                             mLimbRoot.mNode,
                             driven='target')

        mLimbRoot.doStore('cgmTypeModifier', 'limbRoot')
        mLimbRoot.doName()

        mHandleFactory.color(mLimbRoot.mNode, controlType='sub')
        self.mRigNull.connectChildNode(mLimbRoot, 'limbRoot', 'rigNull')

    except Exception, err:
        cgmGEN.cgmExceptCB(Exception, err, localDat=vars())
Exemple #4
0
def prerig(self):
    try:
        #self.atUtils('puppet_verify')
        self.UTILS.puppet_verify(self)
        
        
        #Create preRig Null  ==================================================================================
        mPrerigNull = self.atBlockUtils('prerigNull_verify')
        mHandleFactory = self.asHandleFactory(self.mNode)
        ml_handles = [self.mNode]
        _offset = self.controlOffset 
        
        #Helpers=====================================================================================
        self.msgList_connect('prerigHandles',[self.mNode])
        
        if self.addMotionJoint:
            _baseSize = self.baseSize
            _sizeHandle = (MATH.average(_baseSize[0],_baseSize[1]) * .1) + _offset
            mMotionJoint = BLOCKSHAPES.rootMotionHelper(self,size=_sizeHandle)
            mMotionJoint.p_parent = mPrerigNull
            
    except Exception,err:cgmGEN.cgmExceptCB(Exception,err,localDat=vars())        
Exemple #5
0
def get_shapeOffset(self):
    """
    Get the shape offset value 
    """
    try:
        _str_func = ' get_shapeOffset'.format(self)
        log.debug("|{0}| >> ... [{1}]".format(_str_func, self) + '-' * 80)

        if self.getMessage('rigBlock'):
            mRigBlock = self.rigBlock
            l_attrs = ['controlOffset', 'skinOffset']
            for a in l_attrs:
                if mRigBlock.hasAttr(a):
                    v = mRigBlock.getMayaAttr(a)
                    log.debug(
                        "|{0}| >> {1} attr found on rigBlock: {2}".format(
                            _str_func, a, v))
                    return v

        l_attrs = ['loftOffset', 'skinOffset']
        for a in l_attrs:
            if self.hasAttr(a):
                v = self.getMayaAttr(a)
                log.debug("|{0}| >> {1} attr found: {2}".format(
                    _str_func, a, v))
                return v

        if self.getMessage('masterControl'):
            log.debug("|{0}| >> Master control found...".format(_str_func))
            _bb = DIST.get_bb_size(self.getMessage('masterControl'))
            return MATH.average(_bb[0], _bb[2]) / 50

        log.debug("|{0}| >> default return".format(_str_func))
        return 1

    except Exception, err:
        cgmGEN.cgmExceptCB(Exception, err)
def eyeLook_verify(self):
    _str_func = 'eyeLook_verify'
    try:
        log.debug("|{0}| >>  ".format(_str_func)+ '-'*80)
        log.debug("{0}".format(self))
        mBlock = self.mBlock
        
        mModule = self.mModule
        mRigNull = self.mRigNull
        mPuppet = self.mPuppet
        mHandleFactory = mBlock.asHandleFactory()
        
        _eyeLook = eyeLook_get(self)
        if _eyeLook:
            log.debug("|{0}| >> Found existing eyeLook...".format(_str_func))                      
            return _eyeLook
        
        if mBlock.blockType not in ['eye']:
            raise ValueError,"blocktype must be eye. Found {0} | {1}".format(mBlock.blockType,mBlock)
        
        #Data... -----------------------------------------------------------------------
        log.debug("|{0}| >> Get data...".format(_str_func))
        #_size = mHandleFactory.get_axisBox_size(mBlock.getMessage('bbHelper'))
        
        try:
            _size = self.v_baseSize
            _sizeAvg = self.f_sizeAvg             
        except:
            _size = [mBlock.blockScale * v for v in mBlock.baseSize]
            _sizeAvg = MATH.average(_size)
        
        #Create shape... -----------------------------------------------------------------------        
        log.debug("|{0}| >> Creating shape...".format(_str_func))
        mCrv = cgmMeta.asMeta( CURVES.create_fromName('arrow4Fat',
                                                      direction = 'z+',
                                                      size = _sizeAvg ,
                                                      absoluteSize=False),'cgmObject',setClass=True)
        mCrv.doSnapTo(mBlock.mNode,rotation=False)
        pos = mBlock.getPositionByAxisDistance('z+',
                                               _sizeAvg * 8)
        
        mCrv.p_position = 0,pos[1],pos[2]
        
        
        mBlockParent = mBlock.p_blockParent
        if mBlockParent:
            mCrv.doStore('cgmName',mBlockParent.cgmName + '_eyeLook')
            mBlockParent.asHandleFactory().color(mCrv.mNode)
        else:
            mCrv.doStore('cgmName','eyeLook')
            mHandleFactory.color(mCrv.mNode)
        
        mCrv.doName()
        

        #Register control... -----------------------------------------------------------------------        
        log.debug("|{0}| >> Registering Control... ".format(_str_func))
        d_buffer = MODULECONTROL.register(mCrv,
                                          mirrorSide= 'center',
                                          mirrorAxis="translateX,rotateY,rotateZ",
                                          addSpacePivots = 2)
        
        mCrv = d_buffer['mObj']        
        
        
        #Dynparent... -----------------------------------------------------------------------        
        log.debug("|{0}| >> Dynparent setup.. ".format(_str_func))
        ml_dynParents = copy.copy(self.ml_dynParentsAbove)
        mHead = False
        for mParent in ml_dynParents:
            log.debug("|{0}| >> mParent: {1}".format(_str_func,mParent))
            
            if mParent.getMayaAttr('cgmName') == 'head':
                log.debug("|{0}| >> found head_direct...".format(_str_func))
                mHead = mParent
                break
        if mHead:
            ml_dynParents.insert(0,mHead)
        #if mBlock.attachPoint == 'end':
        #ml_dynParents.reverse()
        
        ml_dynParents.extend(mCrv.msgList_get('spacePivots'))
        ml_dynParents.extend(copy.copy(self.ml_dynEndParents))
        
        ml_dynParents = LISTS.get_noDuplicates(ml_dynParents)
        mDynParent = cgmRIGMETA.cgmDynParentGroup(dynChild=mCrv,dynMode=0)
        
        for o in ml_dynParents:
            mDynParent.addDynParent(o)
        mDynParent.rebuild()
        
        #Connections... -----------------------------------------------------------------------        
        log.debug("|{0}| >> Connections... ".format(_str_func))
        mModule.connectChildNode(mCrv,'eyeLook')
        mPuppet.msgList_append('eyeLook',mCrv,'puppet')
        
        if mBlockParent:
            log.debug("|{0}| >> Adding to blockParent...".format(_str_func))
            mModuleParent = mBlockParent.moduleTarget
            mModuleParent.connectChildNode(mCrv,'eyeLook')
            if mModuleParent.mClass == 'cgmRigModule':
                mBlockParentRigNull = mModuleParent.rigNull
                mBlockParentRigNull.msgList_append('controlsAll',mCrv)
                mBlockParentRigNull.moduleSet.append(mCrv)
                mRigNull.faceSet.append(mCrv)
                
                mCrv.connectParentNode(mBlockParentRigNull,'rigNull')
                
            else:
                mModuleParent.puppetSet.append(mCrv)
                mModuleParent.msgList_append('controlsAll',mCrv)
                mModuleParent.faceSet.append(mCrv)
                

        #Connections... -----------------------------------------------------------------------        
        log.debug("|{0}| >> Heirarchy... ".format(_str_func))
        mCrv.masterGroup.p_parent = self.mDeformNull
        
        for link in 'masterGroup','dynParentGroup':
            if mCrv.getMessage(link):
                mCrv.getMessageAsMeta(link).dagLock(True)
                
        mCrv.addAttr('cgmControlDat','','string')
        mCrv.cgmControlDat = {'tags':['ik']}                
        
        return mCrv
    
    except Exception,error:
        cgmGEN.cgmExceptCB(Exception,error,msg=vars())
def rig_cleanUp(self):
    try:
        _short = self.d_block['shortName']
        _str_func = 'rig_cleanUp'.format(_short)
        log.debug("|{0}| >>  ".format(_str_func) + '-' * 80)
        log.debug("{0}".format(self))

        #_start = time.clock()

        mBlock = self.mBlock
        mMasterControl = self.d_module['mMasterControl']
        mMasterDeformGroup = self.d_module['mMasterDeformGroup']
        mMasterNull = self.d_module['mMasterNull']
        mPlug_globalScale = self.d_module['mPlug_globalScale']
        _spacePivots = mBlock.numSpacePivots

        ml_controlsAll = []

        #DynParents =============================================================================
        self.UTILS.get_dynParentTargetsDat(self)
        log.debug(cgmGEN._str_subLine)

        mModule = self.mModule
        mRigNull = self.mRigNull
        mPuppet = self.mPuppet
        mHandleFactory = mBlock.asHandleFactory()
        """
        _eyeLook = eyeLook_get(self)
        
        if _eyeLook:
            log.debug("|{0}| >> Found existing eyeLook...".format(_str_func))                      
            return _eyeLook
        
        if mBlock.blockType not in ['eye']:
            raise ValueError,"blocktype must be eye. Found {0} | {1}".format(mBlock.blockType,mBlock)
        """

        #Data... -----------------------------------------------------------------------
        log.debug("|{0}| >> Get data...".format(_str_func))
        #_size = mHandleFactory.get_axisBox_size(mBlock.getMessage('bbHelper'))

        try:
            _size = self.v_baseSize
            _sizeAvg = self.f_sizeAvg
        except:
            _size = [mBlock.blockScale * v for v in mBlock.baseSize]
            _sizeAvg = MATH.average(_size)

        #Create shape... -----------------------------------------------------------------------
        log.debug("|{0}| >> Creating shape...".format(_str_func))
        mCrv = cgmMeta.asMeta(CURVES.create_fromName('arrow4Fat',
                                                     direction='z+',
                                                     size=_sizeAvg,
                                                     absoluteSize=False),
                              'cgmObject',
                              setClass=True)
        mCrv.doSnapTo(mBlock.mNode, rotation=False)
        pos = mBlock.p_position

        mCrv.p_position = pos

        mBlockParent = mBlock.p_blockParent
        if mBlockParent:
            _parentName = mBlockParent.getMayaAttr(
                'cgmName') or mBlockParent.p_nameShort
            mCrv.doStore('cgmName', _parentName + '_eyeLook')
            mBlockParent.asHandleFactory().color(mCrv.mNode)
        else:
            mCrv.doStore('cgmName', 'eyeLook')
            mHandleFactory.color(mCrv.mNode)

        mCrv.doName()

        #Register control... -----------------------------------------------------------------------
        log.debug("|{0}| >> Registering Control... ".format(_str_func))
        d_controlSpaces = self.atBuilderUtils('get_controlSpaceSetupDict')

        d_buffer = MODULECONTROL.register(
            mCrv,
            mirrorSide='center',
            mirrorAxis="translateX,rotateY,rotateZ",
            **d_controlSpaces)

        mCrv = d_buffer['mObj']

        #Dynparent... -----------------------------------------------------------------------
        log.debug("|{0}| >> Dynparent setup.. ".format(_str_func))
        ml_dynParents = copy.copy(self.ml_dynParentsAbove)
        mHead = False
        for mParent in ml_dynParents:
            log.debug("|{0}| >> mParent: {1}".format(_str_func, mParent))

            if mParent.getMayaAttr('cgmName') == 'head':
                log.debug("|{0}| >> found head_direct...".format(_str_func))
                mHead = mParent
                break
        if mHead:
            ml_dynParents.insert(0, mHead)

        #if mBlock.attachPoint == 'end':
        #ml_dynParents.reverse()

        ml_dynParents.extend(mCrv.msgList_get('spacePivots'))
        ml_dynParents.extend(copy.copy(self.ml_dynEndParents))

        ml_dynParents = LISTS.get_noDuplicates(ml_dynParents)
        mDynParent = cgmRIGMETA.cgmDynParentGroup(dynChild=mCrv, dynMode=0)

        for o in ml_dynParents:
            mDynParent.addDynParent(o)
        mDynParent.rebuild()

        #Connections... -----------------------------------------------------------------------
        log.debug("|{0}| >> Connections... ".format(_str_func))
        mModule.connectChildNode(mCrv, 'eyeLook')
        mPuppet.msgList_append('eyeLook', mCrv, 'puppet')

        if mBlockParent:
            log.debug("|{0}| >> Adding to blockParent...".format(_str_func))
            mModuleParent = mBlockParent.moduleTarget
            mModuleParent.connectChildNode(mCrv, 'eyeLook')
            if mModuleParent.mClass == 'cgmRigModule':
                mBlockParentRigNull = mModuleParent.rigNull
                mBlockParentRigNull.msgList_append('controlsAll', mCrv)
                mBlockParentRigNull.moduleSet.append(mCrv)
                #mRigNull.faceSet.append(mCrv)

                #mCrv.connectParentNode(mBlockParentRigNull,'rigNull')

            else:
                mModuleParent.puppetSet.append(mCrv)
                mModuleParent.msgList_append('controlsAll', mCrv)
                #mModuleParent.faceSet.append(mCrv)

        #Connections... -----------------------------------------------------------------------
        log.debug("|{0}| >> Heirarchy... ".format(_str_func))
        mCrv.masterGroup.p_parent = self.mDeformNull

        for link in 'masterGroup', 'dynParentGroup':
            if mCrv.getMessage(link):
                mCrv.getMessageAsMeta(link).dagLock(True)

        mCrv.addAttr('cgmControlDat', '', 'string')
        mCrv.cgmControlDat = {'tags': ['ik']}

        mBlock.template = True
        return True

        try:  #moduleParent Stuff =======================================================
            if mi_moduleParent:
                try:
                    for mCtrl in self.ml_controlsAll:
                        mi_parentRigNull.msgList_append('controlsAll', mCtrl)
                except Exception, error:
                    raise Exception, "!Controls all connect!| %s" % error
                try:
                    mi_parentRigNull.moduleSet.extend(self.ml_controlsAll)
                except Exception, error:
                    raise Exception, "!Failed to set module objectSet! | %s" % error
        except Exception, error:
            raise Exception, "!Module Parent registration! | %s" % (error)
def resize_masterShape(self, sizeBy=None, resize=False):
    try:

        _short = self.p_nameShort
        _str_func = '[{0}] resize_masterShape'.format(_short)
        log.debug("|{0}| >> ".format(_str_func) + '-' * 80)
        _sel = mc.ls(sl=True)
        _bb = False
        _bb = self.baseSize

        if resize:
            if _sel:
                _bb = TRANS.bbSize_get(_sel, False)
            #elif self.getBlockChildren():
            #    sizeBy = mc.ls(self.getBlockChildren(asMeta=False))
            #    _bb = TRANS.bbSize_get(sizeBy,False)
            self.baseSize = _bb

        log.debug("|{0}| >> _bb: {1}".format(_str_func, _bb))

        mHandleFactory = self.asHandleFactory(_short)
        mc.delete(self.getShapes())

        _average = MATH.average([_bb[0], _bb[2]])
        _size = _average * 1.5
        _offsetSize = _average * .01
        _blockScale = self.blockScale
        mFormNull = self.atUtils('stateNull_verify', 'form')
        mNoTransformNull = self.atUtils('noTransformNull_verify', 'form')

        if resize or self.controlOffset == .9999:
            self.controlOffset = _offsetSize

        #Main curve ===========================================================================
        _crv = CURVES.create_fromName(name='circle', direction='y+', size=1)
        mCrv = cgmMeta.asMeta(_crv)
        SNAP.go(mCrv.mNode, self.mNode, rotation=False)
        TRANS.scale_to_boundingBox(mCrv.mNode, [_bb[0], None, _bb[2]])

        #mDup = mCrv.doDuplicate(po=False)
        #mDup.p_position = MATH.list_add(mDup.p_position, [0,_offsetSize,0])

        RIG.shapeParent_in_place(self.mNode, _crv, False)
        #RIG.shapeParent_in_place(self.mNode,mDup.mNode,False)

        mHandleFactory.color(self.mNode, 'center', 'main', transparent=False)

        #Bounding box ==================================================================
        if self.getMessage('bbHelper'):
            self.bbHelper.delete()

        _bb_shape = CURVES.create_controlCurve(self.mNode,
                                               'cubeOpen',
                                               size=1,
                                               sizeMode='fixed')
        _bb_newSize = MATH.list_mult(self.baseSize,
                                     [_blockScale, _blockScale, _blockScale])
        TRANS.scale_to_boundingBox(_bb_shape, _bb_newSize)
        mBBShape = cgmMeta.validateObjArg(_bb_shape,
                                          'cgmObject',
                                          setClass=True)
        mBBShape.p_parent = mFormNull

        mBBShape.inheritsTransform = False
        mc.parentConstraint(self.mNode, mBBShape.mNode, maintainOffset=False)

        SNAPCALLS.snap(mBBShape.mNode,
                       self.mNode,
                       objPivot='axisBox',
                       objMode='y-')

        CORERIG.copy_pivot(mBBShape.mNode, self.mNode)
        self.doConnectOut('baseSize', "{0}.scale".format(mBBShape.mNode))
        #mHandleFactory.color(mBBShape.mNode,controlType='sub')
        mBBShape.setAttrFlags()

        mBBShape.doStore('cgmName', self)
        mBBShape.doStore('cgmType', 'bbVisualize')
        mBBShape.doName()
        mBBShape.template = True
        self.connectChildNode(mBBShape.mNode, 'bbHelper')

        #Offset visualize ==================================================================
        if self.getMessage('offsetHelper'):
            self.offsetHelper.delete()

        #Need to guess our offset size based on bounding box volume

        mShape = self.getShapes(asMeta=True)[0]
        l_return = mc.offsetCurve(mShape.mNode, distance=1, ch=True)
        #pprint.pprint(l_return)
        mHandleFactory.color(l_return[0], 'center', 'sub', transparent=False)

        mOffsetShape = cgmMeta.validateObjArg(l_return[0],
                                              'cgmObject',
                                              setClass=True)
        mOffsetShape.p_parent = mNoTransformNull
        #mOffsetShape.doSnapTo(self)
        #mc.pointConstraint(self.mNode,mOffsetShape.mNode,maintainOffset=True)
        #mc.orientConstraint(self.mNode,mOffsetShape.mNode,maintainOffset=True)
        mOffsetShape.inheritsTransform = False

        mOffsetShape.dagLock()

        _arg = '{0}.distance = -{1}.controlOffset'.format(
            l_return[1], self.mNode)
        NODEFACTORY.argsToNodes(_arg).doBuild()
        #self.doConnectOut('controlOffset',"{0}.distance".format(l_return[1]))

        mOffsetShape.doStore('cgmName', self)
        mOffsetShape.doStore('cgmType', 'offsetVisualize')
        mOffsetShape.doName()

        self.connectChildNode(mOffsetShape.mNode, 'offsetHelper')

        return
        #Offset visualize ==================================================================
        if self.getMessage('offsetHelper'):
            self.offsetHelper.delete()

        mShape = self.getShapes(asMeta=True)[0]
        l_return = mc.offsetCurve(mShape.mNode, distance=1, ch=True)
        #pprint.pprint(l_return)
        mHandleFactory.color(l_return[0], 'center', 'sub', transparent=False)

        mOffsetShape = cgmMeta.validateObjArg(l_return[0],
                                              'cgmObject',
                                              setClass=True)
        mOffsetShape.p_parent = mFormNull

        mOffsetShape.inheritsTransform = False
        mc.parentConstraint(self.mNode,
                            mOffsetShape.mNode,
                            maintainOffset=False)

        #mOffsetShape.setAttrFlags()

        _arg = '{0}.distance = -{1}.controlOffset * {1}.blockScale'.format(
            l_return[1], self.mNode)
        NODEFACTORY.argsToNodes(_arg).doBuild()
        #self.doConnectOut('controlOffset',"{0}.distance".format(l_return[1]))

        mOffsetShape.doStore('cgmName', self)
        mOffsetShape.doStore('cgmType', 'offsetVisualize')
        mOffsetShape.doName()

        self.connectChildNode(mOffsetShape.mNode, 'offsetHelper')

        return

        _crv = CURVES.create_fromName(name='squareOpen',
                                      direction='y+',
                                      size=1)
        TRANS.scale_to_boundingBox(_crv, [_bb[0], None, _bb[2]])

        mHandleFactory.color(_crv, 'center', 'sub', transparent=False)

        mCrv = cgmMeta.validateObjArg(_crv, 'cgmObject')
        l_offsetCrvs = []
        for shape in mCrv.getShapes():
            offsetShape = mc.offsetCurve(shape, distance=-_offsetSize,
                                         ch=True)[0]
            mHandleFactory.color(offsetShape,
                                 'center',
                                 'main',
                                 transparent=False)
            l_offsetCrvs.append(offsetShape)

        RIG.combineShapes(l_offsetCrvs + [_crv], True)
        SNAP.go(_crv, self.mNode)

        RIG.shapeParent_in_place(self.mNode, _crv, True)

        self.baseSize = _bb

        #Bounding box ==================================================================
        if self.getMessage('offsetVisualize'):
            self.bbVisualize.delete()

        _bb_shape = CURVES.create_controlCurve(self.mNode,
                                               'cubeOpen',
                                               size=1.0,
                                               sizeMode='fixed')
        mBBShape = cgmMeta.validateObjArg(_bb_shape,
                                          'cgmObject',
                                          setClass=True)
        mBBShape.p_parent = mFormNull

        SNAPCALLS.snap(mBBShape.mNode,
                       self.mNode,
                       objPivot='axisBox',
                       objMode='y-')

        CORERIG.copy_pivot(mBBShape.mNode, self.mNode)
        self.doConnectOut('baseSize', "{0}.scale".format(mBBShape.mNode))
        mHandleFactory.color(mBBShape.mNode, controlType='sub')
        mBBShape.setAttrFlags()

        mBBShape.doStore('cgmName', self)
        mBBShape.doStore('cgmType', 'bbVisualize')
        mBBShape.doName()

        self.connectChildNode(mBBShape.mNode, 'bbHelper')

        return True

    except Exception, err:
        cgmGEN.cgmExceptCB(Exception, err, localDat=vars())
Exemple #9
0
def rootOrCog(self, mHandle=None):
    try:
        _str_func = 'rootOrCog'
        log_start(_str_func)

        mBlock = self.mBlock
        ml_prerigHandles = self.ml_prerigHandles
        ml_formHandles = self.ml_formHandles
        _offset = self.v_offset
        if mBlock.getMessage('cogHelper') and mBlock.getMayaAttr('addCog'):
            log.debug("|{0}| >> Cog...".format(_str_func))
            mCogHelper = mBlock.cogHelper

            mCog = mCogHelper.doCreateAt(setClass=True)
            CORERIG.shapeParent_in_place(mCog.mNode,
                                         mCogHelper.shapeHelper.mNode)

            #Cast a simple curve
            #Cv's 4,2 |

            ml_shapes = self.atBuilderUtils('shapes_fromCast',
                                            targets=mCogHelper.shapeHelper,
                                            offset=_offset * 2.0,
                                            mode='singleCast')  #'segmentHan
            CORERIG.shapeParent_in_place(mCog.mNode, ml_shapes[0].mNode, False)

            CORERIG.override_color(mCog.mNode, 'white')

            mCog.doStore('cgmName',
                         '{0}_cog'.format(self.d_module['partName']))
            mCog.doStore('cgmAlias', 'cog')
            mCog.doName()

            self.mRigNull.connectChildNode(mCog, 'rigRoot',
                                           'rigNull')  #Connect
            self.mRigNull.connectChildNode(mCog, 'settings',
                                           'rigNull')  #Connect

        else:  #Root =============================================================================
            log.debug("|{0}| >> Root...".format(_str_func))

            mRootHandle = ml_prerigHandles[0]
            #mRoot = ml_joints[0].doCreateAt()

            ml_joints = self.d_joints['ml_moduleJoints']
            mRoot = ml_joints[0].doCreateAt()

            #_size_root =  MATH.average(mHandleFactory.get_axisBox_size(ml_formHandles[0].mNode))
            _bb_root = POS.get_bb_size(ml_formHandles[0].loftCurve.mNode, True)
            _size_root = MATH.average(_bb_root)
            mRootCrv = cgmMeta.validateObjArg(CURVES.create_fromName(
                'cubeOpen', _size_root * 1.5),
                                              'cgmObject',
                                              setClass=True)
            mRootCrv.doSnapTo(mRootHandle)

            #SNAP.go(mRootCrv.mNode, ml_joints[0].mNode,position=False)

            CORERIG.shapeParent_in_place(mRoot.mNode, mRootCrv.mNode, False)

            mRoot.doStore('cgmName', self.d_module['partName'])
            #ATTR.copy_to(self.mModule.mNode,'cgmName',mRoot.mNode,driven='target')
            mRoot.doStore('cgmTypeModifier', 'root')
            mRoot.doName()

            self.mHandleFactory.color(mRoot.mNode, controlType='sub')

            self.mRigNull.connectChildNode(mRoot, 'rigRoot',
                                           'rigNull')  #Connect

    except Exception, err:
        cgmGEN.cgmExceptCB(Exception, err, localDat=vars())