Nic*_*Nic 5 c++ intersection mesh collision-detection
我需要计算三维三角网格之间的体积交点和穿透深度(例如.obj格式),但我对计算几何是个新手.
在上一篇文章(网格到网格交叉点)和我的谷歌搜索中,我找到了一些可能适合这项工作的C++库:
虽然,我不确定哪一个最适合初学者.有什么建议吗?
从版本1.1开始,libigl具有强大的网格布尔运算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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3914 次 |
最近记录: |