如何从 vertex/index 缓冲区创建 CGAL Nef_polyhedron_3?

How to create a CGAL Nef_polyhedron_3 from a vertex/index buffer?

我想对三角网格进行凸分解。查看 CGAL 文档,凸分解对 CGAL::Nef_polyhedron_3 类型进行操作,该类型可以从 CGAL::Polyhedron_3 类型构造。但是我的输入网格表示为顶点缓冲区+索引缓冲区,如下:

struct Mesh {
    std::vector<Vector3> vertices;
    std::vector<int32_t> triangles;
};

如何将其转换为 CGAL 多面体?我知道我可以编写一个 OFF 文件并将其加载到 CGAL 多面体对象中,但如果不需要,我不想引入磁盘 IO 开销。

您的输入是多边形汤的形式,正如我们在 CGAL 中所说的那样。有一些函数可以检查它们是否真的是一个多边形网格,如果是的话,还有一些函数可以从中构造一个多边形网格,包括 Polygon_3。看here and here.