diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2020-11-27 16:41:33 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2020-11-27 16:41:33 +0300 |
commit | f9e994d0f463abb87761591e30c47a9613be6cca (patch) | |
tree | ece90999dc9cecbe466a7789fb08641f10ada623 /source/blender/editors/transform | |
parent | 24e57eea4325bf39617114c182430691d74c78e9 (diff) |
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.
Diffstat (limited to 'source/blender/editors/transform')
3 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/editors/transform/transform_gizmo_3d.c b/source/blender/editors/transform/transform_gizmo_3d.c index d5c6ea2dfdd..37fd8bb63c1 100644 --- a/source/blender/editors/transform/transform_gizmo_3d.c +++ b/source/blender/editors/transform/transform_gizmo_3d.c @@ -1331,7 +1331,7 @@ void drawDial3d(const TransInfo *t) } else { 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; line_with -= 1.0f; } @@ -1379,7 +1379,7 @@ void drawDial3d(const TransInfo *t) false, &(struct Dial3dParams){ .draw_options = ED_GIZMO_DIAL_DRAW_FLAG_ANGLE_VALUE, - .angle_delta = t->values[0], + .angle_delta = t->values_final[0], .angle_increment = increment, }); diff --git a/source/blender/editors/transform/transform_mode_shear.c b/source/blender/editors/transform/transform_mode_shear.c index a41c49710b9..0ccea9c396e 100644 --- a/source/blender/editors/transform/transform_mode_shear.c +++ b/source/blender/editors/transform/transform_mode_shear.c @@ -56,12 +56,12 @@ static void initShear_mouseInputMode(TransInfo *t) /* Needed for axis aligned view gizmo. */ if (t->orient[t->orient_curr].type == V3D_ORIENT_VIEW) { 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; } } 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; } } diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index b353dba9e54..031cff72095 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -552,6 +552,7 @@ short ED_transform_calc_orientation_from_type_ex(const bContext *C, if (rv3d != NULL) { copy_m3_m4(r_mat, rv3d->viewinv); normalize_m3(r_mat); + negate_v3(r_mat[2]); } else { unit_m3(r_mat); |