Game Development Reference
In-Depth Information
F IGURE 17.4
Pre-created fractures can look very strange for large objects.
Fracture physics can be as simple or as complex as you want it to be. Early im-
plementations used two sets of rigid bodies: one for the whole object and another
for its components. The whole rigid body has a breaking strain value: the maximum
impulse it can suffer before being destroyed. During the velocity phase of the reso-
lution algorithm the impulse applied to the object is compared against its breaking
strain. If the impulse is too great, the whole rigid body is replaced by its component
objects.
This is a very quick, efficient, and easy-to-implement fracture physics. Unfortu-
nately two identical objects will always be destroyed in exactly the same way, and the
pattern of destruction will not bear any relationship to the location of the impulse.
Figure 17.4 illustrates this problem on a glass window.
This can be mitigated to some extent by using several possible decompositions for
an object and determining which to use when the fracture is initiated. Players are good
at spotting patterns, however, and most developers want a more flexible approach.
More complex fracture physics uses the same basic principle of breaking strains,
but adds two, more complex algorithms. The first is a geometric algorithm to con-
struct the components of the fractured object on-the-fly. The decomposition method
depends on the type of material.
Decomposing wood needs long, splintered components; glass cracks into panes;
safety glass shatters into smalls nuts; and so on. Typically this is achieved either by
decomposing the object into different-sized tetrahedrons and keeping groups of these
together, or by using a set of fracture patterns, and 3D boolean operations to separate
components. The specifics of this decomposition are highly geometric and depend
on algorithms beyond the scope of this topic. The Schneider and Eberly [2002] book,
in the same series as this, has a comprehensive set of algorithms for manipulating
geometry.