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

Differential Revision: https://developer.blender.org/D10299
This commit is contained in:
2021-02-04 10:43:57 -03:00
parent bec08621d6
commit 760a16b88b
3 changed files with 13 additions and 15 deletions

View File

@@ -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 */

View File

@@ -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);
}

View File

@@ -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 {