Ejemplo n.º 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
Ejemplo n.º 2
0
def define(self):
    _short = self.mNode
    _str_func = '[{0}] define'.format(_short)

    ATTR.set_alias(_short, 'sy', 'blockScale')
    self.setAttrFlags(attrs=['sx', 'sz', 'sz'])
    self.doConnectOut('sy', ['sx', 'sz'])
    ATTR.set_hidden(_short, 'baseSize', True)

    _shapes = self.getShapes()
    if _shapes:
        log.debug("|{0}| >>  Removing old shapes...".format(_str_func))
        mc.delete(_shapes)

    _size = self.atUtils('defineSize_get')

    #_sizeSub = _size / 2.0
    log.debug("|{0}| >>  Size: {1}".format(_str_func, _size))
    _crv = CURVES.create_fromName(name='locatorForm',
                                  direction='z+',
                                  size=_size * 2.0)

    SNAP.go(_crv, self.mNode)
    CORERIG.override_color(_crv, 'white')
    CORERIG.shapeParent_in_place(self.mNode, _crv, False)
    mHandleFactory = self.asHandleFactory()
    self.addAttr('cgmColorLock', True, lock=True, hidden=True)

    if self.cgmName == 'default':
        self.cgmName = 'eyeLook'
        self.doName()
Ejemplo n.º 3
0
def ik_base(self,ikBase = None, ml_baseJoints = None, ml_fkShapes = None):
    try:
        _str_func = 'segment_handles'
        log_start(_str_func)
        
        mBlock = self.mBlock
        mRigNull = self.mRigNull
        _offset = self.v_offset
        _jointOrientation = self.d_orientation['str']
        ml_formHandles = self.ml_formHandles
        
        if ikBase == None:
            ikBase = mBlock.getEnumValueString('ikBase')        
        
        if not ml_baseJoints:
            raise ValueError,"{0} | ml_baseJoints required".format(_str_func)
        
        
        log.debug("|{0}| >> {1} ...".format(_str_func,ikBase))
            
        if ikBase in ['hips','simple']:
            if ikBase ==  'hips':
                mIKBaseCrv = ml_baseJoints[1].doCreateAt(setClass=True)
                mIKBaseCrv.doCopyNameTagsFromObject(ml_baseJoints[0].mNode,ignore=['cgmType'])                
                mIKBaseCrv.doStore('cgmName','hips')
            else:
                mIKBaseCrv = ml_baseJoints[0].doCreateAt(setClass=True)
                mIKBaseCrv.doCopyNameTagsFromObject(ml_baseJoints[0].mNode,ignore=['cgmType'])
                
            CORERIG.shapeParent_in_place(mIKBaseCrv.mNode, ml_fkShapes[0].mNode, True)
            
        else:
            log.debug("|{0}| >> default IK base shape...".format(_str_func))
            mIK_formHandle = ml_formHandles[ 0 ]
            #bb_ik = mHandleFactory.get_axisBox_size(mIK_formHandle.mNode)
            bb_ik = POS.get_bb_size(mIK_formHandle.mNode,True,mode='max')
            
            _ik_shape = CURVES.create_fromName('cube', size = bb_ik)
            ATTR.set(_ik_shape,'scale', 1.1)
        
            mIKBaseShape = cgmMeta.validateObjArg(_ik_shape, 'cgmObject',setClass=True)
        
            mIKBaseShape.doSnapTo(mIK_formHandle)
            #pos_ik = POS.get_bb_center(mProxyHelper.mNode)
            #SNAPCALLS.get_special_pos(mEndHandle.p_nameLong,
            #                                   'axisBox','z+',False)                
        
            #mIKBaseShape.p_position = pos_ik
            mIKBaseCrv = ml_baseJoints[0].doCreateAt()
            mIKBaseCrv.doCopyNameTagsFromObject(ml_baseJoints[0].mNode,ignore=['cgmType'])
            CORERIG.shapeParent_in_place(mIKBaseCrv.mNode, mIKBaseShape.mNode, False)                            

        mIKBaseCrv.doStore('cgmTypeModifier','ikBase')
        mIKBaseCrv.doName()

        self.mHandleFactory.color(mIKBaseCrv.mNode, controlType = 'main')
        self.mRigNull.connectChildNode(mIKBaseCrv,'controlIKBase','rigNull')#Connect                
      
    except Exception,err:cgmGEN.cgmExceptCB(Exception,err,localDat=vars())
