2017-04-22 2 views
0

J'ai défini et chargé un maillage de surface comme suggéré dans here: typedef OpenMesh::PolyMesh_ArrayKernelT</* MyTraits*/> Surface_mesh;, mais d'utiliser cet algorithme comme Triangulated Surface Mesh Segmentation je besoin d'un polyèdre aussi bien:Comment transformer un maillage de surface en un polyèdre?

typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; 
typedef CGAL::Polyhedron_3<Kernel> Polyhedron; 

Pourtant, je ne vois pas comment transformer l'un dans l'autre. Comment faire une telle chose dans CGAL?

Une démonstration simplifiée:

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> 
#include <CGAL/mesh_segmentation.h> 
#include <CGAL/Polygon_mesh_processing/connected_components.h> 
#include <CGAL/boost/graph/copy_face_graph.h> 
#include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh> 
#include <OpenMesh/Core/IO/MeshIO.hh> 
#include <iostream> 

typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; 
typedef CGAL::Polyhedron_3<Kernel> Polyhedron; 
typedef OpenMesh::PolyMesh_ArrayKernelT</* MyTraits*/> Surface_mesh; 

int main() 
{ 
    // create and read Polyhedron 
    Surface_mesh mesh_in, mesh_out; 
    Polyhedron mesh; 
    OpenMesh::IO::read_mesh(mesh_in, "data/elephant.off"); 
    CGAL::copy_face_graph(mesh_in, mesh); 

    CGAL::copy_face_graph(mesh, mesh_out); 
    if (!OpenMesh::IO::write_mesh(mesh_out, "slon.obj")) 
    { 
     std::cerr << "write error\n"; 
     exit(1); 
    } 
} 

Ce qui ne peut pas compiler en raison de

boost_1_63_0 \ boost/graphique/graph_traits.hpp (57): erreur C2039: vertex_descriptor: n'est pas membre de "OpenMesh :: PolyMesh_ArrayKernelT < OpenMesh :: DefaultTraits>"

Répondre

2

L'algorithme est w Orking directement avec cette structure de données OpenMesh, il n'y a pas besoin de faire une copie. Toutefois, si vous devez copier des structures de données, vous pouvez utiliser la fonction CGAL::copy_face_graph().

+0

Ajout d'un code de démo qui échoue à la compilation et utilise la fonction 'CGAL :: copy_face_graph()' suggérée – DuckQueen

+0

Il vous manque '#include '. – sloriot