You are on page 1of 8

Animation Wrinkling: Augmenting Coarse Cloth Simulations with

Realistic-Looking Wrinkles
Damien Rohmer1,2 , Tiberiu Popa3 , Marie-Paule Cani1,2 , Stefanie Hahmann1 , Alla Sheffer4
1 2 3 4
Laboratoire Jean-Kutzmann, Universite de Grenoble. INRIA. ETH Zurich. University of British Columbia.

Figure 1: Animation wrinkling (left to right): rest-shape mesh, frames from coarse simulation, and augmented with dynamic wrinkles.

Abstract 1 Introduction
Moving garments and other cloth objects exhibit dynamic, complex
wrinkles. Generating such wrinkles in a virtual environment cur- Despite decades of research, efficient modeling of realistic cloth
rently requires either a time-consuming manual design process, or deformation remains a challenge. Although physically based simu-
a computationally expensive simulation, often combined with ac- lation works well for computing dynamic effects and handling col-
curate parameter-tuning requiring specialized animator skills. Our lisions, accurate simulation of folds and wrinkles is computation-
work presents an alternative approach for wrinkle generation which ally expensive. This computational cost is particularly problematic
combines coarse cloth animation with a post-processing step for ef- in production settings, where users end up rerunning the simula-
ficient generation of realistic-looking fine dynamic wrinkles. Our tion multiple times with different parameters to achieve the desired
method uses the stretch tensor of the coarse animation output as look.
a guide for wrinkle placement. To ensure temporal coherence, An alternative, used in some production settings [Cutler et al.
the placement mechanism uses a space-time approach allowing not 2005], is to augment a coarse simulation using a procedural wrin-
only for smooth wrinkle appearance and disappearance, but also for kle model, in which the wrinkles are designed manually. This ap-
wrinkle motion, splitting, and merging over time. Our method gen- proach has two main drawbacks. First, designing wrinkle patterns
erates believable wrinkle geometry using specialized curve-based manually is time consuming and requires specific skills. In addi-
implicit deformers. The method is fully automatic and has a sin- tion, manual setting can only be done for specific frames, whereas
gle user control parameter that enables the user to mimic different real cloth wrinkles move continuously and deform over time, often
fabrics. exhibiting complex behaviors such as dynamic merging/separation.
CR Categories: I.3.7 [Computer Graphics]: Three-Dimensional
Graphics and Realism Our method advances the augmentation idea one step further, in-
troducing an automated post-processing step for believable wrinkle
Keywords: Cloth, wrinkle modeling, procedural animation, im- generation, to replace the manual intervention. The method can
plicit modeling, mesh deformation be applied on top of any pre-existing cloth animation, including
soft spring animation or skinning. We observe that wrinkling be-
havior is strongly linked to cloth developability, or quasi-isometry
between the deforming cloth and the corresponding 2D patterns
or rest-shape [Popa et al. 2009]. Thus, given a coarse simulation
output we use the stretch of the deformed surface with respect to
this rest-shape as a guide for wrinkle placement. To obtain time-
coherent animated wrinkling, wrinkle locations and magnitude are
changed smoothly over time. The actual wrinkle geometry is gen-
erated using a novel implicit surface deformer mechanism which
supports complex wrinkle shapes, including variations in radii and
depth between and along wrinkles, as well as seamless transitions
between adjacent and merging wrinkles (Figures 1,10).
1.1 Previous Work for a number of specific frames, and the associated wrinkles fade
in and out when intermediate frames are computed. This approach
Realistic cloth simulation has received considerable attention in the enables artists to create the desired fold shapes but requires signif-
computer graphics community [Choi and Ko 2005]. Many of the is- icant user time and expert design skills. Our method uses a similar
sues addressed, such as collision processing, are outside the scope idea of encoding wrinkles as surface curves. However these curves
of this work, which focuses on realistic modeling of static and dy- are automatically positioned and animated over time by analyzing
namic cloth fold and wrinkles. Previous methods addressing this the coarse simulation output.
problem can be grouped into three main categories.
Recently, [Wang et al. 2010] and [de Aguiar et al. 2010] used a
Several methods add isometry-related constraints directly to a machine learning approach to generate real-time wrinkles, they re-
physically-based cloth model. Standard elastic models are ill- quire training data sets with similar examples which limit the range
conditioned when limited compression takes place along the cloth of application of the method.
surface, as shown in [Choi and Ko 2002]. Therefore using a
spring model with increased stiffness to enforce isometry is prob- 1.2 Overview and Contributions
lematic. Instead, [English and Bridson 2008] propose to use non-
conforming elements to allow more degrees of freedom while mini-
This paper presents a novel efficient procedural method to enhance
mizing triangle stretch during the simulation. [Thomaszewski et al.
a pre-existing coarse cloth animation with realistic-looking ani-
2009] define the stretch constraint directly in the continuum model.
mated wrinkles. Fabric wrinkles typically form in areas where the
These methods model various types of cloth with a high degree of
surface is compressed to allow for preservation of material, and are
accuracy and achieve impressive results. However, creating believ-
nearly perpendicular to the direction of compression. Based on this
able results requires finely tuned physical parameters and the meth-
observation our method analyzes the stretch tensor of the coarse
ods are computationally very expensive (several minutes to more
simulation output when compared to the user-given rest-shape and
than one hour per second of simulation). This restricts their use
places wrinkle curves in areas where the tensor indicates compres-
to non-interactive, high-quality animations. [Muller and Chentanez
sion or shrinkage, tracing curves along streamlines of the tensor
2010] use a second solver for adding wrinkles on a globally subdi-
orthogonal to the main shrinkage direction (Section 2, Figure 2,
vided mesh. While the approach may be used in an automatic way,
left). In order to maintain temporal coherence between wrinkles in
the subdivided edges may not be aligned with the wrinkles leading
dynamic scenes, the method is not applied independently in each
to visual artifacts.
frame but uses the computed tensor to smoothly propagate exist-
Other approaches facilitate the design of realistic cloth shapes by ing curves from one frame to the next, and to add or delete curves
minimizing energy functions that measure developability. Though where necessary (Section 3, Figure 2, middle). Real-life wrinkles
not fully physically-based, such formulations have the advantage of form to improve isometry with respect to the cloth rest-shape with
allowing the specification of positional constraints. [Tang and Chen their width or radius linked to the fabric type and thickness. Our
2009] approximate a set of input points with a quasi-developable method uses the stretch tensor to determine local wrinkle width and
surface, enabling static cloth design. [Popa et al. 2009] use a depth, such that adding wrinkles reduces the surface stretch with
weighted space-time optimization to generate coherent wrinkles respect to the rest-shape. Given the computed set of curves and the
over time on capture-generated cloth surfaces. They use the video associated depth and width values the method generates believable
input from the capture to obtain wrinkle locations. wrinkle geometry using new curve-based implicit deformers (Sec-
tion 4, Figure 2, right).
A fully geometric approach for wrinkling garments is proposed
by [Decaudin et al. 2006]. They use prior knowledge of cloth buck- The combined system provides an effective, fast, and fully au-
ling behavior when wrapped around cylindrical body parts to gener- tomatic mechanism to create realistic-looking, complex dynamic
ate pre-defined types of procedural folds. The method is restricted wrinkles augmenting the input animation. Our tensor-based wrinkle
to the case of cylindrical cloth surfaces experiencing a small set of curve tracing places curves in locations consistent with the input an-
pre-defined deformations (compression, twisting or folding along imation, while the temporal propagation mechanism supports wrin-
the cylinders axis) and cannot be combined with arbitrary cloth kle motion and deformation over time, enabling wrinkles to slide
animation. along the cloth surface and to smoothly change shape and orienta-
tion following cues provided by the input animation sequence. By
A number of methods have been proposed to efficiently generate using the new implicit curve-based deformers we can model com-
procedural wrinkles on top of coarse cloth animations. [Hadap et al. plex wrinkle shapes with smoothly varying width and depth and
1999] compute a compression intensity map over the surface. The effortlessly support seamless wrinkle mergers. Finally, our compu-
map is subsequently used to locally weigh a pre-painted texture pat- tation of the wrinkle width and depth parameters reduces the stretch
tern modeling the wrinkles. The weighting is computed such that between the final cloth surface and the rest-shape, reflecting real-
the area of compressed triangles is approximately restored. The life wrinkle behavior, even though we do not aim to exactly pre-
resulting texture is used as a bump-map for very fast wrinkle ren- serve the isometry to the rest shape.
dering. [Kimmerle et al. 2004] extend this idea to procedurally
generated texture patterns, which are locally oriented in the triangle The user can mimic the impact of different fabrics on the wrinkle
compression direction. The deformation is performed using dis- size using a single parameter Rmin which defines the minimal wrin-
placement mapping. Both methods can be applied to animation by kle curvature radius (see Section 4.1).
blending multilayered textures at the price of violating the area con-
servation constraints. However, time-varying fold orientation can-
not be accurately modeled using texture interpolation. Moreover, in
2 Static wrinkle curve generation
both settings wrinkle frequency and width have to be pre-defined by
the user. We too use a procedural approach for wrinkling, but our This section describes the extraction of 1D curves representing
method generates actual geometric wrinkles on the input surface wrinkles given a deformed cloth mesh and the associated rest-
and directly ensures wrinkle coherence over time. shape. The proposed method can be used as-is to add wrinkles
to coarse simulation outputs for static settings, such as dressing a
[Cutler et al. 2005] define cloth wrinkles as curves on the input cloth mannequin. In animation settings this process is combined with the
surface and use those as deformers for generating the final geom- curve propagation method described in Section 3 to achieve tempo-
etry. The curve shapes and influence radii are manually designed ral continuity.
Figure 2: Algorithm overview: The current stretch tensor field (visualized by ellipses scaled and oriented according to its eigenvalues and
eigenvectors) and the previous wrinkle curves (indicating wrinkle orientation) are used to generate the current wrinkle curves while ensuring
temporal coherence. Implicit deformers are used to generate the wrinkle geometry. The time-step length has been artificially increased for
illustration purposes.