Ejemplo n.º 4
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())
Ejemplo n.º 5
0
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())
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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())
Ejemplo n.º 8
0
reload(BLOCKSHARE)
cgm.core._reload()

RBLOCKS.get_modules_dat()  #...also reloads

b1 = RBLOCKS.cgmRigBlock(blockType='handle')
b1 = cgmMeta.asMeta('handle_block')
b1.p_blockState = 'define'
b1.p_blockState = 'template'
b1.p_blockState = 'prerig'

reload(cgm.core.lib.rigging_utils)

import cgm.core.lib.curve_Utils as CURVES
reload(CURVES)
CURVES.create_fromName('squareOpen', size=1)
CURVES.create_controlCurve(b1.mNode, 'circle')

#>>>Skeleton ---------------------------------------------------------------------------------------
b1.atBlockModule('build_skeleton')
b1.atBlockUtils('skeleton_getCreateDict')

#>>>Rig process
b1.verify()
mRigFac = RBLOCKS.rigFactory(b1)
mRigFac.log_self()  #>>uses pprint
mRigFac.mRigNull.fkHeadJoint
pprint.pprint(b1.__dict__)
mRigFac.mRigNull.headFK.dynParentGroup
mRigFac.atBlockModule('rig_skeleton')
Ejemplo n.º 9
0
def lever(self, ball=False):
    try:
        _str_func = 'lever_digit'
        log_start(_str_func)

        mBlock = self.mBlock
        mRigNull = self.mRigNull
        _offset = self.v_offset
        _jointOrientation = self.d_orientation['str']
        ml_formHandles = self.ml_formHandles
        ml_prerigHandles = self.ml_prerigHandles
        mHandleFactory = self.mHandleFactory

        #Mesh shapes ----------------------------------------------------------
        mMesh_tmp = self.mBlock.atUtils('get_castMesh')
        str_meshShape = mMesh_tmp.getShapes()[0]

        #Figure out our knots ----------------------------------------------------
        mMain = self.ml_formHandlesUse[0]
        mMainLoft = mMain.loftCurve
        idxMain = self.ml_shapers.index(mMainLoft)

        minU = ATTR.get(str_meshShape, 'minValueU')
        maxU = ATTR.get(str_meshShape, 'maxValueU')

        f_factor = (maxU - minU) / (20)

        pprint.pprint(vars())

        #reload(SURF)

        #Meat ==============================================================
        mLeverDirect = mRigNull.getMessageAsMeta('leverDirect')
        mLeverFK = mRigNull.getMessageAsMeta('leverFK')

        mLeverControlCast = mLeverDirect
        if not mLeverControlCast:
            mLeverControlCast = mLeverFK

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

        dist_lever = DIST.get_distance_between_points(
            ml_prerigHandles[0].p_position, ml_prerigHandles[1].p_position)
        log.debug("|{0}| >> Lever dist: {1}".format(_str_func, dist_lever))

        #Dup our rig joint and move it
        mDup = mLeverControlCast.doDuplicate(po=True)
        mDup.p_parent = mLeverControlCast
        mDup.resetAttrs()
        ATTR.set(mDup.mNode, 't{0}'.format(_jointOrientation[0]),
                 dist_lever * .5)

        l_lolis = []
        l_starts = []

        _mTar = mDup

        if ball:
            #Loli ===============================================================
            mDefineLeverObj = mBlock.defineLeverHelper
            _mVectorLeverUp = MATH.get_obj_vector(mDefineLeverObj.mNode,
                                                  'y+',
                                                  asEuclid=True)
            #mOrientHelper = mBlock.orientHelper
            #_mVectorLeverUp = MATH.get_obj_vector(mOrientHelper.mNode,'y+',asEuclid=True)

            mBall_tmp = mBlock.atUtils('get_castMesh')
            str_ballShape = mBall_tmp.getShapes()[0]
            pos = RAYS.cast(str_ballShape,
                            startPoint=_mTar.p_position,
                            vector=_mVectorLeverUp).get('near')

            #pos = RAYS.get_cast_pos(_mTar.mNode,_mVectorLeverUp,shapes = str_ballShape)
            #SNAPCALLS.get_special_pos([_mTar,str_ballShape],'castNear',str_settingsDirections,False)
            vec = MATH.get_vector_of_two_points(_mTar.p_position, pos)
            newPos = DIST.get_pos_by_vec_dist(pos, vec, _offset * 4)

            ball = CURVES.create_fromName('sphere', _offset * 2)
            mBall = cgmMeta.cgmObject(ball)
            mBall.p_position = newPos

            SNAP.aim_atPoint(
                mBall.mNode,
                _mTar.p_position,
                aimAxis=_jointOrientation[0] + '+',
                mode='vector',
                vectorUp=_mTar.getAxisVector(_jointOrientation[0] + '-'))

            line = mc.curve(d=1, ep=[pos, newPos], os=True)
            l_lolis.extend([ball, line])
            ATTR.set(mDup.mNode, 't{0}'.format(_jointOrientation[0]),
                     dist_lever * .8)
            CORERIG.shapeParent_in_place(mLeverFK.mNode, l_lolis, False)
            mBall_tmp.delete()

        #Main clav section ========================================
        """
        ml_clavShapes = BUILDUTILS.shapes_fromCast(self, 
                                                   targets= [mLeverControlCast.mNode,
                                                              mDup.mNode],
                                                         aimVector= self.d_orientation['vectorOut'],
                                                         connectionPoints = 5,
                                                         f_factor=0,
                                                         offset=_offset,
                                                         mode = 'frameHandle')"""

        l_curves = SURF.get_splitValues(str_meshShape,
                                        knotIndices=[0, idxMain],
                                        mode='u',
                                        insertMax=False,
                                        preInset=f_factor * .5,
                                        postInset=-f_factor * .5,
                                        curvesCreate=True,
                                        curvesConnect=True,
                                        connectionPoints=6,
                                        offset=self.v_offset)
        ml_shapes = cgmMeta.validateObjListArg(l_curves)

        mHandleFactory.color(mLeverFK.mNode, controlType='sub')
        CORERIG.shapeParent_in_place(mLeverFK.mNode,
                                     ml_shapes[0].mNode,
                                     False,
                                     replaceShapes=False)
        mDup.delete()
        for mShape in ml_shapes:
            try:
                mShape.delete()
            except:
                pass
        mMesh_tmp.delete()

    except Exception, err:
        cgmGEN.cgmExceptCB(Exception, err, localDat=vars())
