Understanding axis locking and local coordinate systems

I'm having trouble understanding axis locking methods, specifically in regards to local coordinate systems. I have three questions about this topic.

In most explanatory threads on the internet its explained that, if you use any manipulation tool (i.e., move, scale, rotate, etc) and you use axis locking by pressing either x, y or z, the first time you press it will lock to the regarding global axis. You press the second time and it will perform the manipulative action you chose along a local coordinate system. This is also explained in the blender manual:

https://docs.blender.org/manual/en/latest/scene_layout/object/editing/transform/control/axis_locking.html#axis-locking-modes

...yeah well, it doesn't do that in my case. To figure out what's happening, I created a random object and tried extruding a face. When I extrude a face, it generally starts by scaling along some local Z axis:

When I press z for the first time, it extrudes along the global z axis. So far as explained. But when I press a second time, it doesn't extrude in the local direction again, but it releases it.

Now ok, I can see that, when faces are extruded, its kinda more intuitive if the first suggestion for the direction to extrude in is in the direction of the normal vector. This leads me to conclude that, with any selection (no matter if verticies, edges or faces) the local coordinate system is arranged in such a way that the average normal vector is considered the Z-axis.

First question to you: Is that assumption correct?

Second question to you: When I select a face on my random object (such as the one in the image above), I would like to see the local coordinate system, so that I get an idea where my manipulations are headed when I lock to a local axis. However, I never really get to see the local coordinate system. So, I have an idea where Z lies (by estimating the average normal vector of my selection), but I never really know where X and Y are going before I do anything. Is there any way to display a local coordinate system of a selection? How does blender determine how X and Y are oriented locally in the first place? Btw, if I choose "local" in the transformation orientation menu, no local coordinate system shows up either.

Third question to you: Is there maybe a possibility to create a custom coordinate system which I can use to manipulate my selections? So that, for instance, I can customize where my Z-axis is oriented and lock to it?

• Ok, I just found out that a the coordinate system that I am looking for is displayed at my selection if I (1) make a proper selection in the "transform pivot point" menu and (2) if I choose "Normal" instead of "Local" in the transformation orientation menu. But then I don't understand why everyone is talking about "local", because axis locking happens to global and normal coordinate systems then. My third question remains though.
– Raku
Jan 12, 2021 at 20:10
• With the first axis name pressing - global orientation if Global is chosen, with second - Local. If Global isn't chosen, first press - chosen orientation, second - Global. Define if you use manipulators. See for more info Blender manual about transform orientations Jan 12, 2021 at 20:56
• @MrZak The manual is wrong, no? It refers to the < 2.79 behaviour for the single/double tap. Just checking, before I post.. Jan 12, 2021 at 21:05
• @Robin for single-double click yes, looks like no one changed the explanation. I was mostly referring to what orientations actually are, though that bit requires updating Jan 12, 2021 at 21:44

You haven't been helped by a bit of outdated documentation (reported), or, IMO, by the interface.

First of all,though, the Local: orientation is the orientation of the Object axes. These can be displayed by checking Axes the Object tab > Viewport Display panel. Unfortunately the display is not 'In Front', so you may have to AltZ switch on X-ray mode, to see them. The Object is a vehicle for its mesh / curve elements, and carries all the object-level transforms.

Normal orientation reverts to Local in Object mode. In Edit mode, actually, it's not always predictable for modeling. Vertex normals may be calculated from adjacent faces, if there, or by projection from the object origin, if not. The useful, predictable normals, I think, are: from selected faces: Z will be along their mean normal. From 2 vertices or an edge, Y will be along the line between the verts. From 3 vertices, Z will be normal to the plane defined by them.

Contrary to your quote from the manual, a single tap on X, Y or Z will constrain a transform to the orientation displayed in the Transform Orientation dropdown. The second tap will revert to Global, (or from Global to Local, if Global is already selected). The third tap will release the constraint.

Custom Orientation

Following the above Normal rules, you can create your own orientation from a selection of elements by hitting the little '+' in the Orientation dropdown.

Extrude

Just to make everything more confusing, E Extrude behaves differently. You're right. The Normal orientation is assumed as the background behaviour, taking the place of Global in the transform tap-sequence described above, and the tool behaves as if you had tapped ZZ already, so the next Z releases, and the next puts you into the orientation in the dropdown.

If, in an extrude, you tap a constraint other than Z, the tool assumes you are starting the cycle from the beginning: Dropdown > Normal > Free.

The old behaviour of the constraints was as in your quote from the manual. It really seems to me that flipping the single and double-tap behaviour has opened up a can of worms. Personally I would rather have had consistency than 'convenience'.

• Good answer. I would rather that all these "normal" and "tangent" spaces would actually have consistent tangents by being something like some particular UV tangent, probably UV[0], defaulting to avg edge vector that lies in local +X when that can't be used, instead of some mystery.... Especially for particle tangents, where it just seems like you get what you get, +x or -x or +y or -y. Okay, enough bellyaching from me for today :) Dec 10, 2021 at 0:26
• @Nathan Agreed. I have my own bottle of Pepto-Bismol. Personally I think the most important thing in an interface is absolute grammatical consistency. Without it, no muscle-memory. On the whole, though, Blender is pretty good at it. Dec 10, 2021 at 8:39