Relaxation Steps
Relaxation steps are inserted during wrapping and surface
dragging to keep the clothes visually plausible by
preventing excessive stretch and folds. Note that the
purpose of this relaxation step is to move the cloth towards
a class of desirable static configurations. Our goal is to add
useful behavior to cloth so as to help the user put clothes on
characters, not to mimic physically realistic behavior. For
example, our relaxation steps automatically unfold flipped
clothes, which does not happen in the real world.
A relaxation step has four parts. First, we try to make
each edge’s length closer to its rest length to prevent stretch
and shrinkage. Second, we try to recover flipped triangles to
prevent folds. Third, we try to flatten the cloth at each edge
of triangle; this corresponds to a dihedral-angle spring and
helps generate attractive wrinkles. Finally, we mimic the
effects of gravity and friction.
Preventing stretch and flip The system addresses the first
two goals simultaneously by adjusting vertex positions so
that each triangle T recovers its rest shape (called the
reference triangle) on the body surface. The reference
triangle is uniquely defined by the rest length of the edges.
The system places a copy U of the reference triangle as
close to T as possible, and moves each vertex of T towards
its corresponding vertex in this copy of U (Figure 21). U is
placed in a plane (described below) with the centers of
gravity, O and O’, of T and U aligned, and is rotated as
follows. The system computes B'' by rotating B by ÐB'OA'
around O, and computes C'' by rotating C by ÐC'OA'
around O. The system rotates U so that OA' parallels
OA+ OB'' + OC'' . A similar technique is used in automatic
texture coordinate optimization [18].
Reference
Triangle
Current
Triangle
A
B
C
A'
B'
C'
O
O' O=O'
Current
Triangle
Reference
Triangle
A
A'
B''
C''
B
C
C'
B'
Figure 21: Matching a triangle and its reference
triangle.
We’ve found that this triangle-based strategy works
faster than an edge-based strategy (e.g. [8]) and generates
better results for our purpose. In addition, it automatically
recovers flipped triangles if we place the reference triangle
front-face up. “Face up” is determined by a “temporary
normal vector.” The temporary normal is the body surface
normal when the cloth is near the body surface (distance <
0.012), but is the cloth surface normal when the cloth is far
from the body (distance > 0.08); the normals are blended in
the intermediate region. The triangle-based relaxation is
done on the plane perpendicular to this temporary normal:
the system projects T to that plane, applies the above
method above, and then moves the vertices according to the
resulting vectors (which are parallel to the plane).