在CGAL中有一个任意多面体(可以是凸面,凹面,甚至是有孔),我如何对其面进行三角测量,以便我可以创建OpenGL缓冲区进行渲染?
我已经看到convex_hull_3()返回一个具有三角形面的多面体,但它不会做我想要的任意多面体。
答案 0 :(得分:3)
头文件<CGAL/triangulate_polyhedron.h>
包含未记录的函数
template <typename Polyhedron>
void triangulate_polyhedron(Polyhedron& p)
正在使用CGAL::Exact_predicates_inexact_constructions_kernel
。
答案 1 :(得分:1)
多边形网格处理包为函数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
的官方示例:
Polygon_mesh_processing/triangulate_faces_example.cpp