def orient_joint_frontAxis(self, joint, aimAxis=[0, 1, 0], upAxis=[0, 0, 1], worldUpType="object", frontAxis="z"): #TODO : Validate frontAxis # orient_joint Function OverLoading # Creates a temporal Trasnform node for WorldUpVector. # Calls orient_joint method jointUnder = self.jointUnder(joint) if jointUnder is None: return 0 moveAxis = [0, 0] if frontAxis == "x": moveAxis[0] = -1 elif frontAxis == "z": moveAxis[1] = -1 temporalTrans = DrawNode(Shape.transform, 'temporalTransform') temporalTrans.temp_constrain(jointUnder) temporalTrans.freeze_transformations() temporalTransMove = self.orient_choose_direction(joint, jointUnder, frontAxis) temporalTrans.move(pm.dt.Vector([moveAxis[0], (temporalTransMove * 0.001), moveAxis[1]])) worldUpVector = temporalTrans.drawnNode self.orient_joint(joint, aimAxis, upAxis, worldUpType, worldUpVector) temporalTrans.delete()
def set_zero_joint(self): #Removes Zero Joint from Joint Chain pm.joint(self.jointChain[0], e=True, zso=True, oj='xyz', sao='xup') self.zeroJoint = self.jointChain[0] self._zeroPos = pm.dt.Point(pm.getAttr(self._zeroJoint.translate)) self.jointChain.remove(self.jointChain[0]) self.jointPos.remove(self.jointPos[0]) pm.joint(self.jointChain[1], e=True, zso=True, oj='xyz', sao='yup') for i in range(1, len(self.jointChain)): pm.joint(self.jointChain[i], e=True, zso=True, oj='xyz', sao='yup') #sets Start End Num Of Joints again self._numOfJoints = len(self._jointChain) #Orient Zero Joint temporalGroup = DrawNode(Shape.transform, 'temporalGroup') pm.parent(self.startJoint, temporalGroup.drawnNode) print (pm.getAttr(self.zeroJoint.jointOrient)) pm.setAttr(self.zeroJoint.jointOrientX, 0) pm.parent(self.startJoint, self.zeroJoint) temporalGroup.delete()
def orient_choose_direction(self, joint, jointUnder, frontAxis): #TODO : Validate frontAxis if frontAxis == "x": frontInt = 0 elif frontAxis == "z": frontInt = 2 returnVal = 1 transform_1 = DrawNode(Shape.transform, 'direction1') transform_1.temp_constrain(joint) transform_2 = DrawNode(Shape.transform, "direction2") transform_2.temp_constrain(jointUnder) frontTransform = transform_1.transform[frontInt] - \ transform_2.transform[frontInt] if frontTransform > 0: returnVal = -1 transform_1.delete() transform_2.delete() return returnVal