CGAL / cgal

The public CGAL repository, see the README below
https://github.com/CGAL/cgal#readme
Other
4.86k stars 1.38k forks source link

Autorefinement: handle more than intersection #3216

Open sloriot opened 6 years ago

sloriot commented 6 years ago

The autorefinement code is not able to handle more that 2 faces intersecting along an edge. Right now it is throwing an exception when this happen.

StephenRUK commented 5 years ago

Hi! While using corefine_and_compute_union, I got a failed assertion in intersection_impl.h:141 : CGAL_assertion( (size_ == 2 && (v == first || v == second) ) || v==first ); (size is 2, first and second are already set, and v is a different value)

I saw there were previously some issues regarding coplanar faces (#2958). There are many coplanar faces in my meshes, but the faces causing the exception aren't coplanar. Is it possible that my issue is related to this issue here, multiple intersections?

I must add that the union computation works fine on simple meshes I created, but not on our real-world meshes. Haven't been able to create a very basic reproduction of the issue.

CGAL v 4.13 on Windows Kernel: CGAL::Simple_cartesian Mesh: CGAL::Surface_mesh

Stack trace

mesh_union.exe!CGAL::assertion_fail(const char * expr, const char * file, int line, const char * msg) Line 170C++
mesh_union.exe!CGAL::Polygon_mesh_processing::Corefinement::Node_id_set::insert(unsigned __int64 v) Line 143C++
mesh_union.exe!CGAL::Polygon_mesh_processing::Corefinement::Intersection_of_triangle_meshes<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Surface_intersection_visitor_for_corefinement<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Face_graph_output_builder<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,std::tuple<boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::SM_index_pmap<CGAL::Point_3<CGAL::Simple_cartesian<double> >,CGAL::SM_Face_index>,CGAL::Default,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,std::tuple<CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,0> >::add_intersection_point_to_face_and_all_edge_incident_faces(CGAL::SM_Face_index f_1, CGAL::SM_Halfedge_index e_2, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm1, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm2, unsigned __int64 node_id) Line 404C++
mesh_union.exe!CGAL::Polygon_mesh_processing::Corefinement::Intersection_of_triangle_meshes<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Surface_intersection_visitor_for_corefinement<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Face_graph_output_builder<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,std::tuple<boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::SM_index_pmap<CGAL::Point_3<CGAL::Simple_cartesian<double> >,CGAL::SM_Face_index>,CGAL::Default,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,std::tuple<CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,0> >::cip_handle_case_edge(unsigned __int64 node_id, boost::unordered::unordered_set<CGAL::SM_Face_index,boost::hash<CGAL::SM_Face_index>,std::equal_to<CGAL::SM_Face_index>,std::allocator<CGAL::SM_Face_index> > * fset, CGAL::SM_Halfedge_index e_1, CGAL::SM_Halfedge_index edge_intersected, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm1, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm2) Line 420C++
mesh_union.exe!CGAL::Polygon_mesh_processing::Corefinement::Intersection_of_triangle_meshes<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Surface_intersection_visitor_for_corefinement<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Face_graph_output_builder<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,std::tuple<boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::SM_index_pmap<CGAL::Point_3<CGAL::Simple_cartesian<double> >,CGAL::SM_Face_index>,CGAL::Default,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,std::tuple<CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,0> >::cip_handle_case_vertex(unsigned __int64 node_id, boost::unordered::unordered_set<CGAL::SM_Face_index,boost::hash<CGAL::SM_Face_index>,std::equal_to<CGAL::SM_Face_index>,std::allocator<CGAL::SM_Face_index> > * fset, CGAL::SM_Halfedge_index edge, CGAL::SM_Halfedge_index vertex_intersected, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm1, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm2) Line 467C++
mesh_union.exe!CGAL::Polygon_mesh_processing::Corefinement::Intersection_of_triangle_meshes<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Surface_intersection_visitor_for_corefinement<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Face_graph_output_builder<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,std::tuple<boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::SM_index_pmap<CGAL::Point_3<CGAL::Simple_cartesian<double> >,CGAL::SM_Face_index>,CGAL::Default,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,std::tuple<CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,0> >::handle_coplanar_case_VERTEX_VERTEX(CGAL::SM_Halfedge_index v_1, CGAL::SM_Halfedge_index v_2, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm1, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm2, unsigned __int64 node_id, bool is_new_node) Line 536C++
mesh_union.exe!CGAL::Polygon_mesh_processing::Corefinement::Intersection_of_triangle_meshes<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Surface_intersection_visitor_for_corefinement<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Face_graph_output_builder<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,std::tuple<boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::SM_index_pmap<CGAL::Point_3<CGAL::Simple_cartesian<double> >,CGAL::SM_Face_index>,CGAL::Default,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,std::tuple<CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,0> >::compute_intersection_of_coplanar_faces(unsigned __int64 & current_node, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm1, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm2, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > & vpm1, const CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > & vpm2) Line 587C++
mesh_union.exe!CGAL::Polygon_mesh_processing::Corefinement::Intersection_of_triangle_meshes<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Surface_intersection_visitor_for_corefinement<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::Face_graph_output_builder<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > >,std::tuple<boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >::Property_map<CGAL::SM_Vertex_index,CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::SM_index_pmap<CGAL::Point_3<CGAL::Simple_cartesian<double> >,CGAL::SM_Face_index>,CGAL::Default,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,std::tuple<CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Ecm_bind<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,CGAL::Polygon_mesh_processing::Corefinement::No_mark<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > > >,CGAL::Polygon_mesh_processing::Corefinement::Default_visitor<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >,0> >::operator()<CGAL::Emptyset_iterator>(CGAL::Emptyset_iterator output, bool throw_on_self_intersection, bool build_polylines) Line 1315C++
mesh_union.exe!CGAL::Polygon_mesh_processing::corefine_and_compute_boolean_operations<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property>,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property>,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property>,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property>,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property>,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property> >(CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm1, CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm2, const std::array<boost::optional<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > *>,4> & output, const CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property> & np1, const CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property> & np2, const std::tuple<CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property>,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property>,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property>,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property> > & nps_out) Line 520C++
mesh_union.exe!CGAL::Polygon_mesh_processing::corefine_and_compute_union<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > >,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property>,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property>,CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property> >(CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm1, CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm2, CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm_out, const CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property> & np1, const CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property> & np2, const CGAL::cgal_bgl_named_params<bool,enum CGAL::internal_np::all_default_t,boost::no_property> & np_out) Line 656C++
mesh_union.exe!CGAL::Polygon_mesh_processing::corefine_and_compute_union<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > >(CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm1, CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm2, CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> > > & tm_out) Line 1042C++
...
sloriot commented 5 years ago

This issue has nothing to do with your issue, you should open a new one (I'll probably remove your comment to avoid confusion). Change Simple_cartesian to CGAL::Exact_predicates_inexact_constructions_kernel.

StephenRUK commented 5 years ago

Simply changing to the Epick kernel did in fact solve the assertion error. Now in some situations the meshes are merged fine, occasionally it returns false. Thanks already! I'll report a separate issue if anything (re-)appears.

lrineau commented 5 years ago

@sloriot You can "hide" comments in an issue/pr, and there is even a reason named "off topic".