Make control curve match a joint’s orientation

Usually when you make a control, such as a nurbs circle, you freeze transformation before doing point or parent constraints. But when you want to do orient constraint, for example, you want to use the control to match a joint’s rotation, your control’s rotate axis is different from joint’s rotate axis, this makes a orientation control awkward.

The reason is that after freeze transformation, your control’s rotate axis is set to be the same as its parent’s orientation, by default the world axis. But a joint’s rotate axis is its local rotation axis.

To match a control’s rotation axis to a joint’s local axis, here is a trick to do it:

  1. make a control curve as you like, move to where you like it to be, freeze transformation.
  2. select the curve, ctrl-g to create a group for it
  3. orient constrain the group to joint, uncheck maintain offset
  4. delete the constraint of the group
  5. now your curve has the same rotation axis as the joint. This is because your curve’s roate axis is now the group’s orientation, which is the same as the joint’s orientation, thanks to the create-delete of a orient constraint.
  6. never freeze transformation the group – leave it be – you use the curve as control, not the group
  7. if you have another control, say ctrl2, created the same way, and you want to parent it under this control, say ctrl1, parent ctrl2’s group under ctrl1 curve