How to translate a joint in a chain without messing up its orientation
… Or “How To Reposition Joints In a Non-Destructive Way”.
The biggest issue when tweaking joints’ position “after the fact” is that translating a joint will mess up its orientation (or rather its parent’s). And simply tweaking its Local Rotate Axis does not take care of its Translate and Scale axii. In short it’s a mess.
But sometimes it’s unavoidable, so let’s see how to do that…
1) The ideal situation:
If we’re lucky enough to be dealing with perfectly aligned chains of joints, after translating whatever joint need tweaking, then we can simply use the Orient Joint menu. The only tricky thing is to figure out the proper axis order, and voila!
2) The “real world” situation:
If some of the joints in the chain are not perfectly perpendicular to the world (which is 99% of the time), that’s not going to work. The results will be unpredictable, and that’s because Maya has no way of knowing what’s supposed to twist and how much.
Again, if we simply use the Orient Joint menu to reset the axii after we translated a joint, chances are all of the axii (throughout the chain) are going to change. Which we do NOT want; the orientation of the other joints in the chain should not change at all.
We just want the translated joint to keep pointing at the next joint, preserving the overall orientation that you setup in the first place.
Since this is a very common situation in rigging, I wrote a little script that will allow you to reposition any joint after the fact without messing up its (or its parents’) orientation at all: repositionJoint.