def defaultTangents_set(arg, inTangent=True, outTangent=True): _str_func = 'defaultTangents_set' log.debug(cgmGEN.logString_start(_str_func)) d_validArgs = { 'linear': ['ln', 'linear'], 'spline': ['sp', 'spline'], 'clamped': ['cl', 'clamped'], 'flat': ['fl', 'flat'], 'plateau': ['pl', 'plateau'], 'auto': ['au', 'auto'] } _arg = VALID.kw_fromDict(arg, d_validArgs, calledFrom=_str_func) log.debug( cgmGEN.logString_msg(_str_func, "| arg: {0} | validated: {1}".format(arg, _arg))) #Couldn't use True for setting the Tangent type had to use _arg _d = {'g': 1} if inTangent: _d['itt'] = _arg if outTangent: _d['ott'] = _arg mc.keyTangent(**_d)
def frameRate_set(arg): _str_func = 'frameRate_set' log.debug(cgmGEN.logString_start(_str_func)) if VALID.valueArg(arg): _arg = '{0}fps'.format(arg) else: d_validArgs = { 'ntsc': ['n', 'ntsc'], 'pal': ['p', 'pal'], 'film': ['f', 'film'], 'game': ['g', 'game'], 'ntscf': ['ntscf'] } _arg = VALID.kw_fromDict(arg, d_validArgs, calledFrom=_str_func, noneValid=True) if not _arg: _arg = arg log.debug( cgmGEN.logString_msg(_str_func, "| arg: {0} | validated: {1}".format(arg, _arg))) mc.currentUnit(time=_arg)
def rig_prechecks(self): #try: #_short = self.d_block['shortName'] _str_func = 'rig_prechecks' log.debug(cgmGEN.logString_start(_str_func)) """ if not self.mBlock.buildProfile: self.l_precheckErrors.append('Must have build profile') return False""" return True
def sceneUp_set(arg): _str_func = 'sceneUp_set' log.debug(cgmGEN.logString_start(_str_func)) d_validArgs = {'y': ['y'], 'z': ['z']} _arg = VALID.kw_fromDict(arg, d_validArgs, calledFrom=_str_func) log.debug( cgmGEN.logString_msg(_str_func, "| arg: {0} | validated: {1}".format(arg, _arg))) mc.upAxis(ax=_arg, rv=1)
def pivotShapes(self, mPivotHelper=None): """ Builder of shapes for pivot setup. Excpects to find pivotHelper on block :parameters: self(cgmRigBlock) mRigNull(cgmRigNull) | if none provided, tries to find it :returns dict """ _str_func = 'pivotShapes' log.debug(cgmGEN.logString_start(_str_func)) mBlock = self.mBlock mRigNull = self.mRigNull _offset = self.v_offset _jointOrientation = self.d_orientation['str'] if mRigNull is None: mRigNull = self.moduleTarget.rigNull if mPivotHelper is None: if not self.getMessage('pivotHelper'): raise ValueError, "|{0}| >> No pivots helper found. mBlock: {1}".format( _str_func, mBlock) mPivotHelper = mBlock.pivotHelper for a in l_pivotOrder: str_a = 'pivot' + a.capitalize() if mPivotHelper.getMessage(str_a): log.debug("|{0}| >> Found: {1}".format(_str_func, str_a)) mPivotOrig = mPivotHelper.getMessage(str_a, asMeta=True)[0] mPivot = mPivotOrig.doDuplicate(po=False, ic=False) l_const = mPivot.getConstraintsTo(fullPath=1) if l_const: mc.delete(l_const) mRigNull.connectChildNode(mPivot, str_a, 'rigNull') #Connect _nameSet = NAMETOOLS.combineDict( mPivotOrig.getNameDict( ignore=['cgmType', 'cgmTypeModifier', 'cgmDirection'])) mPivot.parent = False mPivot.cgmName = "{0}_{1}".format(self.d_module['partName'], _nameSet) if mPivot.getMayaAttr('cgmDirection'): mPivot.deleteAttr('cgmDirection') #mPivot.rename("{0}_{1}".format(self.d_module['partName'], mPivot.p_nameBase)) mPivot.doName() return True
def angularUnit_set(arg): _str_func = 'angularUnit_set' log.debug(cgmGEN.logString_start(_str_func)) d_validArgs = { 'deg': ['deg', 'degree', 'degrees'], 'rad': ['rad', 'radian'] } _arg = VALID.kw_fromDict(arg, d_validArgs, calledFrom=_str_func) log.debug( cgmGEN.logString_msg(_str_func, "| arg: {0} | validated: {1}".format(arg, _arg))) mc.currentUnit(angle=_arg)
def scale_to_axisSize(arg=None, size=None): _str_func = 'scale_to_axisSize' log.debug(cgmGEN.logString_start(_str_func)) _currentSize = get_axisSize(arg) _currentScale = ATTR.get(arg, 'scale') _targetScale = [] for i, s in enumerate(size): if s is not None: v = (_currentScale[i] * s) / _currentSize[i] _targetScale.append(v) else: _targetScale.append(_currentScale[i]) #log.info(_targetScale) for i, a in enumerate('xyz'): if size[i]: ATTR.set(arg, 's{0}'.format(a), _targetScale[i])
def frameRate_set(arg, fixFractionalSlider=True): _str_func = 'frameRate_set' log.debug(cgmGEN.logString_start(_str_func)) if VALID.valueArg(arg): _arg = '{0}fps'.format(arg) else: d_validArgs = { 'ntsc': ['n', 'ntsc'], 'pal': ['p', 'pal'], 'film': ['f', 'film'], 'game': ['g', 'game'], 'ntscf': ['ntscf'] } _arg = VALID.kw_fromDict(arg, d_validArgs, calledFrom=_str_func, noneValid=True) if not _arg: _arg = arg log.debug( cgmGEN.logString_msg(_str_func, "| arg: {0} | validated: {1}".format(arg, _arg))) mc.currentUnit(time=_arg) if fixFractionalSlider: log.debug(cgmGEN.logString_msg(_str_func, 'fixFractionalSlider...')) _current = mc.currentTime(q=True) mc.playbackOptions( animationStartTime=int( mc.playbackOptions(q=True, animationStartTime=True)), animationEndTime=int( mc.playbackOptions(q=True, animationEndTime=True)), max=int(mc.playbackOptions(q=True, max=True)), min=int(mc.playbackOptions(q=True, min=True)), ) mc.currentTime(int(_current))
def distanceUnit_set(arg): _str_func = 'distanceUnit_set' log.debug(cgmGEN.logString_start(_str_func)) d_validArgs = { 'm': ['meter', 'metre'], 'cm': ['centimeter', 'centi'], 'mm': ['milimeter', 'mili'], 'yd': ['yard'], 'in': ['inch', 'inches'], 'ft': ['feet', 'foot'] } _arg = VALID.kw_fromDict(arg, d_validArgs, calledFrom=_str_func) log.debug( cgmGEN.logString_msg(_str_func, "| arg: {0} | validated: {1}".format(arg, _arg))) mc.currentUnit(linear=_arg)
def patch_templateToForm(): try: _str_func = 'patch_templateToForm' log.debug(cgmGEN.logString_start(_str_func)) _l = mc.ls() _progressBar = CGMUI.doStartMayaProgressBar(stepMaxValue=len(_l)) for i, o in enumerate(_l): _str = "{0} | {1} ".format(i, o) log.debug(cgmGEN.logString_sub(_str_func, _str)) CGMUI.progressBar_set(_progressBar, step=1, status=_str) mObj = cgmMeta.asMeta(o) for a in mc.listAttr(o, ud=True) or []: log.debug(cgmGEN.logString_msg(_str_func, str(a))) if 'template' in a: log.info( cgmGEN.logString_msg( _str_func, "{0} | {1} | template in".format(_str, a))) ATTR.rename(o, a, a.replace('template', 'form')) elif 'Template' in a: log.info( cgmGEN.logString_msg( _str_func, "{0} | {1} | Template in".format(_str, a))) ATTR.rename(o, a, a.replace('Template', 'Form')) v = ATTR.get(o, a) if 'template' == str(v): log.info( cgmGEN.logString_msg( _str_func, "{0} | {1} | template value".format(_str, str(a)))) ATTR.set(o, a, 'form') except Exception, err: cgmGEN.cgmExceptCB(Exception, err)
def sceneUp_get(): _str_func = 'sceneUp_get' log.debug(cgmGEN.logString_start(_str_func)) return mc.upAxis(q=1, ax=True)
def angularUnit_get(): _str_func = 'angularUnit_get' log.debug(cgmGEN.logString_start(_str_func)) return mc.currentUnit(q=1, angle=True)
def distanceUnit_get(): _str_func = 'distanceUnit_get' log.debug(cgmGEN.logString_start(_str_func)) return mc.currentUnit(q=1, linear=True)
def weightedTangets_set(arg): _str_func = 'weightedTangets_set' log.debug(cgmGEN.logString_start(_str_func)) mc.keyTangent(edit=1, g=1, wt=bool(arg))
def weightedTangents_get(): _str_func = 'weightedTangents_get' log.debug(cgmGEN.logString_start(_str_func)) return mc.keyTangent(q=1, wt=bool(True))
def SDK_wip(ml = [], matchType = False, d_attrs = d_default, skipLever = True, skipFKBase = []): _str_func = 'siblingSDK_wip' log.info(cgmGEN.logString_start(_str_func)) if not ml: ml = cgmMeta.asMeta(sl=1) else: ml = cgmMeta.asMeta(ml) #mParent ----------------------------------------------------------------------------- mParent = ml[0].moduleParent mParentSettings = mParent.rigNull.settings #pprint.pprint([mParent,mParentSettings]) _settings = mParentSettings.mNode #Siblings get ------------------------------------------------------------------------ #mSiblings = mTarget.atUtils('siblings_get',excludeSelf=False, matchType = matchType) mSiblings = ml md = {} d_int = {} #Need to figure a way to get the order... for i,mSib in enumerate(mSiblings): log.info(cgmGEN.logString_start(_str_func, mSib.__repr__())) _d = {} ml_fk = mSib.atUtils('controls_get','fk') if not ml_fk: log.warning('missing fk. Skippping...') continue if skipLever or skipFKBase: if i in skipFKBase: ml_fk = ml_fk[1:] elif skipLever and mSib.getMessage('rigBlock') and mSib.rigBlock.getMayaAttr('blockProfile') in ['finger']: ml_fk = ml_fk[1:] #if 'thumb' not in mSib.mNode: # ml_fk = ml_fk[1:] _d['fk'] = ml_fk ml_sdk = [] for ii,mFK in enumerate(ml_fk): mSDK = mFK.getMessageAsMeta('sdkGroup') if not mSDK: mSDK = mFK.doGroup(True,True,asMeta=True,typeModifier = 'sdk') ml_sdk.append(mSDK) if not d_int.get(ii): d_int[ii] = [] d_int[ii].append(mSDK) _d['sdk'] = ml_sdk md[mSib] = _d #pprint.pprint(md) #pprint.pprint(d_int) #return for a,d in d_attrs.iteritems(): log.info(cgmGEN.logString_sub(_str_func,a)) for i,mSib in enumerate(mSiblings): log.info(cgmGEN.logString_sub(_str_func,mSib)) d_sib = copy.deepcopy(d) d_idx = d.get(i,{}) if d_idx: _good = True for k in ['d','+d','-d','+','-']: if not d_idx.get(k): _good = False break if _good: log.info(cgmGEN.logString_msg(_str_func,"Found d_idx on mSib | {0}".format(d_idx))) d_use = copy.deepcopy(d_idx) else:d_use = copy.deepcopy(d_sib) d2 = md[mSib] str_part = mSib.getMayaAttr('cgmName') or mSib.get_partNameBase() #_aDriver = "{0}_{1}".format(a,i) _aDriver = "{0}_{1}".format(a,str_part) if not mParentSettings.hasAttr(_aDriver): ATTR.add(_settings, _aDriver, attrType='float', keyable = True) log.info(cgmGEN.logString_msg(_str_func,"d_sib | {0}".format(d_sib))) for ii,mSDK in enumerate(d2.get('sdk')): d_cnt = d_idx.get(ii,{}) if d_cnt: log.info(cgmGEN.logString_msg(_str_func,"Found d_cnt on mSib | {0}".format(d_cnt))) d_use = copy.deepcopy(d_cnt) else:d_use = copy.deepcopy(d_sib) log.info(cgmGEN.logString_msg(_str_func,"{0}| {1} | {2}".format(i,ii,d_use))) if d_use.get('skip'): continue d_ease = d_use.get('ease',{}) v_ease = d_ease.get(ii,None) l_rev = d_sib.get('reverse',[]) if issubclass( type(d_use['d']), dict): d_do = d_use.get('d') else: d_do = {d_use['d'] : d_use} for k,d3 in d_do.iteritems(): if d3.get('skip'): continue mc.setDrivenKeyframe("{0}.{1}".format(mSDK.mNode, k), currentDriver = "{0}.{1}".format(_settings, _aDriver), itt='linear',ott='linear', driverValue = 0, value = 0) #+ ------------------------------------------------------------------ pos_v = d3.get('+') pos_d = d_use.get('+d', 1.0) if v_ease is not None: pos_v = pos_v * v_ease if i in l_rev: print("...rev pos") pos_v*=-1 ATTR.set_max("{0}.{1}".format(_settings, _aDriver),pos_d) if pos_v: mc.setDrivenKeyframe("{0}.{1}".format(mSDK.mNode, k), currentDriver = "{0}.{1}".format(_settings, _aDriver), itt='linear',ott='linear', driverValue = pos_d, value = pos_v) #- ---------------------------------------------------------- neg_v = d3.get('-') neg_d = d_use.get('-d', -1.0) if v_ease is not None: neg_v = neg_v * v_ease if i in l_rev: print("...rev neg") neg_v*=-1 ATTR.set_min("{0}.{1}".format(_settings, _aDriver),neg_d) if neg_v: mc.setDrivenKeyframe("{0}.{1}".format(mSDK.mNode, k), currentDriver = "{0}.{1}".format(_settings, _aDriver), itt='linear',ott='linear', driverValue = neg_d, value = neg_v)
def defaultTangents_get(): _str_func = 'defaultTangents_get' log.debug(cgmGEN.logString_start(_str_func)) return mc.keyTangent(q=1, g=1, itt=True, ott=True)
def siblingSDK_wip(mTarget = 'L_ring_limb_part',matchType = False, d_attrs = d_default): _str_func = 'siblingSDK_wip' log.info(cgmGEN.logString_start(_str_func)) if mTarget is None: mTarget = cgmMeta.asMeta(sl=1) if mTarget:mTarget = mTarget[0] else: mTarget = cgmMeta.asMeta(mTarget) #mParent ----------------------------------------------------------------------------- mParent = mTarget.moduleParent mParentSettings = mParent.rigNull.settings #pprint.pprint([mParent,mParentSettings]) _settings = mParentSettings.mNode #Siblings get ------------------------------------------------------------------------ mSiblings = mTarget.atUtils('siblings_get',excludeSelf=False, matchType = matchType) md = {} #Need to figure a way to get the order... for i,mSib in enumerate(mSiblings): log.info(cgmGEN.logString_start(_str_func, mSib.__repr__())) _d = {} ml_fk = mSib.atUtils('controls_get','fk') if not ml_fk: log.warning('missing fk. Skippping...') continue if 'thumb' not in mSib.mNode: ml_fk = ml_fk[1:] _d['fk'] = ml_fk ml_sdk = [] str_part = mSib.get_partNameBase() for mFK in ml_fk: mSDK = mFK.getMessageAsMeta('sdkGroup') if not mSDK: mSDK = mFK.doGroup(True,True,asMeta=True,typeModifier = 'sdk') ml_sdk.append(mSDK) for a,d in d_attrs.iteritems(): log.info("{0} | ...".format(a)) _aDriver = "{0}_{1}".format(a,i) #_aDriver = "{0}_{1}".format(str_part,a) if not mParentSettings.hasAttr(_aDriver): ATTR.add(_settings, _aDriver, attrType='float', keyable = True) for mSDK in ml_sdk: mc.setDrivenKeyframe("{0}.{1}".format(mSDK.mNode, d['d']), currentDriver = "{0}.{1}".format(_settings, _aDriver), itt='linear',ott='linear', driverValue = 0, value = 0) #+ ------------------------------------------------------------------ pos_v = d.get('+') pos_d = d.get('+d', 1.0) if pos_v: mc.setDrivenKeyframe("{0}.{1}".format(mSDK.mNode, d['d']), currentDriver = "{0}.{1}".format(_settings, _aDriver), itt='linear',ott='linear', driverValue = pos_d, value = pos_v) #- ---------------------------------------------------------- neg_v = d.get('-') neg_d = d.get('-d', -1.0) if neg_v: mc.setDrivenKeyframe("{0}.{1}".format(mSDK.mNode, d['d']), currentDriver = "{0}.{1}".format(_settings, _aDriver), itt='linear',ott='linear', driverValue = neg_d, value = neg_v) _d['sdk'] = ml_sdk md[mSib] = _d
def frameRate_get(): _str_func = 'frameRate_get' log.debug(cgmGEN.logString_start(_str_func)) return mc.currentUnit(q=1, time=True)
def wing_temp(d_wiring=d_wiring_r, mode='slidingPosition'): """ """ try: _str_func = 'wing_temp' log.debug(cgmGEN.logString_start(_str_func)) ml_roots = [] ml_parts = [] ml_rigNulls = [] ml_blendDrivers = [] #Dat get... for part in d_wiring['modules']: mPart = cgmMeta.asMeta(part) mRigNull = mPart.rigNull ml_parts.append(mPart) ml_rigNulls.append(mRigNull) ml_roots.append(mRigNull.rigRoot) ml_joints = mRigNull.msgList_get('blendJoints') if not ml_joints: for plug in 'fkAttachJoints', 'fkJoints': ml_test = mRigNull.msgList_get(plug) if ml_test: ml_joints = ml_test break ml_blendDrivers.append(ml_joints[0]) pprint.pprint(vars()) #Generate driver locs... for d, s in d_wiring['driven'].iteritems(): mPart = ml_parts[d] mRoot = ml_roots[d] mRigNull = ml_rigNulls[d] mAttach = mRigNull.getMessageAsMeta('attachDriver') log.info(cgmGEN.logString_sub(_str_func, "{0} | {1}".format(d, s))) #...loc ----------------------------------------------------------------------- log.info(cgmGEN.logString_msg(_str_func, 'loc...')) mLoc = mRoot.getMessageAsMeta('featherDriver') if mLoc: mLoc.delete() mLoc = ml_roots[d].doLoc() mLoc.rename("{0}_featherLoc".format(mPart.p_nameBase)) mLoc.p_parent = mRoot.masterGroup.p_parent mLoc.v = False mLoc.doStore('cgmAlias', 'feather') mRoot.connectChildNode(mLoc.mNode, 'featherDriver', 'mPart') #...drivers ------------------------------------------------------------ ml_drivers = [ml_blendDrivers[v] for v in s] l_drivers = [mObj.mNode for mObj in ml_drivers] _vList = DIST.get_normalizedWeightsByDistance( mLoc.mNode, l_drivers) _orient = mc.orientConstraint(l_drivers, mLoc.mNode, maintainOffset=0) l_constraints = [_orient] if mode == 'slidingPosition': _point = mc.pointConstraint(l_drivers, mLoc.mNode, maintainOffset=0) l_constraints.append(_point) else: _point = mc.pointConstraint(mAttach.mNode, mLoc.mNode, maintainOffset=1) for c in l_constraints: CONSTRAINT.set_weightsByDistance(c[0], _vList) ATTR.set(_orient[0], 'interpType', 2) mLoc.dagLock() mDynGroup = mRoot.dynParentGroup mDynGroup.addDynParent(mLoc) mDynGroup.rebuild() _len = len(ATTR.get_enumList(mRoot.mNode, 'space')) mRoot.space = _len - 1 return True except Exception, err: cgmGEN.cgmException(Exception, err)