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