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:
parent
24e57eea43
commit
f9e994d0f4
Notes:
blender-bot
2023-02-14 10:29:30 +01:00
Referenced by commita9b53daf23
, Fix T83092: Direction of rotation with View orientation changed in 2.91 Referenced by commitc828a505c2
, Revert "Fix T83092: Direction of rotation with View orientation changed in 2.91" Referenced by commit216ebe0b73
, Fix T83092: Direction of rotation with View orientation changed in 2.91 Referenced by commitacc662ea5a
, Revert "Fix T83092: Direction of rotation with View orientation changed in 2.91" Referenced by issue #85227, Align to Transform Orientation Not Working Referenced by issue #83216, Potential candidates for corrective releases Referenced by issue #83092, Rotate with "R" key or using bpy.ops.transform.rotate produces inverted rotation. Effects Object, Mesh Edit and Pose Mode
|
@ -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,
|
||||
});
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue