When in HMD mode, holding your hand controller in front of your face, would often result in a 1-2 mm pop in wrist position.
This was due to a problem in the IK elbow constraint.
When the swing rotation out of the elbow's reference frame was close to but not exactly identity it would not be properly constrainted.
But when the magnitude of that swing became big enough the constraint would engage.
This small change in swing rotation was noticable as a 1-2 mm movement in the wrist.
With the addition of the hips IK target, the hips offset shifting code is no longer necessary.
This PR should not effect any behavior, but it removes this unused code from the animation system.
When the avatar is rotated it will play a mirrored and non mirrored versions of the rotation animation.
The mirrored version would also mirror extra joints on the model, yielding unexpected results.
This refines the logic that determines which joints are NOT mirrored, so that extra joints
remain unaffected by the mirrored animation playback.
Change rotationSet to rotationIsDefaultPose for JointData
Also for translation. Fixed all code to flip boolean value.
Created EntityJointData so that the ModelEntity stuff doesn't need to change.
The pole vector constraint calculation within the IK system would sometimes compute the incorrect rotations.
This would be visible as an instantaneous snap of the elbow joint as the bicep was curled.
When applying pole vector constraints, there needs to be two methods of determining the current orientation of the elbow joint.
One for when the arm/elbow joint is bent, and one for when the arm/elbow is straight.
Previously, the way we would switch between these two solutions could cause a large rotation delta to accur between very small angles.
Now we use the more accurate method (1) more often, and we smoothly blend between the solutions as the joint gets straighter.