Graphics Reference
In-Depth Information
is carried out by passing requests to the actor for certain motions. The current status of the actor can be
extracted by sending a request for information to the actor and receiving a message from the actor.
Actor-based systems provide a convenient way of communicating the time-varying information
pertaining to a model. However, the encapsulated nature of actors with the associated message passing
can result in inefficiencies when they are used with simulation systems in which all objects have the
potential to affect all others.
4.3 Deforming objects
Deforming an object shape and transforming one shape into another is a visually powerful animation
technique. It adds the notion of malleability and density. Flexible body animation makes the objects
in an animation seemmuch more expressive and alive. There are physically based approaches that sim-
ulate the reaction of objects undergoing forces. However, many animators want more precise control
over the shape of an object than that provided by simulations and/or do not want the computational
expense of the simulating physical processes. In such cases, the animator wants to deform the object
directly and define key shapes. Shape definitions that share the same edge connectivity can be interpo-
lated on a vertex-to-vertex basis in order to smoothly change from one shape to the other. A sequence of
key shapes can be interpolated over time to produce flexible body animation. Multivariate interpolation
can be used to blend among a number of different shapes. The various shapes are referred to as blend
shapes or morph targets and multivariate interpolation a commonly used technique in facial animation.
An immediate question that arises is “what is a shape?” Or “when are two shapes different?” It can
probably be agreed that uniform scale does not change the shape of an object, but what about nonuni-
form scale? Does a rectangle have the same shape as a square? Most would say no. Most would agree
that shearing changes the shape of an object. Elementary schools often teach that a square and a dia-
mond are different shapes even though they may differ by only a rotation. Affine transformations are
the simplest type of transformation that (sometimes) change the shape of an object. Affine transforma-
tions are defined by a 3
3 matrix followed by a translation. Affine transformations can be used to
model the squash and stretch of an object, the jiggling of a block of Jello, and the shearing effect
of an exaggerated stopping motion. While nonuniform scale can be used for simple squash and stretch,
more interesting shape distortions are possible with nonaffine transformations. User-defined distor-
tions are discussed in the following section; physically based approaches are discussed in Chapter 7.
4.3.1 Picking and pulling
A particularly simple way to modify the shape of an object is to displace one or more of its vertices. To
do this on a vertex-by-vertex basis can be tedious for a large number of vertices. Simply grouping a
number of vertices together and displacing them uniformly can be effective in modifying the shape of
an object but is too restrictive in the shapes that can easily be created. An effective improvement to this
approach is to allow the user to displace a vertex (the seed vertex) or group of vertices of the object and
propagate the displacement to adjacent vertices along the surface while attenuating the amount of dis-
placement. Displacement can be attenuated as a function of the distance between the seed vertex and
the vertex to be displaced (see Figure 4.8 ) . A distance function can be chosen to trade off quality of the
results with computational complexity. One simple function uses the minimum number of edges con-
necting the seed vertex with the vertex to be displaced. A more accurate, but more computationally
Search WWH ::




Custom Search