在CGAL中有一个任意多面体(可以是凸的、凹的,甚至有洞的(,我如何对其面进行三角测量,以便创建OpenGL缓冲区进行渲染?
我已经看到convex_ull_3((返回了一个具有三角形面的多面体,但它不能满足我对任意多面体的要求。
头文件<CGAL/triangulate_polyhedron.h>
包含一个未记录的函数
template <typename Polyhedron>
void triangulate_polyhedron(Polyhedron& p)
例如与CCD_ 2一起工作。
多边形网格处理包提供了具有多个重载的函数CGAL::Polygon_mesh_processing::triangulate_faces
。最简单的方法是
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);
之后,polyhedron
中的所有面都是三角形。
该函数在适当的位置修改模型,因此必须使用支持删除的HalfedgeDS
。这是默认设置,但是,例如,HalfedgeDS_vector
不能。
另请参阅使用Surface_mesh
而非Polyhedron_3
的官方示例:多边形_网格_处理/三角形_面_示例.cpp