[Bf-blender-cvs] [e3748d7fa55] master: Fix T94145: Knife tool fails in orthographic mode

Cian Jinks noreply at git.blender.org
Tue Jan 4 21:31:00 CET 2022


Commit: e3748d7fa557d3d538ab54d94b037f56fabd263e
Author: Cian Jinks
Date:   Tue Jan 4 20:26:09 2022 +0000
Branches: master
https://developer.blender.org/rBe3748d7fa557d3d538ab54d94b037f56fabd263e

Fix T94145: Knife tool fails in orthographic mode

Calculating min and max orthographic extent forgot to convert to
worldspace coordinates.

===================================================================

M	source/blender/editors/mesh/editmesh_knife.c

===================================================================

diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c
index 3772a37ac44..6b58e1a060d 100644
--- a/source/blender/editors/mesh/editmesh_knife.c
+++ b/source/blender/editors/mesh/editmesh_knife.c
@@ -2605,6 +2605,7 @@ static bool knife_ray_intersect_face(KnifeTool_OpData *kcd,
 
 /**
  * Calculate the center and maximum excursion of mesh.
+ * (Considers all meshes in multi-object edit mode)
  */
 static void calc_ortho_extent(KnifeTool_OpData *kcd)
 {
@@ -2613,6 +2614,7 @@ static void calc_ortho_extent(KnifeTool_OpData *kcd)
   BMIter iter;
   BMVert *v;
   float min[3], max[3];
+  float ws[3];
   INIT_MINMAX(min, max);
 
   for (uint b = 0; b < kcd->objects_len; b++) {
@@ -2620,11 +2622,17 @@ static void calc_ortho_extent(KnifeTool_OpData *kcd)
     em = BKE_editmesh_from_object(ob);
 
     if (kcd->cagecos[b]) {
-      minmax_v3v3_v3_array(min, max, kcd->cagecos[b], em->bm->totvert);
+      for (int i = 0; i < em->bm->totvert; i++) {
+        copy_v3_v3(ws, kcd->cagecos[b][i]);
+        mul_m4_v3(ob->obmat, ws);
+        minmax_v3v3_v3(min, max, ws);
+      }
     }
     else {
       BM_ITER_MESH (v, &iter, em->bm, BM_VERTS_OF_MESH) {
-        minmax_v3v3_v3(min, max, v->co);
+        copy_v3_v3(ws, v->co);
+        mul_m4_v3(ob->obmat, ws);
+        minmax_v3v3_v3(min, max, ws);
       }
     }
   }



More information about the Bf-blender-cvs mailing list