In many cases, the rest-shape is a planar 2D pattern. If the rest- Using the common coordinate frame, defined by the pre-computed
shape is not planar, we segment it into near-developable charts and planar parameterization,
L we define the stretch tensor Ui at a vertex
parameterize these in the plane [Sheffer et al. 2007], in order to i as: Ui = jVi j Uj , where Vi denotes the index set of the tri-
simplify subsequent curve tracing. We use the ABF++ parameteri-
angles incident to vertex i, and j = Aj / kVi Ak are triangle-
zation method [Sheffer et al. 2005] to get a good trade-of between area based weights. A simple component-wise averaging of the
length and angle preservation. To maintain coherence along chart tensors dissipates much of the anisotropic information. Instead we
boundaries we constrain the parameterization to preserve boundary use an interpolation scheme based on an affine-invariant Rieman-
edge lengths [Sheffer et al. 2007]. We use the parameterization to nian metric defined in tensor space [Pennec et al. 2006], with
define a common coordinate frame for the rest-shape triangles and being the iterative weighted means in the exponential map, where
to speed up the curve tracing. Ui are obtained by iteratively applying the following formula until
2.1 Wrinkle vector field from stretch tensor X  
1/2 1/2 1/2 1/2
Ui = Ui exp j log Ui Uj Ui Ui (2)
As noted earlier, cloth wrinkles occur in compressed regions and are j
orthogonal to the main shrinkage direction. We are thus looking for
a wrinkle vector field in the cloth surface space whose magnitude This scheme provides smoothly varying eigenvalues and, more im-
reflects the amount of compression and whose direction is orthog- portantly, smoothly rotating eigenvectors with little anisotropy dis-
onal to the local direction of compression. In computer graphics sipation. We define the continuous stretch tensor field U over the
stretch is often measured using the formulation of [Sander et al. whole mesh using barycentric coordinates and the tensor weighting
2001]. However, we found that the following alternative stretch operator .
tensor definition used in continuum mechanics [Talpaert 2003] pro- For wrinkling purposes, we are only interested in areas of the mesh
vides more consistent vector field directions. where the coarse animation results in compression, i.e. locations
Let S be the 3D mesh representing the de- where the smallest eigenvalue 1 is less than one. Hence we define
formed cloth and S the corresponding rest- u2
a wrinkle vector field v at any point on the surface as
shape. The 2D affine deformation from a S
T v = max(1 1 , 0) e2 . (3)
triangle in S to its counterpart in S can be u2 u1
expressed by the 2x2 matrix T.
S The intensity of v reflects the rate of shrinkage per unit of length
Let (u1 , u2 ) and (u1 , u2 ) be the 2D edge u1 wherever shrinkage occurs and its direction is orthogonal to the
vectors representing the shape of the triangle in the local frames of main shrinkage direction.
S and S respectively. Then T is given by T = [u1 , u2 ][u1 , u2 ]1 .
The deformation is isometric (zero stretch) iff TT = T1 . The 2.2 Tracing wrinkle curves
2 2 symmetric positive definite matrix U = TT T, called the
stretch tensor corresponding to the square root of the Right Cauchy- Our goal is to efficiently extract wrinkle curves that provide a plau-
Green deformation tensor in continuum mechanics , is thus a good sible interpretation of the surface behavior in response to the mea-
measure of compression and elongation. Assuming that there are sured compression. Thus we aim to compute curves that capture
no degenerate triangles in the mesh, U can be diagonalized as the shape and magnitude of the compression vector field, while
providing a good sampling of compressed regions. To this end,
U = 1 e1 eT1 + 2 e2 eT2 , (1) one approach could be to trace curves in areas of high compres-
sion, while enforcing a minimal distance between them. However,
where 1 2 are real, positive eigenvalues, and e1 , e2 are unit real-life wrinkles can in fact merge or come very close together
eigenvectors, defining main stretch or shrinkage directions (Fig- in some regions, violating such minimal distance constraints. In-
ures 2, 3). stead, to generate believable wrinkles we trace curves one-by-one
starting from seed points with high compression magnitude, while
To extract a wrinkle map from this per-triangle tensor field we have constraining each new seed to be at a minimal distance from earlier
to express it as a smooth per-vertex map describing well-defined traced curves. By enforcing minimal distance for seed points only
and smooth compression directions throughout. we allow curves to come arbitrarily close-by. Our implicit deformer
method for generating wrinkle geometry (Section 4) robustly han- changes gradually from one frame to the next. We thus expect many
dles such merging behavior. of the folds in the previous frame to remain in the current one with
possible small position or shape changes. To achieve this wrinkle
We define wrinkle curves as parametric curves : [0, 1] S ex- sliding effect, we initialize the wrinkle curves for each frame with
tracted along streamlines of the wrinkle vector field v over the pa- those in the previous one. Recall that our static processing placed
rameterized rest surface by integrating the 2D ordinary differential wrinkles by first placing wrinkle seeds at local compression max-
equation: ima and then tracing them along the vector field streamlines. To
(u) = v((u)) extend this process to the dynamic setting, we aim to attract the
(0) =s wrinkle curves toward the new local maxima of compression. For
kv((u))k 1 max , efficiency we do not search for local maxima along the entire curve
but only for the original seed point. To attract the seed to a local
where s is a starting seed position, and (1max ) [0, 1] is a com- maximum we use a particle-based animation setting, as follows.
pression threshold characterizing regions of sufficient compression.
In practice we use max = 0.9. The particle-based animation processes seeds in an order based on
the amount of compression, given by the wrinkle vector field at
To initiate the tracing we order the mesh vertices according to their the current frame. For each seed s previously positioned at s(t)
compression rates placing them in a priority queue. Starting with at time t, its new position at time t + dt is expressed as s(t) +
the vertex with maximal compression as the first seed, we proceed dp, where dp is a small displacement vector on the 2D pattern
as follows: modeling the movement of the wrinkle. We use a non-zero dp if the
1. Integration: Since v is sufficiently smooth thanks to our con- compression at the seed-point location decreased from the previous
tinuous expression for the stretch tensor U, we successfully frame. In this case, the displacement vector dp is oriented in the
trace a smooth curve starting from the seed using forward Eu- direction of the gradient of greatest compression kvk in order to
ler integration. As v is non-oriented, we propagate the curve move towards the closest local maximum of compression. To find
in both directions from the seed-point, checking that the dot the optimal displacement we do a line search along the gradient
product between the previous direction and the new one stays direction, bounding the maximal displacement length allowed to
positive during the integration. The integration stops when the Rmin . This choice prevents wrinkles from sliding more than half
local compression rate kvk becomes smaller than 1 max , their width in one step, leading to visually natural-looking results.
or when the surface boundary is reached.
To avoid multiple wrinkles from converging toward the same lo-
2. Seed Selection: The next seed point is selected by extracting cal maximum, we force each seed to stay at a distance of at least
the next vertex from the queue while discarding those which 2 Rmin from previously computed wrinkle curves. We then re-
are too close to the already computed wrinkle curves. The trace the curves using streamline integration (Section 2.2). At the
required minimal distance is set to twice the minimal radius of extremities of each wrinkle we check the amount of displacement
wrinkle curvature Rmin , as any two wrinkles lying at a closer with respect to previous position, and shorten the curve if the dis-
distance than that would effectively overlap throughout. placement is larger than Rmin .

