针对凸体间的连续碰撞检测,在距离算法(Gilbert-Johnson-Keerthi distance algorithm,GJK)基础上,提出一种采用运动轨迹分离轴计算的线性连续碰撞检测算法.该算法首先采用支撑点和投影技术,剔除必定不发生碰撞的物体,以加速碰撞检测的速度;然后, 对可能发生碰撞的物体,计算2个凸体的Minkowski差集,所形成的凸包与运动路径执行GJK分离轴算法,实现在整个时间区间内一次性完成碰撞检测任务;最后,采用几何方法以及超平面与射线求解方式计算射线与凸体边界近交点,确定出第一次发生碰撞位置,并调整运动物体位置,完成碰撞响应过程.该算法不需要构造扫掠体,连续检测过程中不需要凸体间的求交计算.将文中算法应用于物体方向包围盒的连续碰撞检测,算法分析和实验结果表明,该算法对包围盒的连续碰撞检测具有较高检测精度和响应速度.
This paper presents a new linear continuous collision detection algorithm for convex polyhedrons, which employs separating-axis calculation of motion path based on Gilbert-Johnson-Keerthi distance algorithm (GJK). First, the algorithm utilizes the supporting point and projection technology to remove those objects that can not be collided in order to speed up the collision detection. Then, the convex hull that is calculated with Minkowski difference set between two possible collision convex objects and the one-dimensional simplex constructed by a relative motion path are implemented with the GJK separating-axis algorithm to complete the collision detection in the entire time interval immediately. Finally, by means of solving the intersection between the hyper-plane and the ray based on a geometric method, the nearest intersection point of the hyper-plane and the ray from a convex object’s boundary can be calculated. The first collision position is determined and the moving object’s location is adjusted to complete the process of collision response. The proposed algorithm does not require constructing a swept body and intersection calculations between convex polyhedrons in continuous detection process. The proposed algorithm has been applied to the continuous collision detection among oriented bounding boxes. The experimental results and analysis show that this algorithm has high detection accuracy and response speed.