Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHoward Trickey <howard.trickey@gmail.com>2020-08-15 14:22:25 +0300
committerHoward Trickey <howard.trickey@gmail.com>2020-08-15 14:22:25 +0300
commit4d9d12a48f8db83784d6dd40b30aac7033841fa6 (patch)
treec88e87ff6b45643b0351838960bcab4be92246f3 /source/blender/blenlib
parentd75c86429fc1f5a601886c8c9adc7c8c82e10b08 (diff)
Added more debugging help.
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r--source/blender/blenlib/intern/boolean.cc16
-rw-r--r--source/blender/blenlib/intern/mesh_intersect.cc14
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) {