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
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()
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())
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())
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())
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')
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())
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())
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())
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())