예제 #1
0
    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()
예제 #2
0
    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()
예제 #3
0
    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