The process terminates when the queue is empty.

Adding and Deleting Curves: We add to this animation process
The 2D curves a mechanism to delete vanishing wrinkles and to create new ones.
are mapped to the
deformed surface, If the local com-
with the resulting pression is not suf-
curves indicat- ficient after the al-
ing the loci and lowed amount of
directions where sliding for the wrin-
wrinkle geometry kle seed, the seed
should be added and the associated
to compensate for curve are deleted
Figure 3: Wrinkle tracing: stretch ten- local shrinkage for the subsequent
sor (left); wrinkle vector field and wrinkle (Figure 3). The Figure 4: Wrinkle curve propagation be- frames. Finally,
curves (right). compression rate tween frames. Curve seeds are indicated by after every previ-
along each curve is used to control the shape of the wrinkle as spheres. Several curves remain in place or ously existing seed
discussed in Section 4. slide, two curves are deleted, and five new is processed, new
ones are added in the newly compressed wrinkles are gener-
area. ated in newly com-
3 Time coherent wrinkle curve animation pressed regions by
applying the same procedure as in the static case.
Real cloth wrinkles are continuous over time. However, using the
algorithm in Section 2 as-is to independently generate wrinkles at
each frame of an animation sequence can lead to inconsistent sets Temporal smoothing: The algorithm we just described provides
of wrinkles popping in and out. [Popa et al. 2009] relied on in- a plausible approximation of wrinkle behavior over time. In par-
put video combined with fairly costly, space-time optimization to ticular, the local amplitude of compression increases and decreases
achieve the temporal continuity. We do not have the video prior smoothly enough, so we observed no visual popping when wrinkles
and aim for a very fast solution to achieve the continuity. To this are inserted of deleted. However, although we generate continu-
end we use a combination of particle-based wrinkle-seed propaga- ous trajectories for seed points, the integration of wrinkle curves is
tion and temporal smoothing to achieve the desired effect. computed independently at each time step. Hence the trajectory of
points far from the seed may not be continuous enough.
Particle-based wrinkle-seed propagation: We observe that due To achieve temporal continuity we smooth the integrated trajecto-
to the smoothness of the input animation the wrinkle vector field ries in the time domain. Let the wrinkle curves be consistently pa-
rameterized is space by a parameter u. Then a given wrinkle curve Once the radius is set, the actual width (and related height) of the
can be considered as a space time function (u, t). We apply a 1D wrinkle should be such that that the shrinkage with respect to the
low-pass filter on each time dependent curve (u = const, t) in rest shape is minimized. We express those using the offset which
order to ensure smooth transitions between frames. is subsequently used by our implicit deformer. The offset is com-
puted so that the increase in length l due to the wrinkle com-
4 Wrinkle geometry pensates for the local shrinkage of the mesh. All the relationships
needed for this computation are summarized in Figure 6, left.
Once the wrinkle curves are computed for all the animation frames,
the final step is to generate the actual, realistic-looking wrinkle 4.2 Implicit Deformers
geometry at each frame. Real-life wrinkles have varying widths
and depths reflecting a combination of the amount of compres- We aim to create wrinkle geometry that follows the previously com-
sion involved and the fabrics thickness and structure. For instance, puted curves and conforms to the computed local wrinkle parame-
compressing silk can generate very fine wrinkles while compressed ters. We also aim to smoothly handle close-by wrinkles, avoiding
leather or felt form much coarser folds. self-intersections and other artefacts. Previous procedural settings
[Cutler et al. 2005; Decaudin et al. 2006] used pre-defined or man-
ually designed wrinkle shapes, and thus cannot be used for more
4.1 Wrinkle Parameters
general wrinkles. The deformation approach of [Popa et al. 2009]
can potentially handle diverse wrinkle parameters, but has no obvi-
ous way to process close-by and overlapping wrinkles. Instead, our
method relies on new implicit deformers specifically designed to
have the desired specifications. The implicit formulation supports
smoothly varying wrinkle parameters, robustly handles complex
wrinkle interactions such as wrinkles smoothly merging or splitting
Figure 5: a: Measurement of curvature evolution with respect to and prevents collisions between adjacent wrinkles by implicitly re-
a given compression rate on real cloth (photos at left), and a pro- placing intersection with merging. Intersection between wrinkled
gressive wrinkle modeled with our approach (right). b: Wrinkle geometry and the characters mesh are prevented during the same
merging on real cloth (left) and using our method (right). deformation step as discussed below.

