在CGAL中有一個任意的多面體(一個可以是凸的,凹的或者甚至有孔的)我怎樣才能對它的面進行三角剖分,以便我可以創建OpenGL緩衝區進行渲染?CGAL中的三角形多面體的面孔
我已經看到了convex_hull_3()返回一個具有三角面的多面體,但它不會做我想要的任意多面體。
在CGAL中有一個任意的多面體(一個可以是凸的,凹的或者甚至有孔的)我怎樣才能對它的面進行三角剖分,以便我可以創建OpenGL緩衝區進行渲染?CGAL中的三角形多面體的面孔
我已經看到了convex_hull_3()返回一個具有三角面的多面體,但它不會做我想要的任意多面體。
頭文件<CGAL/triangulate_polyhedron.h>
包含非記錄功能
template <typename Polyhedron>
void triangulate_polyhedron(Polyhedron& p)
其正在與CGAL::Exact_predicates_inexact_constructions_kernel
例如。
該多邊形網格處理包提供了功能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
我的項目與Simple_cartesian內核工作。有沒有一種方法可以在該內核中使用該功能?對不起,我是CGAL的新手...... –
zync
你可以試試,但結果不能保證。請參閱http://www.cgal.org/FAQ.html#inexact_NT。 – sloriot
如何將Simple_cartesian的多面體轉換爲Exact_predicates_inexact_constructions_kernel的多面體? – zync