Ejemplo n.º 10
0
def settings(self, settingsPlace=None, ml_targets=None):
    try:
        _str_func = 'rp'
        log_start(_str_func)
        log.debug("|{0}| >> settings: {1}...".format(_str_func, settingsPlace))

        mBlock = self.mBlock
        mRigNull = self.mRigNull
        _offset = self.v_offset
        _jointOrientation = self.d_orientation['str']

        if settingsPlace == None:
            settingsPlace = mBlock.getEnumValueString('settingsPlace')

        if settingsPlace == 'cog':
            mCog = mRigNull.getMessageAsMeta('rigRoot')
            if mCog:
                log.debug("|{0}| >> Settings is cog...".format(_str_func))
                mRigNull.connectChildNode(mCog, 'settings',
                                          'rigNull')  #Connect
                return mCog
            else:
                log.warning(
                    "|{0}| >> Settings. Cog option but no cog found...".format(
                        _str_func))
                settingsPlace = 'start'

        mSettingsHelper = mBlock.getMessageAsMeta('settingsHelper')

        if settingsPlace in ['start', 'end']:
            if settingsPlace == 'start':
                _mTar = ml_targets[0]
            else:
                _mTar = ml_targets[self.int_handleEndIdx]

            #_settingsSize = _offset * 2
            if not mSettingsHelper:

                mMesh_tmp = mBlock.atUtils('get_castMesh')
                str_meshShape = mMesh_tmp.getShapes()[0]

                d_directions = {
                    'up': 'y+',
                    'down': 'y-',
                    'in': 'x+',
                    'out': 'x-'
                }

                str_settingsDirections = d_directions.get(
                    mBlock.getEnumValueString('settingsDirection'), 'y+')

                pos = RAYS.get_cast_pos(_mTar.mNode,
                                        str_settingsDirections,
                                        shapes=str_meshShape)
                if not pos:
                    log.debug(
                        cgmGEN.logString_msg(_str_func, 'standard IK end'))
                    pos = _mTar.getPositionByAxisDistance(
                        str_settingsDirections, _offset * 5)

                vec = MATH.get_vector_of_two_points(_mTar.p_position, pos)
                newPos = DIST.get_pos_by_vec_dist(pos, vec, _offset * 4)

                _settingsSize = _offset * 2

                mSettingsShape = cgmMeta.validateObjArg(CURVES.create_fromName(
                    'gear',
                    _settingsSize,
                    '{0}+'.format(_jointOrientation[2]),
                    baseSize=1.0),
                                                        'cgmObject',
                                                        setClass=True)

                mSettingsShape.doSnapTo(_mTar.mNode)

                #SNAPCALLS.get_special_pos([_mTar,str_meshShape],'castNear',str_settingsDirections,False)

                mSettingsShape.p_position = newPos
                mMesh_tmp.delete()

                SNAP.aim_atPoint(
                    mSettingsShape.mNode,
                    _mTar.p_position,
                    aimAxis=_jointOrientation[0] + '+',
                    mode='vector',
                    vectorUp=_mTar.getAxisVector(_jointOrientation[0] + '-'))
            else:
                mSettingsShape = mSettingsHelper.doDuplicate(po=False)

            mSettingsShape.parent = _mTar

            mSettings = mSettingsShape
            CORERIG.match_orientation(mSettings.mNode, _mTar.mNode)

            ATTR.copy_to(self.mModule.mNode,
                         'cgmName',
                         mSettings.mNode,
                         driven='target')

            mSettings.doStore('cgmTypeModifier', 'settings')
            mSettings.doName()
            self.mHandleFactory.color(mSettings.mNode, controlType='sub')
            mRigNull.connectChildNode(mSettings, 'settings',
                                      'rigNull')  #Connect

            #cgmGEN.func_snapShot(vars())
            #mSettings.select()
        else:
            raise ValueError, "Unknown settingsPlace: {1}".format(
                settingsPlace)

        return mSettings
    except Exception, err:
        cgmGEN.cgmExceptCB(Exception, err, localDat=vars())