To control wrinkle shape we use two parameters affecting its width Recall that an implicit surface (see [Bloomenthal 1997] for details)
and depth: the curvature radius R(u) along each wrinkle curve, and is an iso-surface f (p) of a smooth field function f , often defined as
the wrinkle offset (u) (Figure 6, left), determining the portion of a decreasing function of the distance to a source element, referred
the circular arc used for forming the wrinkle. We use the notion of to as a skeleton. In the definitions below the iso-value used to de-
minimal radius of curvature Rmin to account for the type of fabric. fine all surfaces is one. Implicit surfaces are known for their abil-
The radius is set by the user and in our experiments provides in- ity to smoothly blend when they are close-by by summing up the
tuitive control of wrinkle behavior. The actual wrinkle radii are a field contributions from the different skeletons. We define the im-
function of this limit and of the compression rate computed from the plicit geometry of the actual wrinkles by using the wrinkle curves
wrinkle vector field, with the wrinkle radius decreasing as the com- as the skeletons. The resulting implicit generalized cylinders are
pression increases. We are not aware of any existing physical law then blended together, modeling the smooth merging and splitting
or empirical study on this topic. We therefore conducted our own behaviors. The resulting structures are used as deformers to locally
experiments on various samples of real cloth by measuring curva- deform the surface mesh around them, by projecting neighboring
ture radii and comparing them to the compression rate computed in mesh vertices to the combined iso-surface.
a corresponding simulation. See Figure 5 (a) for the example of a
wool scarf. Based on those experiments, we derived the following Wrinkle primitives: Using the convolution surface model to get
relationship:   bulge-free blends we define each implicit wrinkle primitive as the
1 2/ integral of a kernel function along the skeleton curve c(u):
R(u) = Rmin ,
v(u) Z
where v(u) = kv(u)k is the compression rate, i.e. the norm of the f (p) = (u) (kc(u) pk) du , (4)
wrinkle vector field along the wrinkle curve, computed using Equa-
tion (3). This equation interpolates the surface curvature along the where (u) is a weighting function controlling the radius of the
wrinkle between infinity when no compression occurs, to 1/Rmin deformer and is a kernel function aligning it with the wrinkle
when the compression corresponds to a half circular profile (when curve. In this paper, we use the Cauchy kernel (x) = 1/(1 +
v(u) = 1 2/). s2 x2 )2 , with s set to one hundred, for meshes scaled to fit into the
unit cube, to reduce the distance at which implicit primitives start
to blend and compute the convolution integral using a closed form
solution [Mccormack and Sherstyuk 2001].
To obtain the desired deformer radius we analyze the analytical
expression of the Cauchy integral. Due to the fast decay of the
Cauchy kernel, the radius almost reaches a limit value that depends
only on (u), except at the extremities of the primitive (see Fig-
ure 8 (right) for typical shapes generated with a constant (u)).
Using the formula giving this limit radius, we obtain (u) =
Figure 6: Left: Relationship between the width r, the height h, and 4s(1 + s2 R(u)2 )3/2 /. The offset parameter (Section 4.1) is
the arc-length l of a wrinkle, generated using a given offset distance used to position the wrinkle skeleton at a varying offset distance
. Right: the projection step performed to create the wrinkle pro- (u) below (or above) the associated wrinkle curves, enabling us
file. Mesh vertices inside the region where f > 1 are projected onto to model shallow to deep wrinkles mimicking real examples such
the isosurface. as those in Figure 5.
Surface deformation: We aim to blend the wrinkles with the ac-
tual underlying mesh surface for which we have no implicit defini-
tion. Computing such a representation, for instance a convolution
surface based on the mesh triangles, is very costly. Instead we in-
troduce a new approach for locally blending implicit and explicit
geometry based on the observation that at any point a mesh can be
locally approximated by its tangent plane.
We define an extra implicit primitive, called the mesh-deformer, Figure 8: Comparison between a deformation algorithm where
whose contribution at each point p is set equal to the contribution vertices are moved according to the sum of displacement fields as-
of the tangent plane of the closest point on the mesh. Calling z, the sociated with individual wrinkles (middle), and our solution where
distance between p and the closest point: vertices are projected to the iso-surface (right).

