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