[英]C++ library for mesh to mesh intersection: what is available?
我需要計算三維三角網格之間的體積交點和穿透深度(例如.obj格式),但我對計算幾何是個新手。
在上一篇文章( 網格到網格交叉點 )和我的谷歌搜索中,我找到了一些可能適合這項工作的C ++庫:
雖然,我不確定哪一個最適合初學者。 有什么建議嗎?
libigl為1.1版在具有堅固的網狀布爾運算igl/boolean/mesh_boolean.h
。 這使用了使用CGAL精確算術內核的實現或者軟木包裝器(另一個選項)。
目前,libigl還在libigl/external/cork
包含了一個修補后的軟木版本,大大提高了健壯性。
在實現libigl的布爾運算時,我發現軟木塞更快但並不總能產生正確的結果(具體來說,它無法解決所有交叉點)。
Libigl使用CGAL作為后端,與將網格轉換為CGAL的Nef_polyhedron
,進行CSG操作並轉換回網格相比,是最強大且仍然快速的。 只有結果是多方面的,才能進行最后的轉換。 相反,libigl僅使用CGAL進行精確的三角形 - 三角形交叉和2D網格划分。 正確的,非歧管輸出是沒有問題的。
Libigl的界面對於Eigen的用戶來說非常簡單和熟悉。 例如,要查找VA
行中頂點的實體網格與FA
行和另一個網格(VB,FB)
中的三角形索引之間的交集,並將輸出存儲在新網格(VC,FC)
:
#include <igl/boolean/mesh_boolean.h>
...
igl::mesh_boolean(VA,FA,VB,FB,MESH_BOOLEAN_TYPE_UNION,VC,FC);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.