fmesh (p) = fplane (p) = . More complex collisions situations with obstacles on both sides of
s2 (1 + s2 (z(p) + z0 )2 )
the coarse mesh are handled by re-projecting the colliding wrinkle
p vertices onto the external object surface when applying the deform-
with z0 = 1/s /s2 1 used to enforce the isovalue 1 to be
ers, with the effect of locally suppressing wrinkles in these regions.
located on the mesh.

5 Results

We applied our algorithm to various cloth simulation scenarios and

analyzed the results in terms of shrinkage reduction, visual realism,
and computational time.

Figure 9 demon-
strates simulation
of the behavior of
different types of
cloth by changing
the material constant
Rmin . It shows a
Figure 7: Wrinkle Geometry: dress mesh before and after refine-
planar piece of cloth
ment, and final geometry
undergoing unilat-
The actual deformation consists of locally projecting the mesh ver- eral compression on
Figure 9: Left: rest-shape (top) and de-
tices along their normal direction onto the iso-surface generated by the front, with three
formed surface (bottom). Right: Three
summing the field contributions of the mesh-deformer and those different values
different cloth types compensating for
of the wrinkle primitives, as shown in Figure 6 (right) for a single of the minimal
the same amount of compression.
wrinkle. To prevent wrinkle-deformers from affecting several mesh curvature radius
layers when the mesh represents folded cloth, their contribution is resulting in different wrinkle magnitudes and frequencies. When
only applied to the surface in the vicinity of the associated wrin- defining the wrinkle size our method aims to reduce the shrinkage
kle curve, up to a distance where their influence can be neglected with respect to the planar patterns. To evaluate its impact we
(2 R(u) with our setting of the Cauchy kernel). To accurately measured the before and after stretch for the examples in Figure
capture wrinkle geometry, the mesh is first locally refined in the 9. The coarse simulation output exhibits a maximal length error
region of influence of the wrinkle curves. The curves are embed- of 36% along the front. Our algorithm nearly restores the original
ded into the refined mesh to align mesh edges with the wrinkle top. length with just a 2% error. This remaining error is largely due
The refined mesh is generated using constrained Delaunay trian- to the blending of the implicit deformers with the mesh. In the
gulation [Shewchuk 2002]. The resulting refined mesh (Figure 7), opposite direction, .i.e. along the wrinkle curves, shrinkage stays
smoothly joins with the coarse triangulation. below 5%. Finally, we measured the global stretch on the input
and final meshes, expressed as an L2 norm of the compression
Note that using a projection scheme is necessary, since simply magnitudes. We obtained a 20% reduction in the global stretch,
summing displacement fields associated with skeleton curves, as although restoring isometry to the rest-shape was not an explicit
in [Singh and Fiume 1998], would generate visible artifacts in our goal of our method.
case (Figure 8). Instead, our scheme takes advantage of the almost
bulge-free behavior of convolution surfaces when curve primitives
joint. The combined action of the wrinkle and mesh deformers Visual Realism: We performed qualitative comparisons of our
is computed at interactive rates and generates believable wrinkle results with real-life outputs for two scenarios: a piece of cloth
shapes, reflecting the compression applied by the coarse animation pushed from several directions (Figure 5) and a towel pushed for-
and the fabric properties. ward by a leg (Figure 11). As shown by these two examples our
results look quite similar to the real-life ones. Clearly exact com-
parison is not possible as the inputs conditions were not identical.
Wrinkling direction and collision avoidance: By choosing the As shown in Figure 11 we also compared our result to a fine simu-
appropriate offset and projection directions each wrinkle deformer lation achieving comparable results in a fraction of the time.
can be used to control the direction of the wrinkles with respect
to the mesh normal . For dressed characters we by default form
outward pointing garment wrinkles thus avoiding creation of ex- Application to complex geometry: We tested our algorithm on
tra collisions between the deformed mesh and the characters body. a number of diverse garment animations. The coarse input simu-
Figure 10: Simulating different fabrics. From left to right: frame from a coarse simulation; two frames augmented with believable wrinkles
for different types of fabric; zoom on merging wrinkles

