Why is Y and Z axis flipped from pose and object mode?


Empty scene, add bone, show Axis -> Y is “UP”??? Usually Z is up.

Anyway, if I (in edit mode) rotate the bone -90d along X, Z is up, X is X and Y is Y - all good.

Though, when I go back to pose mode and adjust even this simple one-bone rig accordingly, the damned thing gets turned upside down yet again!!! (Z becomes Y).

Why? And how to fix it?

I want my bones to have the same XYZ values as everything else in Blender. I did a search on Blenderartists, and I can see everybody else is having the same problem.

The question is: Why did the developers flip the X and Y for the bones?

Its rather confusing when animating… I’ll have to get used to the “Y is up/down” when everything else in Blender is Z is up/down.

No real reason. You have to start with the decision to orient the Z axis as they did, with Z-up. That betrays an architectural bias: your camera, which everywhere always uses Z as depth, is imagined pointing downward, a birds-eye view, typical to architecture.

But you don’t tend to gives houses armature modifiers. You give characters armature modifiers. And you don’t look at characters from a birds-eye perspective, and the way that their bones are oriented are primarily up down or left right, not in out.

Of course, that doesn’t explain why they chose Y as the “length” vector of a bone instead of Z. Possibly to maintain compatibility with some other standard?

But it really doesn’t matter, and the things you’re complaining about aren’t a big deal to the extent that they make sense.

When you transform a bone, it will act the same in edit and pose mode. The one exception to that is in “local” orientation, where confusingly, local orientation in edit mode uses the local space of the armature, while local space in pose mode uses the local space of the bone. Yes, that was probably a bad idea.

If you want to move a bone in world space axes, use world space. If you want to move it in its local space, use normal space. In either edit or pose mode.

If you want a bone that has the same world space orientation as local space orientation, go into edit mode and rotate it -90 degrees in the X axis.

Would it be better if that orientation was the default new bone? Maybe.

Ideal, to my mind, is to go back to the beginning and question why the birds eye view was adopted as a standard in the first place. It doesn’t matter very much, mostly for viewport orbiting, and it would be nice if orbit poles could be specified in user preferences.

Instead, you may want to get used to the “Y is forward/back”. Because that’s how it is, for objects and for individual bones. A given armature may not even have a strict up or down, or the up/down for a given joint would not coincide with the world. In that way, using the bone’s length as its direction makes more sense.

The solution to my problem is to be very careful when rigging, that your XYZ-axis for the bones are pointing in the right directions. You may have to rotate them (so the bones are horizontal rather than vertical) especially for the main bones you’re going to move around, like the Master/Root bone. Also, bringing up the CTRL+N panel in bone edit mode may help.

Reviving this topic.

Here is a video to explain what I think is happening: