如何将表面网格变成多面体



我已经定义并加载了一个表面网格,如这里: typedef OpenMesh::PolyMesh_ArrayKernelT</* MyTraits*/> Surface_mesh;,尚未使用这样 算法作为三角形的表面网格分割,我需要一个多面体:

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

但是我看不到如何将一个变成另一个。如何在CGAL中做这样的事情?

简化的演示:

#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 errorn";
        exit(1);
    }
}

由于

而无法编译

boost_1_63_0 boost/grapt/graph_traits.hpp(57(:错误c2039: vertex_descriptor:不是 " OpenMesh :: Polymesh_arraykernelt&lt; OpenMesh :: DefaultTraits>"

该算法直接与此OpenMesh数据结构一起工作,无需执行副本。但是,如果您碰巧需要复制数据结构,则可以使用fonction CGAL::copy_face_graph()

相关内容

  • 没有找到相关文章

最新更新