Commit: 4d9d12a48f8db83784d6dd40b30aac7033841fa6
Author: Howard Trickey
Date:   Sat Aug 15 07:22:25 2020 -0400
Branches: newboolean
https://developer.blender.org/rB4d9d12a48f8db83784d6dd40b30aac7033841fa6

Added more debugging help.

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

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

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

diff --git a/source/blender/blenlib/intern/boolean.cc 
b/source/blender/blenlib/intern/boolean.cc
index 8b845325b17..5a9091fbcb5 100644
--- a/source/blender/blenlib/intern/boolean.cc
+++ b/source/blender/blenlib/intern/boolean.cc
@@ -1145,6 +1145,9 @@ static CellsInfo find_cells(const Mesh &tm, const 
TriMeshTopology &tmtopo, Patch
     for (int i : pinfo.index_range()) {
       std::cout << i << ": " << pinfo.patch(i) << "\n";
     }
+    if (dbg_level > 1) {
+      write_obj_cell_patch(tm, cinfo, pinfo, false, "postfindcells");
+    }
   }
   return cinfo;
 }
@@ -2172,7 +2175,7 @@ static Mesh extract_from_flag_diffs(const Mesh 
&tm_subdivided,
                                     const CellsInfo &cinfo,
                                     MArena *arena)
 {
-  const int dbg_level = 0;
+  constexpr int dbg_level = 0;
   if (dbg_level > 0) {
     std::cout << "\nEXTRACT_FROM_FLAG_DIFFS\n";
   }
@@ -2193,10 +2196,10 @@ static Mesh extract_from_flag_diffs(const Mesh 
&tm_subdivided,
     bool adjacent_zero_volume_cell = cell_above.zero_volume() || 
cell_below.zero_volume();
     any_zero_volume_cell |= adjacent_zero_volume_cell;
     if (cell_above.flag() ^ cell_below.flag() && !adjacent_zero_volume_cell) {
+      bool flip = cell_above.flag();
       if (dbg_level > 0) {
-        std::cout << "need tri " << t << "\n";
+        std::cout << "need tri " << t << " flip=" << flip << "\n";
       }
-      bool flip = cell_above.flag();
       Facep f = tm_subdivided.face(t);
       if (flip) {
         const Face &tri = *f;
@@ -3013,6 +3016,13 @@ Mesh boolean_trimesh(Mesh &tm_in,
   }
   propagate_windings_and_flag(pinfo, cinfo, c_ambient, op, nshapes, 
si_shape_fn);
   Mesh tm_out = extract_from_flag_diffs(tm_si, pinfo, cinfo, arena);
+  if (dbg_level > 0) {
+    /* Check if output is PWN. */
+    TriMeshTopology tm_out_topo(tm_out);
+    if (!is_pwn(tm_out, tm_out_topo)) {
+      std::cout << "OUTPUT IS NOT PWN!\n";
+    }
+  }
   if (dbg_level > 1) {
     write_obj_mesh(tm_out, "boolean_tm_output");
     std::cout << "boolean tm output:\n" << tm_out;
diff --git a/source/blender/blenlib/intern/mesh_intersect.cc 
b/source/blender/blenlib/intern/mesh_intersect.cc
index cfb7af28e23..dee1fe2bf0c 100644
--- a/source/blender/blenlib/intern/mesh_intersect.cc
+++ b/source/blender/blenlib/intern/mesh_intersect.cc
@@ -2153,7 +2153,8 @@ static void do_cdt(CDT_data &cd)
   if (dbg_level > 0) {
     std::cout << "CDT input\nVerts:\n";
     for (int i : cdt_in.vert.index_range()) {
-      std::cout << "v" << i << ": " << cdt_in.vert[i] << "\n";
+      std::cout << "v" << i << ": " << cdt_in.vert[i] << "=("
+                << cdt_in.vert[i][0].get_d() << "," << 
cdt_in.vert[i][1].get_d() << ")\n";
     }
     std::cout << "Edges:\n";
     for (int i : cdt_in.edge.index_range()) {
@@ -2174,7 +2175,8 @@ static void do_cdt(CDT_data &cd)
   if (dbg_level > 0) {
     std::cout << "\nCDT result\nVerts:\n";
     for (int i : cd.cdt_out.vert.index_range()) {
-      std::cout << "v" << i << ": " << cd.cdt_out.vert[i] << "\n";
+      std::cout << "v" << i << ": " << cd.cdt_out.vert[i] << "=("
+                << cd.cdt_out.vert[i][0].get_d() << "," << 
cd.cdt_out.vert[i][1].get_d() << "\n";
     }
     std::cout << "Tris\n";
     for (int f : cd.cdt_out.face.index_range()) {
@@ -2494,7 +2496,7 @@ static void calc_subdivided_tri_range_func(void 
*__restrict userdata,
                                            const int iter,
                                            const TaskParallelTLS *__restrict 
UNUSED(tls))
 {
-  int dbg_level = 0;
+  constexpr int dbg_level = 0;
   SubdivideTrisData *data = static_cast<SubdivideTrisData *>(userdata);
   OverlapTriRange &otr = data->overlap_tri_range[iter];
   int t = otr.tri_index;
@@ -2518,6 +2520,9 @@ static void calc_subdivided_tri_range_func(void 
*__restrict userdata,
     CDT_data cd_data = prepare_cdt_input(data->tm, t, itts);
     do_cdt(cd_data);
     data->r_tri_subdivided[t] = extract_subdivided_tri(cd_data, data->tm, t, 
data->arena);
+    if (dbg_level > 0) {
+      std::cout << "subdivide output\n" << data->r_tri_subdivided[t];
+    }
   }
 }
 
@@ -2806,6 +2811,9 @@ Mesh trimesh_nary_intersect(
   const Mesh *tm_clean = &tm_in;
   Mesh tm_cleaned;
   if (has_degenerate_tris(tm_in)) {
+    if (dbg_level > 0) {
+      std::cout << "cleaning degenerate triangles\n";
+    }
     tm_cleaned = remove_degenerate_tris(tm_in);
     tm_clean = &tm_cleaned;
     if (dbg_level > 1) {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to