Ejemplo n.º 11
0
def ik_end(self,
           ikEnd=None,
           ml_handleTargets=None,
           ml_rigJoints=None,
           ml_fkShapes=None,
           ml_ikJoints=None,
           ml_fkJoints=None,
           shapeArg=None):
    try:
        _str_func = 'ik_end'
        #Mid IK...---------------------------------------------------------------------------------
        log_start(_str_func)
        mBlock = self.mBlock
        ml_formHandles = self.ml_formHandles

        if ml_handleTargets == None:
            raise ValueError, "{0} | ml_handleTargets required".format(
                _str_func)
        if ikEnd == None:
            ikEnd = mBlock.getEnumValueString('ikEnd')

        if ml_formHandles[-1].getMessage('proxyHelper'):
            log.debug("|{0}| >> proxyHelper IK shape...".format(_str_func))
            mProxyHelper = ml_formHandles[-1].getMessage('proxyHelper',
                                                         asMeta=True)[0]
            #bb_ik = mHandleFactory.get_axisBox_size(mProxyHelper.mNode)
            bb_ik = POS.get_bb_size(mProxyHelper.mNode, True, mode='max')

            _ik_shape = CURVES.create_fromName('cube', size=bb_ik)
            ATTR.set(_ik_shape, 'scale', 1.5)
            mIKShape = cgmMeta.validateObjArg(_ik_shape,
                                              'cgmObject',
                                              setClass=True)

            mIKShape.doSnapTo(mProxyHelper)
            pos_ik = POS.get_bb_center(mProxyHelper.mNode)
            mIKShape.p_position = pos_ik
            mIKCrv = ml_handleTargets[self.int_handleEndIdx].doCreateAt()
            CORERIG.shapeParent_in_place(mIKCrv.mNode, mIKShape.mNode, False)

        elif ikEnd in ['tipBase', 'tipEnd', 'tipMid']:
            log.debug("|{0}| >> tip shape...".format(_str_func))
            ml_curves = []

            if ikEnd == 'tipBase':
                mIKCrv = mBlock.ikEndHandle.doCreateAt(
                )  #ml_handleTargets[self.int_handleEndIdx]
            elif ikEnd == 'tipMid':
                mIKCrv = mBlock.ikEndHandle.doCreateAt()

                pos = DIST.get_average_position([
                    ml_rigJoints[self.int_segBaseIdx].p_position,
                    ml_rigJoints[-1].p_position
                ])

                mIKCrv.p_position = pos

            else:
                mIKCrv = mBlock.ikEndHandle.doCreateAt()

            if shapeArg is not None:
                mIK_formHandle = ml_formHandles[
                    self.int_handleEndIdx]  #self.int_handleEndIdx ]
                bb_ik = POS.get_bb_size(mIK_formHandle.mNode, True, mode='max')
                _ik_shape = CURVES.create_fromName(shapeArg, size=bb_ik * 1.5)
                #ATTR.set(_ik_shape,'scale', 4.0)
                mIKShape = cgmMeta.validateObjArg(_ik_shape,
                                                  'cgmObject',
                                                  setClass=True)
                mIKShape.doSnapTo(mIK_formHandle)

                CORERIG.shapeParent_in_place(mIKCrv.mNode, mIKShape.mNode,
                                             False)

            else:
                CORERIG.shapeParent_in_place(mIKCrv.mNode,
                                             ml_fkShapes[-1].mNode, True)

        elif ikEnd == 'shapeArg':
            mIK_formHandle = ml_formHandles[self.int_handleEndIdx]
            bb_ik = POS.get_bb_size(mIK_formHandle.mNode, True, mode='max')
            _ik_shape = CURVES.create_fromName(shapeArg, size=bb_ik + 1.3)
            #ATTR.set(_ik_shape,'scale', 1.1)

            mIKShape = cgmMeta.validateObjArg(_ik_shape,
                                              'cgmObject',
                                              setClass=True)

            mIKShape.doSnapTo(mIK_formHandle)
            mIKCrv = ml_ikJoints[self.int_handleEndIdx].doCreateAt()
            CORERIG.shapeParent_in_place(mIKCrv.mNode, mIKShape.mNode, False)

        else:
            log.debug("|{0}| >> default IK shape...".format(_str_func))
            mIK_formHandle = ml_formHandles[self.int_handleEndIdx]
            bb_ik = POS.get_bb_size(mIK_formHandle.mNode, True, mode='max')
            _ik_shape = CURVES.create_fromName('cube', size=bb_ik)
            ATTR.set(_ik_shape, 'scale', 1.1)

            mIKShape = cgmMeta.validateObjArg(_ik_shape,
                                              'cgmObject',
                                              setClass=True)

            mIKShape.doSnapTo(mIK_formHandle)
            mIKCrv = ml_ikJoints[self.int_handleEndIdx].doCreateAt()
            CORERIG.shapeParent_in_place(mIKCrv.mNode, mIKShape.mNode, False)

        self.mHandleFactory.color(mIKCrv.mNode,
                                  controlType='main',
                                  transparent=True)
        mIKCrv.doCopyNameTagsFromObject(
            ml_fkJoints[self.int_handleEndIdx].mNode,
            ignore=['cgmType', 'cgmTypeModifier'])
        mIKCrv.doStore('cgmTypeModifier', 'ik')
        mIKCrv.doStore('cgmType', 'handle')
        mIKCrv.doName()

        self.mHandleFactory.color(mIKCrv.mNode, controlType='main')
        self.mRigNull.connectChildNode(mIKCrv, 'controlIK',
                                       'rigNull')  #Connect
        log.debug(cgmGEN._str_subLine)
        return mIKCrv
    except Exception, err:
        cgmGEN.cgmExceptCB(Exception, err, localDat=vars())
Ejemplo n.º 12
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())