Algorithm 定向框(或OBB)之间的交点

Algorithm 定向框(或OBB)之间的交点,algorithm,collision-detection,separating-axis-theorem,Algorithm,Collision Detection,Separating Axis Theorem,我试图编写一个刚体模拟器,在模拟过程中,我不仅对两个物体是否碰撞感兴趣,而且对碰撞的点和法线也感兴趣。我已经找到了很多资料,可以用分离轴定理判断两个OBB是否碰撞。我还对OBB的3D表示感兴趣。现在,如果我知道两个碰撞OBB的最小重叠区域的轴,有没有办法找到碰撞点和碰撞法线?此外,还有两种主要的碰撞情况,第一种是点面碰撞,第二种是边碰撞。 我试图用谷歌搜索这个问题,但几乎所有的解决方案都只是检测碰撞的真假 请有人帮忙 沿运动方向观察场景(换句话说,改变坐标,使该方向垂直,并降低高度)。你可以得到

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


请有人帮忙

沿运动方向观察场景(换句话说,改变坐标,使该方向垂直,并降低高度)。你可以得到一个二维图形

考虑到这两个长方体彼此面对的面,您将看到两个六边形,每个六边形拆分为三个平行四边形

然后

  • 检测二维中边之间的交点。根据沿边的截面比,可以确定实际的z距离

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

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


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

通常,OBB测试用作保守测试,以快速排除无法碰撞的对象。(有时称为“广泛阶段”)。如果OBB相交,并且对象可能发生碰撞,“狭窄阶段”开始。在这里,检查一个对象的每个顶点/边是否与另一个对象的每个面/边发生碰撞。(这很昂贵-因此,使用OBB和边界卷层次结构!)。然后,“碰撞检测”包括计算V/F和E/E对的最近点。如果这些点的距离接近于零,那么物体就会在这些点上碰撞。确切的碰撞点确实取决于精确的轨迹。我们能假设一条直线吗?这条线是否与其中一个盒子对齐?