[Bf-blender-cvs] [81410044bcd] newboolean: Add debugging to face merge.

Howard Trickey noreply at git.blender.org
Fri Aug 7 15:26:07 CEST 2020


Commit: 81410044bcd1ba8bca59bf88eedae5a6ed6ee037
Author: Howard Trickey
Date:   Fri Aug 7 09:25:36 2020 -0400
Branches: newboolean
https://developer.blender.org/rB81410044bcd1ba8bca59bf88eedae5a6ed6ee037

Add debugging to face merge.

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

M	source/blender/blenlib/intern/boolean.cc

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

diff --git a/source/blender/blenlib/intern/boolean.cc b/source/blender/blenlib/intern/boolean.cc
index ebe0aced1f6..6ce0b88f50b 100644
--- a/source/blender/blenlib/intern/boolean.cc
+++ b/source/blender/blenlib/intern/boolean.cc
@@ -2227,7 +2227,7 @@ static std::ostream &operator<<(std::ostream &os, const FaceMergeState &fms)
 
 static void init_face_merge_state(FaceMergeState *fms, const Vector<int> &tris, const Mesh &tm)
 {
-  const int dbg_level = 0;
+  constexpr int dbg_level = 0;
   /* Reserve enough faces and edges so that neither will have to resize. */
   fms->face.reserve(tris.size() + 1);
   fms->edge.reserve((3 * tris.size()));
@@ -2246,11 +2246,18 @@ static void init_face_merge_state(FaceMergeState *fms, const Vector<int> &tris,
     mf.vert.append(tri[2]);
     mf.orig = tri.orig;
     int f = static_cast<int>(fms->face.append_and_get_index(mf));
+    if (dbg_level > 1) {
+      std::cout << "appended MergeFace for tri at f = " << f << "\n";
+    }
     for (int i = 0; i < 3; ++i) {
       int inext = (i + 1) % 3;
       MergeEdge new_me(mf.vert[i], mf.vert[inext]);
       std::pair<int, int> canon_vs(new_me.v1->id, new_me.v2->id);
       int me_index = fms->edge_map.lookup_default(canon_vs, -1);
+      if (dbg_level > 1) {
+        std::cout << "new_me = canon_vs = " << new_me.v1 << ", " << new_me.v2 << "\n";
+        std::cout << "me_index lookup = " << me_index << "\n";
+      }
       if (me_index == -1) {
         double3 vec = new_me.v2->co - new_me.v1->co;
         new_me.len_squared = vec.length_squared();
@@ -2260,22 +2267,48 @@ static void init_face_merge_state(FaceMergeState *fms, const Vector<int> &tris,
         fms->edge.append(new_me);
         me_index = static_cast<int>(fms->edge.size()) - 1;
         fms->edge_map.add_new(canon_vs, me_index);
+        if (dbg_level > 1) {
+          std::cout << "added new me with me_index = " << me_index << "\n";
+          std::cout << "  len_squared = " << new_me.len_squared << "  orig = " << new_me.orig
+                    << ", is_intersect" << new_me.is_intersect
+                    << ", dissolvable = " << new_me.dissolvable << "\n";
+        }
       }
       MergeEdge &me = fms->edge[me_index];
+      if (dbg_level > 1) {
+        std::cout << "retrieved me at index " << me_index << ":\n";
+        std::cout << "  v1 = " << me.v1 << " v2 = " << me.v2 << "\n";
+        std::cout << "  dis = " << me.dissolvable << " int = " << me.is_intersect << "\n";
+        std::cout << "  left_face = " << me.left_face << " right_face = " << me.right_face << "\n";
+      }
       if (me.dissolvable && tri.edge_orig[i] != NO_INDEX) {
+        if (dbg_level > 1) {
+          std::cout << "reassigning orig to " << tri.edge_orig[i] << ", dissolvable = false\n";
+        }
         me.dissolvable = false;
         me.orig = tri.edge_orig[i];
       }
       if (me.dissolvable && tri.is_intersect[i]) {
+        if (dbg_level > 1) {
+          std::cout << "reassigning dissolvable = false, is_intersect = true\n";
+        }
         me.dissolvable = false;
         me.is_intersect = true;
       }
       /* This face is left or right depending on orientation of edge. */
       if (me.v1 == mf.vert[i]) {
+        if (dbg_level > 1) {
+          std::cout << "me.v1 == mf.vert[i] so set edge[" << me_index << "].left_face = " << f
+                    << "\n";
+        }
         BLI_assert(me.left_face == -1);
         fms->edge[me_index].left_face = f;
       }
       else {
+        if (dbg_level > 1) {
+          std::cout << "me.v1 != mf.vert[i] so set edge[" << me_index << "].right_face = " << f
+                    << "\n";
+        }
         BLI_assert(me.right_face == -1);
         fms->edge[me_index].right_face = f;
       }



More information about the Bf-blender-cvs mailing list