Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] make_mesh_3 with manifold() specified outputing non-manifold mesh

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] make_mesh_3 with manifold() specified outputing non-manifold mesh


Chronological Thread 
  • From: "Sebastien Loriot (GeometryFactory)" <>
  • To:
  • Subject: Re: [cgal-discuss] make_mesh_3 with manifold() specified outputing non-manifold mesh
  • Date: Mon, 5 Oct 2020 18:04:48 +0200
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-phdr: 9a23:qVxmDhRa96OBMAKUdLKjGrwZddpsv+yvbD5Q0YIujvd0So/mwa6zbRaN2/xhgRfzUJnB7Loc0qyK6v+mBTZLsMrJmUtBWaQEbwUCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6OPn+FJLMgMSrzeCy/IDYbxlViDanbr5+MRe7oR/eu8UIjodvLqk8wQbVr3VVfOhb2XlmLk+JkRbm4cew8p9j8yBOtP8k6sVNT6b0cbkmQLJBFDgpPHw768PttRnYUAuA/WAcXXkMkhpJGAfK8hf3VYrsvyTgt+p93C6aPdDqTb0xRD+v4btnRAPuhSwaMTMy7WPZhdFqjK9DvRyvuRJ/zY7Xbo+bOvVxcaHScs8VS2daQsZcVTZMDp+gY4YBDecMO/tToYnnp1sJqBuzHQegCv7xxTBTnHD2xrE60+U/HgHAwQcuGdUOsG7VrNXyKKcZTOS5wqjWwjXEavNZxyv96JLIcx4hu/6DQa5wcc3LyUgvEg/JgEibpIv+PzOR0eQNqWmb7+18Ve61jm4nrxp8ojeqxsg2i4nJgpgZxUzD9SV82Ys4I8CzR0Fnb9C+CpRQqz2aOJVsQsMkW2xkpiU3x7IatZOlfCUHy5spyhDQZfGJboSF/wzvWeePLTp2mn9pZq+ziRi9/Eau1+DxWdW43VhKoydZnNfAqm0A2hrO4caJTft9+12u2TeJ1w3L7OFLO1s7mrHfK5E/2LI/ip0TsUHFEyTrm0v2lLebels49uWs8ejqYbXrqoWCO4Nqlw3yKKsjl8OnDegmKAcCQ3WX9OGi27H/50L0RatGguErnqTcvp3VP9oXqrK8DgNL0Ysu6AqwAjKp3dsCh3YKKFdIdA+JgoXqIV7DJf74APW9jlmuljpg2urIMaf7AprXK3jOiLfhcqh5605b0AczyMpQ55NQCr0YLvPzQFL9uMXWDhI2PAG42ennCNJ61oMRXWKAHLWVP7/VsV+N/u4vIu+Ma5EJuDvlNfQp+/rjgWU6lFIdZ6Wlw4UbZG2iEvlpLEiVeX/sjc0AEWcOsAo+VuvqiFiaXD5IY3ayWLg85jA8CIK6F4vDQ4StjaeO3Ce+BJJWZ2RGBkqQHnfvcoWIQ+0MZz6KIs99jjwEUqCsRJMu1R60sA/20qdoLuvP+iIEqJLjz8N16vbIlRAy8Dx0F96S33uMT2FyhGMIRiU50LpxoUxnmR+/1v1zjPVcUNBS/PhUSRwSNJjGzuU8BcqhdBjGe4LDc1usS866ADw3BvY22d4Jfw49NNilix3fxTuECrQJkKaaRdZ8prnY2GLwINo7znLu26wojl1gScxKYz71zpVj/hTeUtaa236SkLynIPxFgXz9sVybxG/Lh3l2FQ59VaKfACIab0rS6MvjvwbME+PoBrMgPQ9Mj8WFL/kSM4y7vRB9XP7mfe/mTSe0kma0CwyPw+rVPoXvcmQZmi7aDRpdylxBzTO9LQE7QxyZjSfGFjU3TADgZkrt9a91r3bpFkI=

Could you dump a problematic mesh and send it to me?

put right after the call to facets_in_complex_3_to_triangle_mesh()
std::ofstream("scaffold.off") << std::setprecision(17) scaffold;

Thanks!

Sebastien.

On 10/5/20 5:52 PM, Kim ( via cgal-discuss Mailing List) wrote:
Hi everyone,

I am using make_mesh_3 to mesh an implicit domain and subsequently
extracting the surface triangulation, clipping it and doing some other
post-processing.

typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef CGAL::Parallel_tag Concurrency_tag;
typedef CGAL::Polyhedron_3<Kernel, CGAL::Polyhedron_items_with_id_3>
PolygonMesh;
typedef CGAL::Labeled_mesh_domain_3<Kernel> Implicit_domain;
typedef CGAL::Mesh_triangulation_3<Implicit_domain, CGAL::Default,
Concurrency_tag>::type VTr;
typedef CGAL::Mesh_complex_3_in_triangulation_3<VTr> C3t3;
typedef CGAL::Mesh_criteria_3<VTr> Mesh_criteria;

Implicit_domain domain = Implicit_domain::create_implicit_mesh_domain(
myImplicitFunction, boundBox);

Mesh_criteria criteria(CGAL::parameters::facet_angle = facetAngle,
CGAL::parameters::facet_size = facetSize,
CGAL::parameters::facet_distance = facetDistance);

C3t3 c3t3 = CGAL::make_mesh_3<C3t3>(domain, criteria,
CGAL::parameters::manifold())

PolygonMesh scaffold;
CGAL::facets_in_complex_3_to_triangle_mesh(c3t3, scaffold);

// Clip mesh
PolygonMesh outer_shell;
CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh(points,
polygons, outer_shell);

CGAL::Polygon_mesh_processing::remove_isolated_vertices(scaffold); //
Temporary fix to bug!!!
if( CGAL::Polygon_mesh_processing::clip(scaffold, outer_shell,
CGAL::parameters::clip_volume(true).use_compact_clipper(true)) == false)
std::cout << "\n WARNING: Scaffold and clipper have only been
corefined!" << std::endl;

// Remove all but the largest component
CGAL::Polygon_mesh_processing::keep_largest_connected_components(scaffold,
1);

// Reorient all faces coherently
if (CGAL::is_closed(scaffold) == true) {
CGAL::Polygon_mesh_processing::orient(scaffold,
CGAL::parameters::outward_orientation(true));
} else {
std::cout << "\n WARNING: Polygon has border edges!" << std::endl;
}

The problem I am experiencing is that although I have specified I want a
manifold mesh make_mesh_3 does not seem to always output one. Some inputs
seem to always result in a non-manifold mesh while others may result in a
non-manifold mesh occasionally without any change in inputs. I get the same
behavior regardless of whether I use mesh optimizations or disable them. Am
I doing something incorrectly?

Kind regards,
Kim



--
Sent from: http://cgal-discuss.949826.n4.nabble.com/




Archive powered by MHonArc 2.6.19+.

Top of Page