0
$\begingroup$

I've been grappling for a while with rotations in python and was driven crazy until I realized a strange behavior of the 3D View UI when it comes to the orthogonal views you get to using the "1", "3" and "7" numpad keys.

What I eventually noticed is that X and Z views (keys "3" and "7") show the scene from a point of view oriented from the positive side to negative side of the axis while the Y view (key "1") is oriented from the negative side to the positive.

This implies a weird behavior when rotating objects:

In Y view, when you rotate the object you get SAME ANGLES in the upper left info bar and in the Euler Y field in the Item Toolbar whether or not you force the rotation around the Y axis with the Y key

In X and Z views you get OPPOSITE ANGLES unless you force the global rotation with the X and Z keys.

Does someone know the reasons for this seemingly inconsistent choice?

$\endgroup$

2 Answers 2

2
$\begingroup$

Blender and 3DS Max use a right-handed Z-up coordinate system. This is historically based on architecture where you have a floor plan which uses a 2D coordinate system with +X pointing to the right and +Y to the top, but when it's lying flat on a table it's not upwards, but pointing away from you to the back of the table. If you now build something up you get the third dimension, in this case +Z pointing upwards.

floor plan orientation

And if you now imagine you have built something up like a house in the following example, you are looking at the front, the right is to the right of course and the roof is at the top. So if you press Numpad 7 which is called "Top" view, you would expect to see the house from above and look at the roof. +X and +Y are pointing to the right and top because that's how you draw the floor plan (or how you draw a coordinate system in maths). When you press Numpad 1 for "Front" view it makes sense that you look at the house on the front door - but you are then in -Y direction from the house, the house epxands into +Y from the front. +X is of course to the right, and pressing Numpad 3 lets you look at the right side.

top, front and right view

This is why the 2D views are aligned the way they are. Now the confusing thing for you is, why is rotating +30° in front view resulting in +30° on the Y axis while the other views are inverted and get you -30° on X or Z axis when you do not specify an axis?

That is because there is a misconception of how the rotation in the viewport works. The rotation in the 3D Viewport without axis locking is aligned to view, not to a global axis. And not only in 2-dimensional orthographic view, but also in perspective view from different angles.

And in the view-aligned rotation, a positive angle is always rotating clockwise, while negative angles are rotating counter-clockwise.

rotation aligned to view

Only when you type a letter to lock the rotation to a certain axis, it is rotated on this and sets the value to positive or negative as given and not according to view. However, since the axis locking is dependent on the Transform Orientation set in the top menu which can be Global, Local Normal etc. or even a custom orientation, it is not guaranteed that the rotation value is corresponding to the one showing on the item's properties afterwards.

$\endgroup$
2
  • $\begingroup$ Since CAD and 3D software is born as a facility for tasks previously made by hand, I realize that the presentation has been conceived to strictly recall manual drawing. From the visual point of view that looks as the natural evolution of the tools. It's when it comes to "numbers" that this visual symmetry seems to imply an asymmetry (different angles resulting from same manual actions). Anyway, selecting orthogonal views always from negative to positive direction makes numbers to symmetrize, at cost of using CRTL when selecting [Numpad 1]. $\endgroup$
    – Antonio
    Commented Dec 19, 2023 at 16:58
  • $\begingroup$ @Antonio As you say yourself, it seems to imply... because of the misconception that rotating in orthogonal view would rotate the object on the global axis which just happens to be oriented the same way as the view direction. Then it seems contradictory that rotating a positive angle results in a negative angle on that axis. But in any arbitrary view like for example diagonally upwards from behind left side below the object, a positive rotation results in completely different angles on most likely all three axes instead of a single orthogonal axis. $\endgroup$ Commented Dec 19, 2023 at 19:42
1
$\begingroup$

The selection of views is based on obtaining the appropriate axis for grabbing (moving), not for rotating.

In all three views, one axis is oriented upwards and the other is directed towards the right. If you have two views (right/left and front/bottom) with the z-axis pointing upwards, it is not possible to align both views so that the second axis is directed towards the right and the third axis is facing in the same direction. Consequently, if the third axis is consistently set to face the viewer, the second axis will be directed towards the left in one of the views, which can confuse users:

enter image description here Here you have consistency in rotation, but why X axis pointed left?

Even if you try to switch between left/right-handed, Z-up/Y-up coordinate systems, you will always face this problem

The most common view that you can add is this:

enter image description here

You have consistency in rotation and grabbing(moving), but Z is pointed right, which is ridiculous

$\endgroup$
1
  • $\begingroup$ I should have noticed from the start that UI shows, in the center of the View presets, an (X) for [Numpad 3], a (Z) for [Numpad 7] and a !!! (-Y) !!! for [Numpad 1]. I only realized that trying to correctly rotate objects in Python. $\endgroup$
    – Antonio
    Commented Dec 19, 2023 at 17:06

You must log in to answer this question.

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