我正在尝试编写一个刚体模拟器,在模拟过程中,我不仅对查找两个物体是否碰撞感兴趣,而且对碰撞的点和法线感兴趣。我发现很多资源实际上说明了两个 OBB 是否使用分离轴定理发生碰撞。我也对 OBB 的 3D 表示感兴趣。现在,如果我知道两个碰撞 OBB 的最小重叠区域的轴,有没有办法找到碰撞点和碰撞法线?此外,有两种主要的碰撞情况,第一种是点面,第二种是边-边。我试图用谷歌搜索这个问题,但几乎每个解决方案都只检测真假碰撞。
请有人帮忙!
我正在尝试编写一个刚体模拟器,在模拟过程中,我不仅对查找两个物体是否碰撞感兴趣,而且对碰撞的点和法线感兴趣。我发现很多资源实际上说明了两个 OBB 是否使用分离轴定理发生碰撞。我也对 OBB 的 3D 表示感兴趣。现在,如果我知道两个碰撞 OBB 的最小重叠区域的轴,有没有办法找到碰撞点和碰撞法线?此外,有两种主要的碰撞情况,第一种是点面,第二种是边-边。我试图用谷歌搜索这个问题,但几乎每个解决方案都只检测真假碰撞。
请有人帮忙!
沿运动方向查看场景(换句话说,应用坐标更改,使该方向变为垂直,然后降低高度)。你得到一个二维图形。
考虑两个相互面对的盒子的面,你会看到两个六边形,每个都分成三个平行四边形。
然后
检测 2D 中边缘之间的交点。从沿边缘的截面比率,您可以确定实际的 z 距离。
对于所有顶点,确定它们落在另一个框中的面;并且从 3D 方程中,观察线的穿透点进入面平面,因此是距离。(对 A 和 B 的顶点重复此操作。)
比较距离将告诉您首先发生哪个碰撞,并为您提供第一个交汇点的坐标(在转换后的系统中,返回绝对坐标)。
面点问题很容易实现,因为面是凸多边形。