CGAL中多面体面的三角剖分

CGAL中多面体面的三角剖分,cgal,Cgal,在CGAL中有一个任意多面体(可以是凸的、凹的,甚至有洞的),我如何对它的面进行三角化,以便创建用于渲染的OpenGL缓冲区 我已经看到凸面_hull_3()返回了一个具有三角形面的多面体,但它不能满足我对任意多面体的要求。头文件包含一个没有文档记录的函数 template <typename Polyhedron> void triangulate_polyhedron(Polyhedron& p) 模板 空心三角形_多面体(多面体和p) 例如,它使用的是CGAL::精

在CGAL中有一个任意多面体(可以是凸的、凹的,甚至有洞的),我如何对它的面进行三角化,以便创建用于渲染的OpenGL缓冲区

我已经看到凸面_hull_3()返回了一个具有三角形面的多面体,但它不能满足我对任意多面体的要求。

头文件
包含一个没有文档记录的函数

template <typename Polyhedron>
void triangulate_polyhedron(Polyhedron& p)
模板
空心三角形_多面体(多面体和p)
例如,它使用的是
CGAL::精确谓词\u不精确结构\u内核

多边形网格处理包提供了带有多个重载的函数
CGAL::多边形网格处理::三角化面。最简单的办法就是

typedef CGAL::Simple_cartesian<float> Kernel;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron_3;

Polyhedron_3 polyhedron = load_my_polyhedron();
CGAL::Polygon_mesh_processing::triangulate_faces(polyhedron);
typedef CGAL::Simple_笛卡尔核;
typedef CGAL::多面体3多面体3;
多面体_3多面体=加载_my_多面体();
CGAL::多边形\网格\处理::三角化\面(多面体);
之后,
多面体
中的所有面都是三角形

该功能可就地修改模型,因此必须使用支持删除的
HalfedgeDS
。这是默认值,但是,例如,
HalfedgeDS\u vector
不起作用

另请参见使用
曲面网格
而不是
多面体3
的官方示例:

我的项目正在使用简单的笛卡尔内核。有没有一种方法可以在这个内核中使用这个函数?对不起,我是CGAL的新手…你可以试试,但结果不能保证。请看。如何将具有简单笛卡尔坐标的多面体转换为具有精确谓词的多面体?您只需更改内核即可。仅供参考:此标头已从CGAL项目中删除。引入了一个新的三角剖分包: