Graphics Reference
In-Depth Information
The morphing procedure would be performed entirely on textures bound to frame-
buffer objects, with the final texture then being used to displace mesh vertices
using vertex texture fetch operations. There are problems with this approach,
most notably the fact that the maximum number of texture units provided by a
platform is allowed to be zero [Munshi and Leech , pp. 40-41]. This means that
on some platforms an alternative approach would need to be used. Transform-
feedback functionality, which is standardized in OpenGL ES 3.0, allows for a
simpler implementation and removes the need for wasteful vertex texture encod-
ing and decoding operations.
4.3 Morph Targets
Morph target animation is used in cases where many small, per-vertex changes
need to be applied to a model. This is in contrast to large, sweeping motions nor-
mally handled by skeletal animation systems. A good use-case for morph targets
is the animation of facial muscles required to create believable facial expressions
for video game characters. (See Figure 4.1.)
An implementation typically operates on multiple versions of a stored mesh,
known as target poses or key poses. These poses are stored in conjunction with a
base pose, which serves as a representation of the animation in a neutral state. To
create different animation sequences, the position of each mesh vertex is blended
with one or more target poses using a weight vector. The components of this
vector are associated with a corresponding target pose and denote how much this
target pose influences the result.
To be able to blend between target poses, a difference mesh is used. This is
a mesh that is created for each target pose that gives the per-vertex difference
between the target pose and the base pose [Senior 09,Lorach 08]. These difference
Figure 4.1. Multiple target poses showing a range of facial expressions.
Search WWH ::




Custom Search