Page MenuHome

Enabling Normal option for Orientation not working
Closed, ResolvedPublic

Description

System Information
Operating system: Windows-10-10.0.18362-SP0 64 Bits
Graphics card: AMD Radeon(TM) 535 ATI Technologies Inc. 4.5.13540 Core Profile Context 25.20.14002.1

Blender Version
Broken: version: 2.92.0 Alpha , commit date: 2020-12-21 12:33, hash: rBd2239b685c56

Short description of error
Cannot enable Normal option for Orientation

Exact steps for others to reproduce the error

  1. Add -> Mesh -> Monkey
  2. Object -> Transform -> Align to Transform Orientation
  3. Orientation -> Normal

On performing following steps , Orientation will set to Local instead of Normal

Event Timeline

I can confirm this in the latest beta. Looking at the code it seems as though this is intended:

case V3D_ORIENT_NORMAL: {
  if (obedit || (ob && ob->mode & OB_MODE_POSE)) {
    ED_getTransformOrientationMatrix(C, ob, obedit, pivot_point, r_mat);
    return V3D_ORIENT_NORMAL;
  }
  /* no break we define 'normal' as 'local' in Object mode */
  ATTR_FALLTHROUGH;
}

This was changed in rB515e8e4 by @Germano Cavalcante (mano-wii) . Could you comment on this?

Normal orientation in object mode has always been local.
Before, it just wasn't so explicit.

I see two solutions for this:

  • Hide "not possible" orientations.
  • Return the chosen orientation even with another one being used (this is how it worked before).

I had seen the code before reporting the issue . Moving to next case ( V3D_ORIENT_LOCAL) with no break statement in previous case(V3D_ORIENT_NORMAL) looks very uncommon (reading comment though) . If it is not an issue , we can close this this task .

Although it is not really a bug, it is in fact strange that the operator returns another orientation than the one chosen.
One of the reasons for this change was to better inform the orientation that is being used in the header.
But since the old versions did not do this, I think it is better to return to the previous behavior.

(Fix coming soon).