Extrusion Along Incorrect Local Axes
Closed, InvalidPublic

Description

The enclosed .blend file

helps to illustrate a long-standing inconsistency in the behaviour of the Extrude function. For clarity, I have assigned colour-coded materials to the faces of the default cube: red for those perpendicular to the X-axis, green for those perpendicular to the Y-axis, and blue for those perpendicular to the Z-axis.

Feel free to verify that the object has no net object transformation applied. In particular, the local and global X, Y and Z coordinate axes correspond.

TAB into Edit mode. Note that you are already in face-select mode. Try the following:

  • select a red face, then EKEY XKEY to extrude along the global X-axis.
  • select a green face, then EKEY YKEY to extrude along the global Y-axis.
  • select a blue face, then EKEY ZKEY to extrude along the global Z-axis.

All these work fine. Now try the following:

  • select a red face, then EKEY XKEY XKEY to extrude along the local X-axis.
  • select a green face, then EKEY YKEY YKEY to extrude along the local Y-axis.
  • select a blue face, then EKEY ZKEY ZKEY to extrude along the local Z-axis.

For me, the only one that works properly is the last one. The first one moves along the Y- rather than the X- axis, and the second one moves along the Z- rather than the Y-axis.

However, the following do work:

  • select a red face, then EKEY ESC. Then GKEY XKEY XKEY to move the newly-extruded face along the local X-axis.
  • select a green face, then EKEY ESC. Then GKEY YKEY YKEY to move the newly-extruded face along the local Y-axis.
  • select a blue face, then EKEY ESC. Then GKEY ZKEY ZKEY to move the newly-extruded face along the local Z-axis.

Do you see the inconsistency?

Details

Type
Bug

Hi @Lawrence D'Oliveiro (ldo),

this is because the extrude operator automatically sets the second transform orientation (double tapping) to normal mode, which is a sensible thing to do for extrusions. You can verify this by looking at the status message on the left in the viewport header after double tapping an axis key.

It says something along the lines of:

D: NUMBER (NUMBER) along SPACE AXIS

The reason it works after pressing ESC and double tapping an axis is that you are now doing a standard translation, which operates under the following rules:

  1. single tap axis constraint is always in global space
  2. double tap axis constraint is almost always in the space chosen in the viewport dropdown
  3. exception to the rule above is when the dropdown is set to global space - the second space in this case is set to local

Also see the first paragraph in under Transform Orientations in the manual.

So, not a bug. :)

Why would this apply to X and Y, but not Z?

Here is something else to try:

  • select a red face, then EKEY SKEY SHIFT-XKEY SHIFT-XKEY. The status message says “locking normal X”, but only allows you to scale the extrusion along the Z-axis.
  • select a green face, then EKEY SKEY SHIFT-YKEY SHIFT-YKEY. The status message says “locking normal Y”, but only allows you to scale the extrusion along the X-axis.
  • select a blue face, then EKEY SKEY SHIFT-ZKEY SHIFT-ZKEY. The status message says “locking normal Z”, but this time scaling of the extrusion happens along both X- and Y-axes.

So this time the message is consistent, but the behaviour still is not.

Why would this apply to X and Y, but not Z?

Because the extrusion operator is already locked in Z (normal space) when you press the EKEY. Pressing Z again releases the Z constraint. Again, see the status message in the header.

  • select a red face, then EKEY SKEY SHIFT-XKEY SHIFT-XKEY. The status message says “locking normal X”, but only allows you to scale the extrusion along the Z-axis.
  • select a green face, then EKEY SKEY SHIFT-YKEY SHIFT-YKEY. The status message says “locking normal Y”, but only allows you to scale the extrusion along the X-axis.
  • select a blue face, then EKEY SKEY SHIFT-ZKEY SHIFT-ZKEY. The status message says “locking normal Z”, but this time scaling of the extrusion happens along both X- and Y-axes.

Works exactly as it says for me.

EKEY SKEY SHIFT-XKEY SHIFT-XKEY for example says it is locking the scale of the X axis in normal space. So the scaling can only happen on the Y and Z axis in normal space. And because the Pivot Point lies exactly on the the center of the selected face, scaling the Z axis doesn't change anything. As a result you only see change of scale on the Y axis in normal space.
When you change the Pivot Point to 3D cursor before you press those keys, you see that the scaling now also affects the Z axis in normal space.

So why does the Z axis behave differently from the others?

EKEY SKEY SHIFT-ZKEY SHIFT-ZKEY says it is locking the scale to the Z axis in normal space. So why does it not scale along Z in normal space?

OK, I think I’m beginning to understand now. Regardless of your choice of transform orientation, EKEY always starts out in Normal transformation mode. If you want your choice of transform orientation, you must ESC and then transform the extruded vertices in the usual way.

Lawrence D'Oliveiro (ldo) closed this task as "Invalid".May 22 2016, 8:52 AM
Lawrence D'Oliveiro (ldo) claimed this task.

OK, I concede this is a feature, not a bug.