Extrusion Along Incorrect Local Axes #48481

Closed
opened 2016-05-21 02:17:00 +02:00 by Lawrence D'Oliveiro · 11 comments

The enclosed .blend file Extrusion Axes Example.blend 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?

The enclosed `.blend` file [Extrusion Axes Example.blend](https://archive.blender.org/developer/F313938/Extrusion_Axes_Example.blend) helps to illustrate a long-standing inconsistency in the behaviour of the **E**xtrude 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?

Changed status to: 'Open'

Changed status to: 'Open'

Added subscriber: @ldo

Added subscriber: @ldo

Added subscriber: @cheleb

Added subscriber: @cheleb

Hi @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:

  • single tap axis constraint is always in global space
  • double tap axis constraint is almost always in the space chosen in the viewport dropdown

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. :)

Hi @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: - single tap axis constraint is always in **global space** - double tap axis constraint is **almost** always in the **space chosen in the viewport dropdown** # **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 ](https://www.blender.org/manual/editors/3dview/transform/transform_control/transform_orientations.html#transform-orientations) in the manual. So, not a bug. :)

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

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.

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.

In #48481#375259, @ldo wrote:
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.

In #48481#375260, @ldo wrote:

  • 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.

> In #48481#375259, @ldo wrote: > 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. > In #48481#375260, @ldo wrote: > * 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 ](https://www.blender.org/manual/editors/3dview/transform/transform_control/pivot_point/index.html#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?

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.

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.

Changed status from 'Open' to: 'Archived'

Changed status from 'Open' to: 'Archived'
Lawrence D'Oliveiro self-assigned this 2016-05-22 08:52:24 +02:00

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

OK, I concede this is a feature, not a bug.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#48481
No description provided.