i
i
i
i
i
i
i
i
10.7. Particle Systems 461
of time steps in the animation, so that Δ = d/frames. If an impostor has
been used for n frames without updating, then Δ ∗n is projected onto the
image plane. If this distance is larger than a threshold set by the user,
the impostor is updated. Other ideas include updating the objects close to
the near plane or the mouse cursor more often. For efficient updating of
impostors, he suggests rendering a number of them to subregions of a large
texture.
Forsyth also uses prediction in an interesting way. Normally, an impos-
tor is created for a certain frame, and it is only correct for that frame. A
number of frames later, the impostor is updated again. If some prediction
of camera and animation parameters can be done for the frame in between
these generation times, then the average quality of the impostor can be
improved. However, using impostors for dynamic objects, especially un-
predictable ones such as players, is hard. For small objects, such as distant
people in crowd scenes, it is possible to store a set of impostors for a wide
range of views and in different animated poses using a set of textures. How-
ever, the costs can be high, e.g., 1.5 Mb per figure [266]. Often it is best to
just render the geometry when an object moves, and switch to impostors
when the object is static [352]. Kavan et al. [637] introduce polypostors,
in which a model of a person is represented by a set of impostors, one for
each limb and the trunk. This system tries to strike a balance between
pure impostors and pure geometry.
A major advantage of impostors is that they can be used to improve
frame rate, sometimes at a reduction in quality. Schaufler [1114] de-
scribes a constant-frame-rate algorithm for impostors, which is similar to
Funkhouser and S´equin’s work [371] presented in Section 14.7.3. Rafferty
et al. [1043] present a technique that replaces the geometry seen through
a portal with an impostor. They also use image warping to give longer
lifetimes to the impostors, as does Schaufler [1116].
Hierarchical image caching is an algorithm that uses impostors arranged
in a hierarchy for better performance. This technique was invented inde-
pendently by Schaufler and St¨urzlinger [1113] and Shade et al. [1151]. The
basic idea is to partition the scene into a hierarchy of boxes and create
an impostor for each box, and also to create impostors for the parents in
the partitioning. The impostors are then updated hierarchically. A related
area of study, point-based rendering, represent surfaces with a hierarchical
arrangements of splats, essentially alpha-blended particles; see Section 14.9.
Meyer et al. [862] use a hierarchy of bidirectional texture functions
(BTF) to render trees realistically. A BTF is a texture that stores, for
each texel, shaded colors for multiple lighting and viewing directions. An-
other way of thinking about a BTF is as a series of images of an object or
surface, one for each combination of viewing and lighting direction. Several
such images, evenly located on a sphere, are thus used in a hierarchy to