3d - CGAL 网格体相交/碰撞

标签 3d collision-detection cgal

我希望在我的跟踪管道中有一个碰撞检测模块,用于检测两个不同的网格体何时碰撞/相互渗透,或者是否存在铰接网格体的自渗透。根据渗透的深度,应该对这种现象进行惩罚。为此,我应该获取碰撞面/顶点的列表。

在检查了几个选项后,我决定开始使用 CGAL .

this link有一个有趣的答案指出了一些例子。 ( thisthis )。这些示例使用 AABB(轴对齐边界框),这是针对非刚性网格提出的方法,因为需要频繁更新它们。对于自相交的情况,示例很清楚,但以下内容对我来说不是很清楚:

  • 除了为每个三角形创建一个 B.Box 之外,我猜想在幕后没有创建树结构来加速搜索过程。是这样吗?如果是,有什么提示吗?
  • 如果有 2 个单独的网格,我想将所有三角形/盒子合并到一个向量中并遵循示例并不好(尽管提到 here 作为解决方案,但听起来不太优雅)。有什么好的练习建议吗?应该混合these例如,通过创建三角形/盒子树?尽管对于 AABB 树,提到:

Note that this component is not suited to the problem of finding all intersecting pairs of objects. We refer to the component Intersecting Sequences of dD Iso-oriented Boxes which can find all intersecting pairs of iso-oriented boxes.

最佳答案

  1. 函数CGAL::box_intersection_d动态创建线段树,以加快相交 AA 边界框对的计算速度。
  2. 据我所知,推荐的方法是将两个曲面合并到一个向量 custom boxes 中。 ,其中方框有一个字段来指示三角形所属表面的标识符。这有助于快速丢弃同一表面上的成对盒子。

关于3d - CGAL 网格体相交/碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900932/

相关文章:

javascript - 在 Javascript 中重写动态条件语句

c++ - 如何在 CGAL 中计算一条直线上的一个点

javascript - 确定场景中物体的相机可见 x,y

c++ - 在vtk中翻转Y轴

java - 矩形碰撞检测算法半工作

python - Pygame碰撞

c++ - 在 C++ 中的进程之间共享 CGAL 的几何结构

computational-geometry - CGAL/minkowski_sum_2 的不适合多边形问题

c# - 在 Unity 3D 中使用触摸输入在地形上移动相机

python - 有没有办法使用 matplotlib 来制作 "3D cloud plot"?