gains one order of magnitude. The following table summarizes our

computational time in ms per frame. We separate wrinkle curve
processing from geometry generation done by locally projecting
vertices to the implicit surface.
coarse wrinkle projected projection
vertices curve vertices time
Basic rectangle 400 100ms 475 118ms
Towel 80 50ms 300 75ms
Figure 11: While high resolution simulation takes 10 to 25s per T-shirt 1168 800ms 1500 750ms
frame, our method takes 2s per frame and exhibits even finer details. Bunnys dress 364 300ms 1000 700ms
a: Real experiment (left), high resolution simulation (middle) and Tights 1112 400ms 500 400ms
the output of our method (right). Note the consistency between our Dress Fig. 13 931 700ms 900 600ms
and real wrinkle orientations. b: High resolution simulation (left) Dress Teaser 1249 850ms 3500 2700ms
and our wrinkles (right).
Note that the number of projected vertices depends mainly on the
lations were created using Blender1 . Figure 1 shows a dress and re-triangulation criteria and on the number of wrinkles. The projec-
a t-shirt worn by an animated character. The wrinkles our method tion algorithm is clearly the slowest part of our algorithm. Fortu-
creates on both are consistent with the motion. As shown in the nately, while the wrinkle curves computation needs to be performed
associated video, our approach generates a believable dynamic be- iteratively frame-to-frame, this more time-consuming step is inde-
havior for the wrinkling t-shirt when the character suddenly stops pendent for each frame and thus can be run in parallel.
rotating. An example of using our method to add wrinkles to skin-
ning based animation in shown in Figure 12, with realistic wrinkles
showing up on the tights as the characters leg bends. Figure 13 6 Discussion and Conclusion
shows three other interesting animations, including two dressed fe-
male characters with different dresses and motions and a dressed We have presented a procedural method that augments a pre-
bunny. The corresponding complete sequences are shown in the ac- existing cloth animation with realistic-looking wrinkles at interac-
companying video. In all the examples the added wrinkles visibly tive rates. Being able to quickly enhance a coarse dynamic simu-
enhance the coarse inputs. These examples demonstrate that fast lation with plausible visual details is an appealing approach when
simulation automatically augmented with fine wrinkles provides a no accuracy is required. This paper advances this approach one
viable, believable alternative to full-blown simulation. step further by enabling the automatic creation of believable cloth
wrinkles using cues provided by the coarse animation. The wrinkle
placement is based on an analysis of the stretch created by the ani-
mation and the wrinkle shape and motion are continuous over time.
Although limited by the lack of accurate information on the way
real cloth wrinkles move and deform, our procedural model, tuned
from a few experiments with real cloth, achieves believable results.
Figure 12: Wrinkling skinning animation (left), note the gradually Since it is used as a post-process, wrinkle generation can be tuned
appearing wrinkles on the tights (right). independently from the coarse simulation by adjusting the wrinkle
radius parameter, simplifying user control.
Runtimes: We tabulated the runtimes of our method executed on
a single CPU and compared them with the cloth simulation module One of the contributions of this work are the new implicit deformers
available in the open-source Blender software. This cloth simula- used for wrinkle generation. Visually realistic wrinkle shapes with
tion module is based on implicit integration and uses the collision varying width and depth that smoothly merge and separate are gen-
processing method from [Bridson et al. 2002]. erated thanks to the blending between curve-based primitives and
our new mesh-deformer. The shapes we generate for wrinkles look
In our experiments, low resolution simulations were computed quite believable and reduce the local compression, although they do
at 25ms to 2s per frame depending on the collision complexity. not ensure exact isometry with the pattern, nor do they ensure that
Adding our wrinkles generally takes 1s to 2s per frame. To compare the created surface is developable. This was not our goal.
with, higher resolution simulations obtained after uniform mesh
subdivision such that triangle edges are not longer than our mini- Although flat to rounded wrinkles can be represented by our
mal curvature radii run at 10 to 25 seconds per frame, so our method method, our solution does not currently handle extreme wrinkles
that can appear when a piece of cloth is highly compressed. While
1 those can be generated by using a positive offset to place wrinkle-
Figure 13: Wrinkling garment simulations, before (top) and after (bottom).

