Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGermano Cavalcante <germano.costa@ig.com.br>2022-03-04 19:09:35 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2022-03-04 19:09:35 +0300
commited9540b33bef1a79ad4cf7f0ba7802c72f63b8d1 (patch)
tree7e47e2e885741a1e1ccf57274a4ff51734ff9594
parentb80da18f4769cfd95298d08cde1ce1c1a4a906f7 (diff)
Fix zoom shifting offset in ortho viewtmp-transform-navigate
-rw-r--r--source/blender/editors/transform/transform_generics.c21
-rw-r--r--source/blender/editors/transform/transform_input.c7
2 files changed, 18 insertions, 10 deletions
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index ca20ef58759..ed0a6a4bbb6 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -1202,8 +1202,20 @@ void calculateCenter(TransInfo *t)
* Adjusts the mouse position relative to the object. */
void tranformViewUpdate(TransInfo *t)
{
+ float zoom_prev = t->zfac;
+ float zoom_new;
if ((t->spacetype == SPACE_VIEW3D) && (t->region->regiontype == RGN_TYPE_WINDOW)) {
+ if (!t->persp) {
+ zoom_prev *= len_v3(t->persinv[0]);
+ }
+
setTransformViewMatrices(t);
+ calculateZfac(t);
+
+ zoom_new = t->zfac;
+ if (!t->persp) {
+ zoom_new *= len_v3(t->persinv[0]);
+ }
for (int i = 0; i < ARRAY_SIZE(t->orient); i++) {
if (t->orient[i].type == V3D_ORIENT_VIEW) {
@@ -1216,16 +1228,13 @@ void tranformViewUpdate(TransInfo *t)
}
}
}
-
- float fac = 1.0f;
- if (ELEM(t->spacetype, SPACE_VIEW3D, SPACE_IMAGE, SPACE_NODE)) {
- float zfac_prev = t->zfac;
+ else {
calculateZfac(t);
- fac = zfac_prev / t->zfac;
+ zoom_new = t->zfac;
}
calculateCenter2D(t);
- transform_input_update(t, fac);
+ transform_input_update(t, zoom_prev / zoom_new);
}
void calculatePropRatio(TransInfo *t)
diff --git a/source/blender/editors/transform/transform_input.c b/source/blender/editors/transform/transform_input.c
index 72a8bc752e1..38dbe742279 100644
--- a/source/blender/editors/transform/transform_input.c
+++ b/source/blender/editors/transform/transform_input.c
@@ -266,10 +266,9 @@ void initMouseInput(
mi->imval[1] = mval[1];
if ((t->spacetype == SPACE_VIEW3D) && (t->region->regiontype == RGN_TYPE_WINDOW)) {
- RegionView3D *rv3d = t->region->regiondata;
- float z = dot_m4_v3_row_z(rv3d->persmat, t->center_global) + rv3d->persmat[3][2];
- float z_ndc = 0.5f * (1.0f + (z / t->zfac));
- ED_view3d_depth_unproject_v3(t->region, mval, z_ndc, mi->imval_unproj);
+ float delta[3] = {mval[0] - center[0], mval[1] - center[1]};
+ ED_view3d_win_to_delta(t->region, delta, t->zfac, delta);
+ add_v3_v3v3(mi->imval_unproj, t->center_global, delta);
}
mi->post = NULL;