From 760a16b88b51eee160a24b697472ec53bb452da4 Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Thu, 4 Feb 2021 10:43:57 -0300 Subject: 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 --- source/blender/editors/transform/transform_constraints.c | 6 +++--- source/blender/editors/transform/transform_generics.c | 16 +++++++--------- source/blender/editors/transform/transform_gizmo_3d.c | 6 +++--- 3 files changed, 13 insertions(+), 15 deletions(-) (limited to 'source') 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 { -- cgit v1.2.3