cloth animationdjames/pbmis/notes/pbmis_class14_cloth.… · • developed by kawabata [1984], used...
TRANSCRIPT
Christopher TwiggMarch 4, 2003
Cloth Animation
• Overview
• Models
• Integrating stiff systems
• Collision handling
Outline
• Overview
• Models
• Integrating stiff systems
• Collision handling
Outline
• 2 basic types: woven and knit
• We’ll restrict to woven
• Warp vs. weft
What is cloth?
House, Breen [2000]
• Infinite number of varieties --
• Thread type (wool, polyester, mixtures...)
• Weave type (plain, twill, basket, satin...)
• Weave direction (bias vs. normal cut)
• Seams (fashion design)
• Hysteresis (ironed vs. crumpled in a suitcase)
What makes cloth special?
From Ko, Choi [2002]
• Model
• Complex microstructure
• Realism
• Simplicity
• Integrator
• Dealing with stiffness
• Collision handling: at least as hard as collisions on deformable objects, plus
• No outside/inside!
• These are not separable problems!
Challenges in cloth simulation
Breen, House, Wozny [1994]
Vollino (sic), Courchesne, Magnenat-Thalmann [1998]
• Overview
• Models
• Integrating stiff systems
• Collision handling
Outline
• In general, cloth resists motion in 4 directions:
Cloth modeling basics
In-plane stretch
In-planecompression
In-plane shear(trellising)
Out-of-planebending
• We basically covered this already
• Various modifications to deal with collisions, etc.
Early continuum models
Terzopolous, Platt, Barr, Fleischer [1987]
Carignan, Yang, Thalmann, Thalmann [1992]
Generally not used in practice (although many models use ideas from continuum physics)
• Simple spring-mass system due to Provot [1995]
• You already know how to implement this
A basic mass-spring model
Bend spring Shear spring Stretch spring
• Breen [1992]: energy-based model
• Find final draping position by minimizing the total energy in the cloth
• NOT dynamic!
Particle-based methods
Ui = Urepeli + Ustretchi+ Ubendi
+ Utrellisi
Note: You could convert this to a “normal” particle system model by differentiating energy w.r.t. position,
F = −∇xU
• Tries to make the drape more realistic by measuring from reality
• Uses the Kawabata system
• Fit functions to the measured data
Breen [1984]
Kawabata plots for 3 different types of fabric (Breen, House, Wozny [1994])
• A system for measuring the parameters of cloth
• Stretch
• Shear
• Bend
• Friction
• Developed by Kawabata [1984], used heavily in the textile engineering industry
(aside) The Kawabata system
From Virtual Clothing [ Volino, Magnenat-Thalmann]
Breen [1984] (2)
• A hybrid approach:
• Energy-function-based (similar to Breen)
• Sparse Jacobian
• Don’t use Kawabata curves for numerical reasons (want approximate linearity)
• Triangle-based, like continuum approaches
• Energy functions defined over finite regions
• But how do we determine stretch and shear on triangles (especially if we want to privilege warp and weft directions)?
Baraff, Witkin [1998]
• Basic idea: treat the cloth as a 2-dimensional manifold embedded in
Baraff, Witkin [1998] (2)
R3
u
v
x
y
z
w(u, v)
wu
wv
Note that this mapping only needs to be valid locally (useful for clothing)
We are interested in the vectors and
Baraff, Witkin [1998] (3)
wu wv
u
v
x
y
z
∆x1
∆x2
w(u, v)
(∆u 1
,∆v 1
)
(∆u2, ∆v2)
If we pretend that w is locally linear, we get∆x1 = wu∆u1 + wv∆v1
∆x2 = wu∆u2 + wv∆v2
• Energy functions are defined in terms of a (heuristic) “soft” constraint function , e.g.
Baraff, Witkin [1998] (4)
C(x)
C(x) = a
(||wu(x)||− bu
||wv(x)||− bv
)Stretch:
Shear:
triangle area rest length
C(x) = awu(x)Twv(x)
Bend: C(x) = θ
angle between triangle faces
f(x) = −∂EC
∂x
Now, energy and force are defined asEc(x) =
k
2C(x)TC(x)
• Damping forces turn out to be important both for realism and numerical stability
• Damping forces should
• Act in direction of corresponding elastic force
• Be proportional to the velocity in that directionHence, we derive (this should look familiar)
where
Baraff, Witkin [1998] (5)
d = −kdC(x)∂C(x)
∂x
C(x) =∂C(x)
∂t=
∂C(x)
∂x
∂x
∂t
Direction of force
Baraff, Witkin [1998] (6)
Baraff, Witkin [1998] (7)
• Use by Alias|Wavefront in Maya Cloth
• Probably used by Pixar also
Basic problem: when we push on a piece of cloth like this,
we expect to see this:
But, in our basic particle system model, we have to make the compression forces very stiff to get significant out-of-plane motion. This is expensive.
Ko, Choi [2002]
Ko, Choi use column buckling as their basic model.
They replace bend and compression forces with a single nonlinear model.
Ko, Choi [2002] (2)
Ko, Choi [2002] (3)
• Overview
• Models
• Integrating stiff systems
• Collision handling
Outline
Recall
What does this mean?
Stiffness in ODEs
“Loosely speaking, the initial value problem is referred to as being stiff if the absolute stability requirement dictates a much smaller time step than is needed to satisfy approximation requirements alone.” (Ascher, Petzold [1997])
Consider the following ODE:
The analytical solution is
If we solve it with Euler’s method,
What happens when ?
Stiffness in ODEs -- example
dx
dt= −kx, k " 1
x(t) = Ce−kt
Barely stable Unstable
xt+h = xt − hkxt = (1− hk)xt
hk ! 1
• In general, cloth stretches little if at all in the plane
• To counter this, we generally have large in-plane stretch forces (otherwise the cloth looks “wiggly”)
• The result: stiffness!
Stiffness in cloth
• The solution is to use implicit methods (Terzopolous et al. [1987], Baraff/Witkin [1998])
• Basic idea: express the derivatives at the current timestep in terms of the system state at the next timestep; e.g., backward Euler:
We can apply this to our test equation,
And, voila! For any , |x| actually decreases as a function of time.
Implicit Euler
xt+h = xt + h(−kxt+h)
xt+h(1 + hk) = xt
xt+h =xt
1 + hk
hk > 0
yt+h = yt + hf(t + h,yt+h)
The drawback is that if we look at our equation,
appears on both sides of the equation -- hence the name “implicit.”
Solution: rewrite it as
and use Newton’s method.
Implicit Euler (2)
yt+h = yt + hf(t + h,yt+h)
yt+h
g(yt+h) = yt+h − yt − hf(t + h,yt+h) = 0
For a nonlinear equation
with some initial guess , we can iterate: for a given iterate , we find the next by solving the linear equation
Newton’s method
g(x) = 0
x0
0 = g(xν) + g′(xν)(x − xν)
xν
xνxν+1
In m dimensions, this becomes
Or, rearranging to make it easier to solve,
We can use solve this with our favorite linear systems solver.
Newton’s method (2)
g(x) = 0
xν+1 = xν −(
∂g
∂x(xν)
)−1
g(xν), ν = 0, 1, . . .
∂g
∂x(xν+1 − xν) = −g(xν), ν = 0, 1, . . .
Newton’s method on the equation
results in the equation
or
Rewriting as usual to eliminate the matrix inverse,
With the initial guess , the first iteration is
Implicit Euler (3)
yν+1t+h = yν
t+h −(
∂g
∂y
)−1
g(yνt+h)
g(yt+h) = yt+h − yt − hf(t + h,yt+h) = 0
yν+1t+h = yν
t+h −(I− h
∂f
∂y
)−1
(yνt+h − yt − hf(t + h,yν
t+h))
(I− h
∂f
∂y
)(yν+1
t+h − yνt+h) = −yν
t+h + yt + hf(t + h,yνt+h)
y0t+h = yt(
I− h∂f
∂y
)(yt+h − yt) = hf(t + h,yt)
Recall that our differential equation for cloth is (in state-space formulation),
The implicit Euler method is
Take the first Newton iteration only (for speed):
Baraff and Witkin reduce the dimensionality by back-substituting ∆x into the equation for ∆v
Implicit Euler in Baraff/Witkin
[xt+h
vt+h
]=
[xt
vt
]+ h
[vt+h
M−1f(xt+h,vt+h)
]
(I− h
[0 I
M−1 ∂f∂x M−1 ∂f
∂v
]) [∆x∆v
]= h
[v
M−1f(xt,vt)
]
d
dt
[xv
]=
[v
M−1f(x,v)
]
The final equation they solve is
Assuming a reasonable force model, this is symmetric and positive definite, so it can be solved using conjugate gradient.
Implicit Euler in B/W (2)
(M− h
∂f
∂v− h2 ∂f
∂x
)∆v = h
(f0 + h
∂f
∂xv0
)(I− hM−1 ∂f
∂v− h2M−1 ∂f
∂x
)∆v = hM−1
(f0 + h
∂f
∂xv0
)
In many cases, we would actually like certain masses to be ∞, e.g., for constraints.
In this case, the matrix M-1 is rank deficient, multiplying by M is meaningless
Solution: use the “unconstrained” M matrix in PCG -- but after every iteration project back onto the constraint manifold.
For details, consult Baraff and Witkin [1998]. Also:
Conjugate Gradient in B/W
Ascher, U. and Boxerman, E. “On the modified conjugate gradient method in cloth simulation.” http://www.cs.ubc.ca/spider/ascher/papers/ab.pdf
Implicit Euler has only first-order accuracy
More recently, people have been using 2nd-order backward differences (Ko/Choi [2002], Bridson et al [2002]).
• Multistep
• 2nd order accuracy
Higher-order implicit methods
An alternative approach is to avoid stiffness altogether by applying only non-stiff spring forces and then “fixing” the solution at the end of the timestep.(Provot [1995], Desbrun et al [1999], Bridson et al [2002])
We can do this with impulses and Jacobi iteration.
Avoiding stiffness
Iteration 1 Iteration 2 Iteration 3 (converged)
• Popular for interactive applications
• Justification
• Biphasic spring model
•••••••• Plausible dynamics
Avoiding stiffness (2)
Iteration 1 Iteration 2 Iteration 3 (converged)
Linear elastic region
Force
Dis
plac
emen
t
From Desbrun, Meyer, Barr [2000]
• Overview
• Models
• Integrating stiff systems
• Collision handling
Outline
• We already covered this for deformable bodies
• Many of the same methods work, especially acceleration methods
• Generally need to do triangle-triangle collision checks:
Collision detection
Point-face collisionEdge-edge collision
If triangles are moving too fast, they may pass through each other in a single timestep.
We can prevent this by checking for any collisions during the timestep (Provot [1997])
Note first that both point-face and edge-edge collisions occur when the appropriate 4 points are coplanar
Robust collision detection
Detecting time of coplanarity - assume linear velocity throughout timestep:
So the problem reduces to finding roots of the cubic equation
Once we have these roots, we can plug back in and test for triangle adjacency.
Robust collision detection (2)
v1
v2
v3v4
x12 + tv12
x13 + tv
13
x14 + tv14
(x12 + tv12)× (x13 + tv13)
((x12 + tv12)× (x13 + tv13)
) · (x14 + tv14)
• 4 basic options:
• Constraint-based
• Penalty forces
• Impulse-based
• Rigid body dynamics (will explain)
Collision response
• Assume totally inelastic collision
• Constrain particle to lie on triangle surface
• Benefits:
• Fast, may not add stiffness (e.g., Baraff/Witkin)
• No extra damping needed
• Drawbacks
• Only supports point-face collisions
• Constraint attachment, release add discontinuities (constants hard to get right)
• Doesn’t handle self-collisions (generally)
• Conclusion: a good place to start, but not robust enough for heavy-duty work
Constraint-based response
• Must keep track of constraint forces in the simulator -- that is, the force the simulator is applying to maintain the constraint
• If constraint force opposes surface normal, need to release particle
Constraint-based response (4)
• Apply a spring force that keeps particles away from each other
• Benefits:
• Easy to fit into an existing simulator
• Works with all kinds of collisions (use barycentric coordinates to distribute responses among vertices)
• Drawbacks:
• Hard to tune: if force is too weak, it will sometimes fail; if force is too strong, it will cause the particles to “float” and “wiggle”
Penalty forces
• In general, penalty forces are not inelastic (springs store energy)
• Can be made less elastic by limiting force when particles are moving away
• Some kind of additional damping may be needed to control deformation rate along surface
Penalty forces (2)
• “Instantaneous” change in momentum
• Generally applied outside the simulator timestep
• Benefits
• Correctly stops all collisions (no sloppy spring forces)
• Drawbacks
• Can have poor numerical performance
• Handles persistent contact poorly
Impulses
J =
∫ tf
ti
F dt = pf − pi
Iteration is generally necessary to remove all collisions.
Impulses (2)
Initial state Apply impulse responses Intermediate state
Apply impulse responses Final state
Convergence may be slow in some cases.
• Basic idea: if a group of particles start timestep collision-free, and move as a rigid body throughout the timestep, then they will end timestep collision-free.
• We can group particles involved in a collision together and move them as a rigid body (Provot [1997] -- error?, Bridson [2002])
Rigid collision impact zones
centerof mass
xCM =
∑i mixi
mivCM =
∑i mivi
mi
L =∑
i
mi(xi − xCM)× (vi − vCM)
I =∑
i
m(|xi − xCM |2δ − (xi − xCM)⊗ (xi − xCM)
)ω = I−1L
vi = vCM + ω × (xi − xCM)
Momentum
Inertia tensor
Angular velocity
Center of mass frame
Final velocity
• Note that this is totally failsafe
• We will need to iterate, and merge impact zones as we do (e.g. until the impact zone includes all colliding particles)
• This is best used as a last resort, because rigid body cloth can be unappealing.
Rigid collision impact zones (2)
centerof mass
• So we have:
• penalty forces - not robust, not intrusive (i.e., integrates with solver)
• impulses - robust (esp. with iteration), intrusive - but may not converge
• rigid impact zones - completely robust, guaranteed convergence, but very intrusive
Solution? Use all three! (Bridson et al [2002])
Combining methods
centerof mass
Basic methodology (Bridson et al [2002]):1. Apply penalty forces (implicitly)2. While there are collisions left
1. Check robustly for collisions2. Apply impulses
3. After several iterations of this, start grouping particles into rigid impact zones
4.Objective: guaranteed convergence with minimal interference with cloth internal dynamics
Combining methods (2)
Bridson et al [2002]
• Overview
• Models
• Integrating stiff systems
• Collision handling
Summary