4

我正在尝试编写一个刚体模拟器,在模拟过程中,我不仅对查找两个物体是否碰撞感兴趣,而且对碰撞的点和法线感兴趣。我发现很多资源实际上说明了两个 OBB 是否使用分离轴定理发生碰撞。我也对 OBB 的 3D 表示感兴趣。现在,如果我知道两个碰撞 OBB 的最小重叠区域的轴,有没有办法找到碰撞点和碰撞法线?此外,有两种主要的碰撞情况,第一种是点面,第二种是边-边。我试图用谷歌搜索这个问题,但几乎每个解决方案都只检测真假碰撞。

请有人帮忙!

4

1 回答 1

0

沿运动方向查看场景(换句话说,应用坐标更改,使该方向变为垂直,然后降低高度)。你得到一个二维图形。

考虑两个相互面对的盒子的面,你会看到两个六边形,每个都分成三个平行四边形。

在此处输入图像描述

然后

  • 检测 2D 中边缘之间的交点。从沿边缘的截面比率,您可以确定实际的 z 距离。

  • 对于所有顶点,确定它们落在另一个框中的面;并且从 3D 方程中,观察线的穿透点进入面平面,因此是距离。(对 A 和 B 的顶点重复此操作。)

比较距离将告诉您首先发生哪个碰撞,并为您提供第一个交汇点的坐标(在转换后的系统中,返回绝对坐标)。

面点问题很容易实现,因为面是凸多边形。

于 2017-07-21T13:00:28.047 回答