Game Development Reference
thus reducing variety in a similar way as authored damage does. In this article,
we concentrate on authored damage techniques.
We aim in this article to find a solution to the problem that fulfills the fol-
lowing goals as much as possible:
Artist-friendliness. The technique should not add complexities to the au-
thoring process or requirements that interfere with common authoring tech-
Flexibility. It should be able to support an unrestricted number of damage
areas on a single object in unrestricted locations.
Rendering e ciency. It should have a predictable rational cost and avoid
taxing the original object rendering with expensive shader costs or reducing
In the next few sections we review previous work and compare it against the goals
above, then we describe our own technique and compare it also to the same set
Challenges and Previous Work
Previous work addressing the issue exists with varying capabilities and features
[Vlachos 10, Reis 10, Kihl 10]. In all of these works, it is clear that the main
diculty is in hiding the original undamaged mesh geometry in order to make
a clean location for the damage geometry to replace it. This step is necessary
because, in most cases, the damage shape “eats away” from the original structure,
thus some parts of the original 3D object need to be removed.
There are a number of existing techniques for hiding geometry from a 3D
object in real time. The list below shows a selection of these techniques. It also
includes some of the shortcomings of each of them.
Modeling the original object in separate pieces that can be shown/hidden
selectively at runtime: Although this is simple, it suffers from a few issues.
First, it can be inconvenient for artists to build objects in separate pieces
(particularly animated characters). Second, rendering of such an object
might require several draw calls, which can cause performance issues in
Collapsing bones to hide geometry by forcing triangles to become degenerate
around a certain point [Reis 10]: This is effective and easy to implement;
however, it is limited to skinned meshes only and cannot handle arbitrary
geometry-hiding locations (i.e., only terminal limbs can be hidden).