def stampDeltas(self): try: cmds.undoInfo(openChunk=True) bb = self.blendBoard if bb: #build attr if not utils.attrExists(bb + '.initialPoseDict'): cmds.addAttr(bb, longName='initialPoseDict', dt='string') cmds.setAttr(bb + '.initialPoseDict', '{}', type='string') initialPoseDict={} drivenDict = self.readDrivenDict(bb) for drivingAttr in drivenDict: attrDict = {} for driven in drivenDict[drivingAttr]: cmds.setAttr(drivingAttr, 1.0) attrDict[driven] = cmds.getAttr(driven) initialPoseDict[drivingAttr] = attrDict cmds.setAttr(drivingAttr, 0.0) cmds.setAttr(bb + '.initialPoseDict', json.dumps(initialPoseDict), type='string') else: cmds.warning('No blendBoard/poses found!') except Exception as e: print(traceback.format_exc()) cmds.undoInfo(closeChunk=True)
def readDrivenDict(self, node): if utils.attrExists(node + '.drivenDict'): dict = cmds.getAttr(node + '.drivenDict') if dict: return json.loads(dict) else: cmds.warning('No drivenDict found on object: ' + node) return {}
def connectControlBoard(self, controlBoard): bb = self.blendBoard utils.msgConnect(self.node + '.controlBoard', controlBoard + '.faceModule') if bb: for attr in cmds.listAttr(bb, k=1): bbAttr = bb + '.' + attr if cmds.listConnections(bbAttr): cbAttr = controlBoard + '.' + attr if utils.attrExists(cbAttr): cmds.connectAttr(cbAttr, bbAttr, f=1)
def updateConstraints(self, node): ''' This is basically made for the method 'snapEyeSdkPivots' below. It is a general function, except the part where is pops the sdkNode connection. ''' parent = cmds.listRelatives(node, parent=1)[0] listConnectionsSucks = cmds.listConnections(parent, type='parentConstraint') if listConnectionsSucks: for const in set(listConnectionsSucks): conns = list(set(cmds.listConnections(const, type='transform'))) conns.pop(conns.index(const)) conns.pop(conns.index(parent)) if utils.attrExists(const + '.sdkNode'): conns.pop(conns.index(cmds.listConnections(const + '.sdkNode')[0])) if len(conns) == 1: cmds.parentConstraint(conns[0], parent, e=1, mo=1)
def active(self, mode): if not utils.attrExists(self.node + '.active'): cmds.addAttr(self.node, longName='active', at='bool') cmds.setAttr(self.node+'.active', mode) self.toggleMaskActive(mode)