We present an interactive algorithm for continuous collision detection between a moving avatar and its surrounding virtual environment. Our algorithm is able to compute the first time of contact between the avatar and the environment interactively, and also guarantees within a user-provided error threshold that no collision ever happens before the first contact occurs.
We model the avatar as an articulated body using line skeletons with constant offsets and the virtual environment as a collection of polygonized objects. Given the position and orientation of the avatar at discrete time steps, we use an arbitrary in-between motion to interpolate the path for each link between discrete instances. We bound the swept space of each link using interval arithmetic and dynamically compute a bounding volume hierarchy (BVH) to cull links that are not in close proximity to the objects in the virtual environment. The swept volumes (SVs) of the remaining links are used to check for possible interference and estimate the time of collision between the surface of the SV and the rest of the objects. Furthermore, we use graphics hardware to accelerate collision queries on the dynamically generated swept surfaces.
Our approach requires no precomputation and is applicable to general articulated bodies that do not contain a loop. We have implemented the algorithm on a 2.8 GHz Pentium IV PC with an NVIDIA GeForce 6800 Ultra graphics card and applied it to an avatar with 16 links, moving in a virtual environment composed of hundreds of thousands of polygons. Our prototype system is able to detect all contacts between the moving avatar and the environment in 10–30 ms.