Game Development Reference
In-Depth Information
B. Determine whether the sphere's center intersects any of the cylinders of radi-
us r corresponding to the expanded edges of the model. If it does intersect an
edge, skip the third step.
C. Determine whether the sphere's center intersects any of the spheres of radius
r corresponding to the expanded vertices of the model.
When performing intersections with the edge cylinders, we do not have to
worry about whether the intersection occurs on the exterior surface because an
intersection with the interior surface would be preceded along the ray by a face
intersection (see Figure 12.4). Likewise, an interior intersection with a vertex
sphere would be preceded by either a face intersection or an edge cylinder inter-
section.
A ray intersection with a triangular face of a model can be accomplished us-
ing the method discussed in Section 6.2.1. Each face's plane needs to be offset by
the distance r to determine the point of ray intersection. The barycentric coordi-
nates of that point can then be calculated using the original vertex positions of the
triangle (see Chapter 6, Exercise 5). A ray intersection with a vertex sphere can
be performed using the method discussed in Section 6.2.3 after translating the
vertex's position to the origin. Calculating the intersection of a ray and an edge
cylinder is slightly more complicated since the cylinder can have an arbitrary
orientation.
Figure 12.4. A ray intersection with the interior surface of an edge cylinder must be pre-
ceded by a face intersection, in which case the cylinder intersection calculation would
never have been performed. Thus, cylinder intersections can be assumed to lie on the
exterior of the expanded surface. A similar argument applies to vertex spheres.