Revision: 74267
http://sourceforge.net/p/brlcad/code/74267
Author: starseeker
Date: 2019-10-30 16:01:46 +0000 (Wed, 30 Oct 2019)
Log Message:
-----------
More tweaks to validity reporting
Modified Paths:
--------------
brlcad/trunk/src/libbrep/cdt_mesh.cpp
brlcad/trunk/src/libbrep/cdt_ovlps.cpp
Modified: brlcad/trunk/src/libbrep/cdt_mesh.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_mesh.cpp 2019-10-30 15:53:25 UTC (rev
74266)
+++ brlcad/trunk/src/libbrep/cdt_mesh.cpp 2019-10-30 16:01:46 UTC (rev
74267)
@@ -2927,7 +2927,7 @@
ON_3dVector bdir = bnorm(tri);
if (tdir.Length() > 0 && bdir.Length() > 0 && ON_DotProduct(tdir, bdir)
< 0.1) {
if (verbose > 0) {
- std::cout << "Still have invalid normals in mesh, triangle ("
<< tri.v[0] << "," << tri.v[1] << "," << tri.v[2] << ")\n";
+ std::cout << name << " face " << f_id << ": invalid normals in
mesh, triangle (" << tri.v[0] << "," << tri.v[1] << "," << tri.v[2] << ")\n";
}
if (verbose > 1) {
bu_vls_sprintf(&fname,
"%d-invalid_normal_tri_%ld_%ld_%ld.plot3", f_id, tri.v[0], tri.v[1], tri.v[2]);
@@ -2948,7 +2948,7 @@
boundary_edges_update();
if (problem_edges.size() > 0) {
if (verbose > 0) {
- std::cout << name << " face " << f_id << ": still have problem
edges in mesh\n";
+ std::cout << name << " face " << f_id << ": problem edges in
mesh\n";
}
eret = false;
}
@@ -2963,6 +2963,11 @@
}
bu_vls_free(&fname);
+
+ if ((nret && eret) && verbose > 0) {
+ std::cout << name << " face " << f_id << ": valid\n";
+ }
+
return (nret && eret);
}
Modified: brlcad/trunk/src/libbrep/cdt_ovlps.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_ovlps.cpp 2019-10-30 15:53:25 UTC (rev
74266)
+++ brlcad/trunk/src/libbrep/cdt_ovlps.cpp 2019-10-30 16:01:46 UTC (rev
74267)
@@ -1977,8 +1977,9 @@
}
void
-check_faces_validity(std::set<std::pair<cdt_mesh::cdt_mesh_t *,
cdt_mesh::cdt_mesh_t *>> &check_pairs, int UNUSED(id))
+check_faces_validity(std::set<std::pair<cdt_mesh::cdt_mesh_t *,
cdt_mesh::cdt_mesh_t *>> &check_pairs)
{
+ int verbosity = 1;
std::set<cdt_mesh::cdt_mesh_t *> fmeshes;
std::set<std::pair<cdt_mesh::cdt_mesh_t *, cdt_mesh::cdt_mesh_t
*>>::iterator cp_it;
for (cp_it = check_pairs.begin(); cp_it != check_pairs.end(); cp_it++) {
@@ -1987,10 +1988,11 @@
fmeshes.insert(fmesh1);
fmeshes.insert(fmesh2);
}
+ std::cout << "Full face validity check results:\n";
std::set<cdt_mesh::cdt_mesh_t *>::iterator f_it;
for (f_it = fmeshes.begin(); f_it != fmeshes.end(); f_it++) {
cdt_mesh::cdt_mesh_t *fmesh = *f_it;
- std::cout << "face " << fmesh->f_id << " validity: " << fmesh->valid(1)
<< "\n";
+ fmesh->valid(verbosity);
#if 0
struct ON_Brep_CDT_State *s_cdt = (struct ON_Brep_CDT_State
*)fmesh->p_cdt;
std::string fpname = std::to_string(id) + std::string("_") +
std::string(s_cdt->name) + std::string("_face_") + std::to_string(fmesh->f_id)
+ std::string(".plot3");
@@ -2362,6 +2364,7 @@
cdt_mesh::uedge_t ue = es_it->first;
std::cout << "Edge: " << ue.v[0] << "<->" << ue.v[1] << ": " <<
es_it->second.size() << " points\n";
}
+ omesh->fmesh->valid(1);
refine_edge_vert_sets(omesh, &edge_sets);
@@ -2386,7 +2389,7 @@
if (!check_pairs.size()) return 0;
// Sanity check - are we valid?
- check_faces_validity(check_pairs, 0);
+ check_faces_validity(check_pairs);
// Report our starting overlap count
int face_ov_cnt = face_fmesh_ovlps(check_pairs);
@@ -2423,7 +2426,7 @@
int avcnt = adjust_close_verts(ocheck_pairs);
if (avcnt) {
std::cout << close_vert_checks << ": Adjusted " << avcnt << "
vertices\n";
- check_faces_validity(check_pairs, 1);
+ check_faces_validity(check_pairs);
face_ov_cnt = face_omesh_ovlps(ocheck_pairs);
std::cout << "Post vert adjustment " << close_vert_checks << " overlap
cnt: " << face_ov_cnt << "\n";
close_vert_checks++;
@@ -2447,7 +2450,7 @@
int sbfvtri_cnt = split_brep_face_edges_near_verts(&nverts, a_cdt,
ocheck_pairs, f2omap);
if (sbfvtri_cnt) {
std::cout << "Replaced " << sbfvtri_cnt << " triangles by splitting
edges near vertices\n";
- check_faces_validity(check_pairs, 2);
+ check_faces_validity(check_pairs);
face_ov_cnt = face_omesh_ovlps(ocheck_pairs);
std::cout << "Post edges-near-verts split overlap cnt: " <<
face_ov_cnt << "\n";
@@ -2455,7 +2458,7 @@
avcnt = adjust_close_verts(ocheck_pairs);
if (avcnt) {
std::cout << close_vert_checks << ": Adjusted " << avcnt << "
vertices\n";
- check_faces_validity(check_pairs, 1);
+ check_faces_validity(check_pairs);
face_ov_cnt = face_omesh_ovlps(ocheck_pairs);
std::cout << "Post vert adjustment " << close_vert_checks << "
overlap cnt: " << face_ov_cnt << "\n";
close_vert_checks++;
@@ -2486,7 +2489,7 @@
avcnt = adjust_close_verts(ocheck_pairs);
if (avcnt) {
std::cout << close_vert_checks << ": Adjusted " << avcnt << "
vertices\n";
- check_faces_validity(check_pairs, 1);
+ check_faces_validity(check_pairs);
face_ov_cnt = face_omesh_ovlps(ocheck_pairs);
std::cout << "Post vert adjustment " << close_vert_checks << "
overlap cnt: " << face_ov_cnt << "\n";
close_vert_checks++;
@@ -2500,7 +2503,7 @@
// points and tessellate.
omesh_interior_edge_verts(ocheck_pairs, nverts);
- check_faces_validity(check_pairs, 4);
+ check_faces_validity(check_pairs);
face_ov_cnt = face_omesh_ovlps(ocheck_pairs);
std::cout << "Iteration " << iterations << " post tri split overlap
cnt: " << face_ov_cnt << "\n";
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits