diff options
author | Howard Trickey <howard.trickey@gmail.com> | 2020-08-15 14:22:25 +0300 |
---|---|---|
committer | Howard Trickey <howard.trickey@gmail.com> | 2020-08-15 14:22:25 +0300 |
commit | 4d9d12a48f8db83784d6dd40b30aac7033841fa6 (patch) | |
tree | c88e87ff6b45643b0351838960bcab4be92246f3 /source/blender/blenlib | |
parent | d75c86429fc1f5a601886c8c9adc7c8c82e10b08 (diff) |
Added more debugging help.
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r-- | source/blender/blenlib/intern/boolean.cc | 16 | ||||
-rw-r--r-- | source/blender/blenlib/intern/mesh_intersect.cc | 14 |
2 files changed, 24 insertions, 6 deletions
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) { |