Game Development Reference
Figure 14.4 A morph target set.
Creating keyframes for the morph targets
To be useful we need a way to blend the targets together. One method
involves assigning a blend level to each of the morph targets. If we have
five targets and the blend level for each is set to zero, then we will have
the base geometry displayed. If target A is ramped up to 100 per cent and
all the other targets are set to zero blend, then we want the displayed
geometry to be entirely as described by target A. If, however, target A is
at 50 per cent and B is at 50 per cent, then we want to display a mesh that
is part A and part B. Since each 'MORPHITEM' has a level member in the
structure, we can set this level for each morph target. Suppose we have
the situation given in Table 14.1.
We would expect to see a mesh that was mainly influenced by the
vertex locations in the 'Angry' target, but a little influenced by the vertex
locations in the 'Sad' target. The method adopted is to sum the current
levels. If the sum is greater than 1.0 or 100 per cent, then we ignore the
base mesh position and divide all the current levels by the total, so that
the value of all the levels combined will represent a sum to 1.0 or 100 per
cent. If the value is less than 1.0, then we give a value to the base mesh
that pulls the total level up to 1.0. To show the mesh as influenced by the
values given in Table 14.1, we calculate the total level as 0.3 + 0.8 = 1.1.
Since this value is greater than 1.0, we divide each morph target level by
Table 14.1 Sample morph levels