Graphics Reference
In-Depth Information
multiplied by an unknown n
3 matrix. We can solve this
problem for one column of unknowns at a time. That is we can solve
×
3 matrix to get a 2 n
×
AX = B
(25.24)
by solving
AX i = B i
(25.25)
where X i indicates the i th column of X ,for i = 1, 2, 3. To solve, we can compute
an LU decomposition of A [Pre95]. Fortunately, this single decomposition can
then be used to find each column of X .
25.6 Mesh Applications 2: Deformation
Transfer and Triangle-Order Optimization
We conclude this chapter with two more advanced applications related to meshes.
The first is deformation transfer, in which two meshes of objects with some
relationship (e.g., two quadrupeds) are matched at a few key points, after which
any deformation of the first mesh can be automatically transferred to the other.
The second is an approach for restructuring a mesh's face table so that during
rendering the mesh will tend to use a GPU most efficiently.
25.6.1 Deformation Transfer
Suppose that using a motion-capture system, we have captured the varying posi-
tion of a human actor over time; in other words, we have a mesh M (the source
mesh) with a fixed connectivity (i.e., a fixed set of triangles, represented as vertex-
index triples), and a sequence V i , ( i = 0, 1,
) of positions for the vertices of the
mesh (i.e., V 0 is the set of vertex positions at time 0, perhaps representing the actor
standing upright at rest, V 1 is the set of vertex positions at time 1, etc.). We'd like
to transfer this motion sequence to a different mesh (the target )—a video-game
character, for instance—but one that may not have a realistic human form. Or per-
haps we have a recorded sequence of positions for a horse, but we want to apply
them to a camel, which was unavailable for motion capture. We can consider the
difference between V 0 and V k as a deformation of the known model; our desire
is then to transfer this deformation to the target mesh M , with a possibly different
set of triangles and vertex locations W 0 , to get a new set of vertex locations W k .
We'll follow the approach of Sumner and Popovic [SP04] (see Figure 25.29).
Because we are considering only deformations, we need only look at k = 1
and apply the same technique to each subsequent value of k . So we can relabel
things a bit for simplicity: We'll use V i to indicate the initial position of vertex i in
the source mesh (i.e., its position in V 0 ), and V i to indicate its deformed position
(i.e., its position in V 1 ). For notational simplicity, it's helpful if everything we
consider is a vector rather than a point. We therefore pick an “origin” O M for M ,
and express each vertex as an offset from this origin:
...
v i = V i
O M .
(25.26)
We do the same for V , that is,
v i = V i
O M ,
(25.27)
 
 
 
 
Search WWH ::




Custom Search