deformers above the mesh, the projection method used to apply the K IMMERLE , S., WACKER , M., AND H OLZER , C. 2004. Multilay-
deformation to the mesh vertices restricts us to height-field shapes. ered wrinkle textures from strain. VMV 225232.
Another geometric feature we did not address here is the sharp M CCORMACK , J., AND S HERSTYUK , A. 2001. Creating and
wrinkles that appear where cloth is put under tension. Here, we rendering convolution surfaces. Computer Graphics Forum 17,
could use the stretch tensor to generate these wrinkles as well us- 113120.
ing lines of maximal elongation, given by the eigenvector of largest
M ULLER , M., AND C HENTANEZ , N. 2010. Wrinkle meshes. In
eigenvalue larger than one in the tensor.
Proc. of ACM/EG Symp. on Comp. Animation (SCA).
Lastly, our method relies on the presence of a rest-shape, which is
typically available in simulation settings. A promising future work P ENNEC , X., F ILLARD , P., AND AYACHE , N. 2006. A riemannian
would be to combine our method with some pre-process extracting framework for tensor computing. Int. J. of Comp. Vision 66, 1.
such a rest-shape from a static mesh representing a worn garment P OPA , T., Z HOU , Q., B RADLEY, D., K RAEVOY, V., F U , H.,
or from a motion sequence, such as cloth motion capture. S HEFFER , A., AND H EIDRICH , W. 2009. Wrinkling captured
garments using space-time data-driven deformation. Computer
References Graphics Forum (Eurographics) 28, 2.

