def insertCtrlSpace(self, name=None): """Adds a CtrlSpace object above this object Args: name (string): optional name for this CtrlSpace, default is same as this object Returns: object: New CtrlSpace object """ if name is None: name = self.getName() newCtrlSpace = CtrlSpace(name, parent=self.getParent()) if self.getParent() is not None: self.getParent().removeChild(self) self.setParent(newCtrlSpace) newCtrlSpace.addChild(self) newCtrlSpace.xfo = Xfo(self.xfo) # To ensure that names of control spaces don't clash with controls and # if they do, set's the control space's name back to what it was intended if self.getName() == name: newCtrlSpace.setName(name) return newCtrlSpace
def addFinger(self, name, data): fingerCtrls = [] fingerJoints = [] parentCtrl = self.handCtrl for i, joint in enumerate(data): if i == 0: jointName = name + 'Meta' else: jointName = name + str(i).zfill(2) jointXfo = joint.get('xfo', Xfo()) jointCrvData = joint.get('curveData') # Create Controls newJointCtrlSpace = CtrlSpace(jointName, parent=parentCtrl) newJointCtrl = Control(jointName, parent=newJointCtrlSpace, shape='square') newJointCtrl.lockScale(True, True, True) newJointCtrl.lockTranslation(True, True, True) if jointCrvData is not None: newJointCtrl.setCurveData(jointCrvData) fingerCtrls.append(newJointCtrl) # Create Deformers jointDef = Joint(jointName, parent=self.defCmpGrp) fingerJoints.append(jointDef) # Create Constraints # Set Xfos newJointCtrlSpace.xfo = jointXfo newJointCtrl.xfo = jointXfo parentCtrl = newJointCtrl # ================= # Create Operators # ================= # Add Deformer KL Op deformersToCtrlsKLOp = KLOperator(name + 'DeformerKLOp', 'MultiPoseConstraintSolver', 'Kraken') self.addOperator(deformersToCtrlsKLOp) # Add Att Inputs deformersToCtrlsKLOp.setInput('drawDebug', self.drawDebugInputAttr) deformersToCtrlsKLOp.setInput('rigScale', self.rigScaleInputAttr) # Add Xfo Inputs deformersToCtrlsKLOp.setInput('constrainers', fingerCtrls) # Add Xfo Outputs deformersToCtrlsKLOp.setOutput('constrainees', fingerJoints) return deformersToCtrlsKLOp
def insertCtrlSpace(self, name=None): """Adds a CtrlSpace object above this object Args: name (string): optional name for this CtrlSpace, default is same as this object Returns: object: New CtrlSpace object """ if name is None: name = self.getName() newCtrlSpace = CtrlSpace(name, parent=self.getParent()) if self.getParent() is not None: self.getParent().removeChild(self) if self.getMetaDataItem("altLocation") is not None: newCtrlSpace.setMetaDataItem("altLocation", self.getMetaDataItem("altLocation")) self.setParent(newCtrlSpace) newCtrlSpace.addChild(self) newCtrlSpace.xfo = Xfo(self.xfo) # To ensure that names of control spaces don't clash with controls and # if they do, set's the control space's name back to what it was intended if self.getName() == name: newCtrlSpace.setName(name) return newCtrlSpace
def addFinger(self, name, data): fingerCtrls = [] fingerJoints = [] parentCtrl = self.handCtrl for i, joint in enumerate(data): if i == 0: jointName = name + 'Meta' else: jointName = name + str(i).zfill(2) jointXfo = joint.get('xfo', Xfo()) jointCrvData = joint.get('curveData') # Create Controls newJointCtrlSpace = CtrlSpace(jointName, parent=parentCtrl) newJointCtrl = Control(jointName, parent=newJointCtrlSpace, shape='square') newJointCtrl.lockScale(True, True, True) newJointCtrl.lockTranslation(True, True, True) if jointCrvData is not None: newJointCtrl.setCurveData(jointCrvData) fingerCtrls.append(newJointCtrl) # Create Deformers jointDef = Joint(jointName, parent=self.defCmpGrp) fingerJoints.append(jointDef) # Create Constraints # Set Xfos newJointCtrlSpace.xfo = jointXfo newJointCtrl.xfo = jointXfo parentCtrl = newJointCtrl # ================= # Create Operators # ================= # Add Deformer KL Op deformersToCtrlsKLOp = KLOperator(name + 'DeformerKLOp', 'MultiPoseConstraintSolver', 'Kraken') self.addOperator(deformersToCtrlsKLOp) # Add Att Inputs deformersToCtrlsKLOp.setInput('drawDebug', self.drawDebugInputAttr) deformersToCtrlsKLOp.setInput('rigScale', self.rigScaleInputAttr) # Add Xfo Inputs deformersToCtrlsKLOp.setInput('constrainers', fingerCtrls) # Add Xfo Outputs deformersToCtrlsKLOp.setOutput('constrainees', fingerJoints) return deformersToCtrlsKLOp