[Bf-blender-cvs] [760a16b88b5] blender-v2.92-release: Fix for 3D view transform: flipped rotation direction for numeric input

Germano Cavalcante noreply at git.blender.org
Thu Feb 4 14:49:09 CET 2021


Commit: 760a16b88b51eee160a24b697472ec53bb452da4
Author: Germano Cavalcante
Date:   Thu Feb 4 10:43:57 2021 -0300
Branches: blender-v2.92-release
https://developer.blender.org/rB760a16b88b51eee160a24b697472ec53bb452da4

Fix for 3D view transform: flipped rotation direction for numeric input

The rotation direction was flipped recently.

This meant that rotation on a single axis gave negative results compared
with previous Blender releases.

This partially reverts a9b53daf23ba8b6cb4c930e06154ffd35522b00d.

Differential Revision: https://developer.blender.org/D10299

===================================================================

M	source/blender/editors/transform/transform_constraints.c
M	source/blender/editors/transform/transform_generics.c
M	source/blender/editors/transform/transform_gizmo_3d.c

===================================================================

diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c
index 007ef7fd5c2..2ac7e41a7c9 100644
--- a/source/blender/editors/transform/transform_constraints.c
+++ b/source/blender/editors/transform/transform_constraints.c
@@ -560,15 +560,15 @@ static void constraints_rotation_imp(TransInfo *t,
   switch (mode) {
     case CON_AXIS0:
     case (CON_AXIS1 | CON_AXIS2):
-      negate_v3_v3(r_vec, axismtx[0]);
+      copy_v3_v3(r_vec, axismtx[0]);
       break;
     case CON_AXIS1:
     case (CON_AXIS0 | CON_AXIS2):
-      negate_v3_v3(r_vec, axismtx[1]);
+      copy_v3_v3(r_vec, axismtx[1]);
       break;
     case CON_AXIS2:
     case (CON_AXIS0 | CON_AXIS1):
-      negate_v3_v3(r_vec, axismtx[2]);
+      copy_v3_v3(r_vec, axismtx[2]);
       break;
   }
   /* don't flip axis if asked to or if num input */
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index f648369bc31..b092b3e3e0b 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -428,7 +428,6 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
 
   BLI_assert(is_zero_v4(t->values_modal_offset));
 
-  bool use_orient_axis = false;
   bool t_values_set_is_array = false;
 
   if (op && (prop = RNA_struct_find_property(op->ptr, "value")) &&
@@ -453,11 +452,6 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
     }
   }
 
-  if (op && (prop = RNA_struct_find_property(op->ptr, "orient_axis"))) {
-    t->orient_axis = RNA_property_enum_get(op->ptr, prop);
-    use_orient_axis = true;
-  }
-
   if (op && (prop = RNA_struct_find_property(op->ptr, "constraint_axis"))) {
     bool constraint_axis[3] = {false, false, false};
     if (t->flag & T_INPUT_IS_VALUES_FINAL) {
@@ -466,9 +460,6 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
          * orientation is more intuitive in the Redo Panel. */
         constraint_axis[0] = constraint_axis[1] = constraint_axis[2] = true;
       }
-      else if (use_orient_axis) {
-        constraint_axis[t->orient_axis] = true;
-      }
     }
     else if (RNA_property_is_set(op->ptr, prop)) {
       RNA_property_boolean_get_array(op->ptr, prop, constraint_axis);
@@ -497,6 +488,8 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
     short orient_type_set = V3D_ORIENT_GLOBAL;
     short orient_type_matrix_set = -1;
 
+    bool use_orient_axis = false;
+
     if ((t->spacetype == SPACE_VIEW3D) && (t->region->regiontype == RGN_TYPE_WINDOW)) {
       TransformOrientationSlot *orient_slot = &t->scene->orientation_slots[SCE_ORIENT_DEFAULT];
       orient_type_scene = orient_slot->type;
@@ -508,6 +501,11 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
 
     short orient_type_default = orient_type_scene;
 
+    if (op && (prop = RNA_struct_find_property(op->ptr, "orient_axis"))) {
+      t->orient_axis = RNA_property_enum_get(op->ptr, prop);
+      use_orient_axis = true;
+    }
+
     if (op && (prop = RNA_struct_find_property(op->ptr, "orient_axis_ortho"))) {
       t->orient_axis_ortho = RNA_property_enum_get(op->ptr, prop);
     }
diff --git a/source/blender/editors/transform/transform_gizmo_3d.c b/source/blender/editors/transform/transform_gizmo_3d.c
index be29c1cda02..9c08159cf07 100644
--- a/source/blender/editors/transform/transform_gizmo_3d.c
+++ b/source/blender/editors/transform/transform_gizmo_3d.c
@@ -1322,16 +1322,16 @@ void drawDial3d(const TransInfo *t)
     if (tc->mode & CON_APPLY) {
       if (tc->mode & CON_AXIS0) {
         axis_idx = MAN_AXIS_ROT_X;
-        copy_v3_v3(mat_basis[2], t->spacemtx[0]);
+        negate_v3_v3(mat_basis[2], t->spacemtx[0]);
       }
       else if (tc->mode & CON_AXIS1) {
         axis_idx = MAN_AXIS_ROT_Y;
-        copy_v3_v3(mat_basis[2], t->spacemtx[1]);
+        negate_v3_v3(mat_basis[2], t->spacemtx[1]);
       }
       else {
         BLI_assert((tc->mode & CON_AXIS2) != 0);
         axis_idx = MAN_AXIS_ROT_Z;
-        copy_v3_v3(mat_basis[2], t->spacemtx[2]);
+        negate_v3_v3(mat_basis[2], t->spacemtx[2]);
       }
     }
     else {



More information about the Bf-blender-cvs mailing list