Fix T83092: Direction of rotation with View orientation changed in 2.91

The change was intentional so that the orientation matrices match
(`rv3d->viewinv` becomes equal to the orientation matrix).

But, although in a projection matrix the Z axis is negative, this
should not be so from the user's point of view.

So the solution here is to negate the Z axis when the View orientation
is chosen.

This affects all modes, but is only evident for rotation.

---
Another change here is to use the final rotation value (`values_final`)
for the gizmo drawing since this value can be changed by the mode.
This commit is contained in:
Germano Cavalcante
2020-11-27 10:41:33 -03:00
parent 24e57eea43
commit f9e994d0f4
3 changed files with 5 additions and 4 deletions

View File

@@ -1331,7 +1331,7 @@ void drawDial3d(const TransInfo *t)
} }
else { else {
axis_idx = MAN_AXIS_ROT_C; axis_idx = MAN_AXIS_ROT_C;
copy_v3_v3(mat_basis[2], t->spacemtx[t->orient_axis]); negate_v3_v3(mat_basis[2], t->spacemtx[t->orient_axis]);
scale *= 1.2f; scale *= 1.2f;
line_with -= 1.0f; line_with -= 1.0f;
} }
@@ -1379,7 +1379,7 @@ void drawDial3d(const TransInfo *t)
false, false,
&(struct Dial3dParams){ &(struct Dial3dParams){
.draw_options = ED_GIZMO_DIAL_DRAW_FLAG_ANGLE_VALUE, .draw_options = ED_GIZMO_DIAL_DRAW_FLAG_ANGLE_VALUE,
.angle_delta = t->values[0], .angle_delta = t->values_final[0],
.angle_increment = increment, .angle_increment = increment,
}); });

View File

@@ -56,12 +56,12 @@ static void initShear_mouseInputMode(TransInfo *t)
/* Needed for axis aligned view gizmo. */ /* Needed for axis aligned view gizmo. */
if (t->orient[t->orient_curr].type == V3D_ORIENT_VIEW) { if (t->orient[t->orient_curr].type == V3D_ORIENT_VIEW) {
if (t->orient_axis_ortho == 0) { if (t->orient_axis_ortho == 0) {
if (t->center2d[1] > t->mouse.imval[1]) { if (t->center2d[1] < t->mouse.imval[1]) {
dir_flip = !dir_flip; dir_flip = !dir_flip;
} }
} }
else if (t->orient_axis_ortho == 1) { else if (t->orient_axis_ortho == 1) {
if (t->center2d[0] > t->mouse.imval[0]) { if (t->center2d[0] < t->mouse.imval[0]) {
dir_flip = !dir_flip; dir_flip = !dir_flip;
} }
} }

View File

@@ -552,6 +552,7 @@ short ED_transform_calc_orientation_from_type_ex(const bContext *C,
if (rv3d != NULL) { if (rv3d != NULL) {
copy_m3_m4(r_mat, rv3d->viewinv); copy_m3_m4(r_mat, rv3d->viewinv);
normalize_m3(r_mat); normalize_m3(r_mat);
negate_v3(r_mat[2]);
} }
else { else {
unit_m3(r_mat); unit_m3(r_mat);