I've been trying to solve this problem for a very long time, but I've only ever come up with partial solutions.

I'm trying to do the following—please use the example rig in the attatched file to follow along. The bones (from top to bottom) are "Head, Neck, Torso, Base." Head and Torso are parented to Base, Neck is parented to Torso.

I'd like bone "neck" to rotate on its local Y axis as bone "head" rotates on its local Y axis, regardless of what other rotations on other axes bone "head" may possess. I'd like this to work even if bone "torso" or "base" are rotated as well—this is the part I get tripped up on. In whatever setups I've managed to create, rotating the bone "base/torso" makes the neck rotate too much, creating annoying artifacts.

Could somebody please present me with a solution to this troubling dilemma?

enter image description here


1 Answer 1


Did you mean to link a file?

The simplest thing to do is try a copy rotation constraint in local space. For what you're trying to do, this sounds like good enough. Here's how to set it up:

enter image description here

You can see that the neck, even though it has no transformation, is following the Y axis rotation of the head, regardless of rotation of the torso.

If you rotate head, the neck will rotate with it; if you rotate torso, the neck will rotate with it as well. That means that neck might rotate too much for your taste, but then, you really have to put more thought into how you want neck to behave. You could always use transformation constraints or drivers to rescale any rotation to a certain desirable range.

I said this was the simplest thing to do. Copying rotation in a single axis is dangerous, because Euler angles aren't really cleanly divisible into axes: by rotating a bone in its Z and X axes, you can create Y axis rotation, and there are places where one axis of rotation seems to turn into a different axis. This can create unexpected behavior and poor interpolation. Copying rotation from a single axis is really only safe when both bones involve only ever rotate on a single axis.

What's better is to think instead about where you want your neck to face, and to use a locked track constraint (locked in Y in this case) to face that point. But that requires rethinking the problem slightly.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .