How to lock elbow rotation (forward kinematics)

Before answering this question please consider that an 'answer' involving IK bone constraints should go in comments. In this question I am only interested in forward kinematics.

Many humanoid models use a T-pose like this:

I often end up doing custom rigs, and need to keep them simple (I really do). To avoid unrealistic bending of the elbow while animating, I want to constrain the rotation of the elbow joint.

One method (when using forward kinematics) is switch to Eulers and lock the rotation in UI, as illustrated by this picture:

However, some artists discourage the use of a straight T pose. So we often see this:

My guess is that an axis-angle rotation may do the trick in such cases, however figuring the rotation axis would require tedious calculations; also, behaviour when rotating an axis-angle-locked joint in 3D view is not very satisfying. Finally I don't really want to use something other than quaternion rotations if I can avoid it.

So, what would be a good way to constrain rotation in such cases?

• Okay... I also want to ask about the same question with IK. But in such case rotation is locked via the bone panel (or is this method deprecated?) and I believe it would be adequate to file a separate question for this?
– user3345
Dec 14, 2014 at 11:40
• Yes this would be better to put into separate question Dec 15, 2014 at 8:46
• @Jerryno will the answer be different (testing this with IK now)
– user3345
Dec 21, 2014 at 5:13

You can use bone constraints to limit bones rotations (and other things) in pose mode:

Here is the wiki on rotation limiting. The settings depend on actual bone setup and what the bone roll values are. Sometimes the bone roll needs to be also adjusted.

This will allow only rotation in local Z axis:

The range of motion can also be adjusted by setting the angle limits for appropriate axises.

• Please add some more details on how to actually do it, an answer consisting of just a link isn't really an answer. Dec 15, 2014 at 15:42
• I think I tried this before; I don't know how to make it work for a non-straight T-pose. Have you tried?
– user3345
Dec 21, 2014 at 4:43
• Actually This seems to work when correctly configured. LimitX, LimitY set to zero or something small, Limit Z unchecked or set to something appropriate (assuming facing orientation on Z axis). Convert should be set to local space and For Transform should be checked. If you can edit your answer with appropriate info, or a screenshot, I will approve this answer.
– user3345
Dec 21, 2014 at 5:12
• Sure, I didn't know the actual setting, thanks. Dec 21, 2014 at 13:38