B LOOMENTHAL , J., Ed. 1997. Introduction to Implicit Surfaces. S ANDER , P. V., S NYDER , J., G ORTLER , S. J., AND H OPPE ,
Morgan Kaufmann, July. H. 2001. Texture mapping progressive meshes. In ACM SIG-
GRAPH01, 409416.
B RIDSON , R., F EDKIW, R., AND A NDERSON , J. 2002. Robust
treatment of collisions, contact and friction for cloth animation. S HEFFER , A., L EVY, B., M OGILNITSKY, M., AND B O -
GOMYAKOV, A. 2005. ABF++: Fast and robust angle based
ACM Transactions on Graphics (SIGGRAPH) 21, 3.
flattening. ACM Transaction on Graphics 24, 2, 311330.
C HOI , K.-J., AND KO , H.-S. 2002. Stable but responsive cloth.
ACM Transaction on Graphics (SIGGRAPH) 21, 3. Z HOU , K. 2007. Mesh parameterization: Theory and practice.
C HOI , K.-J., AND KO , H.-S., Eds. 2005. Advanced Topics on ACM SIGGRAPPH, course notes.
Clothing Simulation and Animation. SIGGRAPH Courses. S HEWCHUK , J. R. 2002. Constrained delaunay triangulations.
C UTLER , L., G ERSHBEIN , R., WANG , X., C URTIS , C., M AI - Software available at jrs/.
GRET, E., P RASSO , L., AND FARSON , P. 2005. An art-directed S INGH , K., AND F IUME , E. 1998. Wires: a geometric deformation
wrinkle system for CG character clothing. Proc. of ACM/EG technique. SIGGRAPH98.
Symp. on Comp. Animation (SCA).
TALPAERT, Y. 2003. Tensor Analysis and Continuum Mechanics.
DE AGUIAR , E., S IGAL , L., T REUILLE , A., AND H ODGINS , J. Springer.
2010. Stable spaces for real-time clothing. ACM Transactions
on Graphics (SIGGRAPH) 29, 4. TANG , K., AND C HEN , M. 2009. Quasi-developable mesh sur-
face interpolation via mesh deformation. IEEE Transactions on
D ECAUDIN , P., J ULIUS , D., W ITHER , J., B OISSIEUX , L., S HEF - Visualization and Computer Graphics 15, 3, 518528.
FER , A., AND C ANI , M.-P. 2006. Virtual garments: A fully
geometric approach for clothing design. Computer Graphics Fo- T HOMASZEWSKI , B., PABST, S., AND S TRASSER , W. 2009.
rum (Eurographics) 25, 3. Continuum-based strain limiting. Computer Graphics Forum
(Eurographics) 28, 2.
E NGLISH , E., AND B RIDSON , R. 2008. Animating developable
surfaces using nonconforming elements. ACM Transaction on WANG , H., H ECHT, F., R AMANOORTHI , R., AND OB RIEN , J.
Graphics (SIGGRAPH) 27, 3. 2010. Example-based wrinkle synthesis for clothing animation.
ACM Transactions on Graphics (SIGGRAPH) 29.
T HALMANN , N. 1999. Animating wrinkles on clothes. In IEEE
Proceedings on Visualization99, 175182.