We present a highly interactive, continuous collision detection algorithm for rigid, general polyhedra. Given initial and final configurations of a moving polyhedral model, our algorithm creates a continuous motion with constant translational and angular velocities, thereby interpolating the initial and final configurations of the model. Then, our algorithm reports whether the model under the interpolated motion collides with other rigid polyhedral models in environments, and if it does, the algorithm reports its first time of contact (TOC) with the environment as well as its associated contact features at TOC. Our algorithm is a generalization of conservative advancement  to general polyhedra. In this approach, we calculate the motion bound of a moving polyhedral model and estimate the TOC based on this bound, and advance the model by the current TOC estimate. We iterate this process until the inter-distance between the moving model and the other objects in the environments is below a user-defined distance threshold. We pose the problem of calculating the motion bound as a linear programming problem and provide an efficient, novel solution based on the simplex method. Moreover, we also provide a hierarchical advancement technique based on a bounding volume traversal tree to generalize the conservative advancement for non-convex models. Our algorithm is relatively simple to implement and has very small computational overhead of merely performing discrete collision detection multiple times. We extensively benchmarked our algorithm in different scenarios, and in comparison to other known continuous collision detection algorithms, the performance improvement ranges by a factor of 1.4 ∼ 45.5 depending on benchmarking scenarios. Moreover, our algorithm can perform CCD at 120 ∼ 15460 frames per second on a 3.6GHz Pentium 4 PC for complex models consisting of 10K ∼ 70K triangles.
- Conservative advancement
- Continuous collision detection
- Convex decomposition
- Dynamics simulation