i
i
i
i
i
i
i
i
822 17. Collision Detection
Sometimes, one can create more efficient algorithms when there is some
known information about the type of deformation. For example, if a model
is deformed using morphing (see Section 4.5), then you can morph (i.e.,
blend) the BVs in a bounding volume hierarchy in the same way that you
morph the actual geometry [732]. This does not create optimal BVs during
morphing, but they are guaranteed to always contain the morphed geome-
try. This update can also be done in a top-down manner, i.e., only where
it is needed. This technique can be used for AABBs, k-DOPs, and spheres.
Computing a morphed BV from k different BVs costs O(k), but usually k
is very low and can be regarded as a constant. James and Pai [598] present
a framework with a reduced deformation model, which is described by a
combination of displacement fields. This provide for generous increases in
performance. Ladislav and Zara present similar CD techniques for skinned
models [708].
However, when the motion is completely unstructured and has breaking
objects, these methods do not work. Some recent techniques attempt to
track how well a subtree in a BVH fits the underlying geometry, and only
rebuilds them as needed using some heuristics [733, 1397].
Another general method for deformable objects first computes minimal
AABBs around two objects to be tested for collision [1199]. If they overlap,
the overlap AABB region is computed, which simply is the intersection
volume of the AABBs. It is only inside this overlap region that a collision
can occur. A list of all triangles inside this region is created. An octree
(see Section 14.1.3) that surrounds the entire scene is then used. The idea
is then to insert triangles into the octree’s nodes, and if triangles from both
objects are found in a leaf node, then these triangles are tested against each
other. Several optimizations are possible. First, the octree does not need
to be built explicitly. When a node gets a list of triangles, the triangles
are tested against the eight children nodes, and eight new triangle lists are
created. This recursion ends at the leaves, where triangle/triangle testing
can take place. Second, this recursion can end any time the triangle list has
triangles from only one of the objects. To avoid testing a triangle pair more
than once, a checklist is kept that tracks the tested pairs. The efficiency
of this method may break down when an overlap region is very large, or
there are many triangles in an overlap region.
17.6.4 Collision Response
Collision response is the action that should be taken to avoid (abnormal)
interpenetration of objects. Assume, for example, that a sphere is moving
toward a cube. When the sphere first hits the cube, which is determined
by collision detection algorithms, we would like the sphere to change its
trajectory (e.g., velocity direction), so it appears that they collided. This