def setTrans(obj, t, *args): obj = PyNode(obj) for axis, val in zip('xyz', t): try: obj.attr( 't' + axis ).set(val) except Exception: pass
def switchSpace(ctl: pm.PyNode, space: str) -> bool: """ Switch a control into a new space Args: ctl: A node with space switching meta data space: The name of the space to switch to Returns: True if the space was changed, false otherwise """ meta_data = meta.getMetaData(ctl, pulse.spaces.SPACECONSTRAINT_METACLASS) space_data = [ s for s in meta_data.get('spaces', []) if s['name'] == space ] if not space_data: return False space_data = space_data[0] index = space_data['index'] # remember world matrix wm = ctl.wm.get() # change space ctl.attr('space').set(index) # restore world matrix pulse.nodes.setWorldMatrix(ctl, wm) return True
def setRot(obj, r, *args): obj = PyNode(obj) for axis, val in zip('xyz', r): try: obj.attr( 'r' + axis ).set(val) except Exception: pass
def updateToRigData(card): if not card.hasAttr('fossilRigData'): card.addAttr('fossilRigData', dt='string') card.fossilRigData.set('{}') card.addAttr('fossilRigState', dt='string') card = PyNode(card) # Burp the interface, just in case issues = {} with card.rigData as rigData: # Update old attrs into rigData if card.hasAttr('nameInfo'): head, repeat, tail = util.parse(card.attr('nameInfo').get()) rigData.update({ 'nameInfo': { 'head': head, 'repeat': repeat, 'tail': tail } }) card.deleteAttr('nameInfo') if card.hasAttr('rigCmd'): rigData.update({'rigCmd': card.rigCmd.get()}) card.deleteAttr('rigCmd') if card.hasAttr('suffix'): side = card.attr('suffix').get( ) # Must use attr to avoid interface's .suffix if side.lower() in ('l', 'left'): side = 'left' elif side.lower() in ('r', 'right'): side = 'right' elif side == '': pass else: issues['side conversion'] = True if 'side conversion' not in issues: rigData.update({'mirrorCode': side}) card.deleteAttr('suffix') if card.hasAttr('rigParameters'): d = cardRigging.ParamInfo.toDict(card.rigParams) ikParams = rigData.get('ikParams', {}) ikParams.update(d) rigData.update({'ikParams': ikParams}) card.deleteAttr('rigParameters') # Convert some of the old rig commands to the generic version if rigData.get('rigCmd') == 'Arm': ikParams = rigData.get('ikParams', {}) #print('ik', ikParams, 'ikParams' in rigData) if 'name' not in ikParams: ikParams['name'] = 'Arm' if 'endOrient' not in ikParams: ikParams['endOrient'] = 'True_Zero' rigData['rigCmd'] = 'IkChain' rigData['ikParams'] = ikParams elif rigData.get('rigCmd') == 'Leg': ikParams = rigData.get('ikParams', {}) if 'name' not in ikParams: ikParams['name'] = 'Leg' if 'endOrient' not in ikParams: ikParams['endOrient'] = 'True_Zero_Foot' rigData['rigCmd'] = 'IkChain' rigData['ikParams'] = ikParams elif rigData.get('rigCmd') in ('Head', 'Neck'): rigData['rigCmd'] = 'TranslateChain' return issues