View
226
Download
1
Embed Size (px)
Citation preview
Overview – Main problem
Few techniques are currently able to handle the animation in interactive rates so far
Both efficiency and stability are desired
Overview
A stable and efficient algorithm for animating mass-spring system based cloth
Focus is the cloth modeling and the interaction between cloth and different environments based on this technique
Overview - Outline
Principle of implicit integration Integration scheme Post-step modification Cloth simulation in virtual
environment Results
Implicit integration – 1D
Each discrete mass point i of mass m at position xi moves at speed of vi
Adjacent points are connected by spring of stiffness k
Superscript indices indicate the current step number )( 0 ndttxx i
ni
Implicit integration – 1D
The explicit Euler integration looks like
Assuming the force Fi is constant over a time step
dtvxx
m
dtFvv
ni
ni
ni
ni
ni
ni
11
1
Implicit integration – 1D
The time step should be inversely proportional to the square root of the stiffness k [Courant condition]
System is stable only for small time steps
dtvxx
m
dtFvv
ni
ni
ni
ni
ni
ni
11
1
Implicit integration – 1D
The implicit integration is
Replacing the forces at time t by for forces at time t+dt
dtvxx
m
dtFvv
ni
ni
ni
ni
ni
ni
11
11
Implicit integration – 1D
How to compute Fn+1 without knowing the exact position of next time step?
By a first-order approximation
xx
FFF nnn 11
Implicit integration – 1D
Notice
H is the negated Hessian matrix of the system
H is CONSTANT (for 1D case) and symmetric
Hx
F
Implicit integration – 1D
Re-write Put everything together
Then we have
dtvvx nnn )( 11
xx
FFF
dtvxx
m
dtFvv
nnn
ni
ni
ni
ni
ni
ni
11
11
11
m
dtdtHvFH
m
dtIv nnn )()( 1
21
Implicit integration - Comparison
Extra force added to Fn as
It’s used as artificial viscosity: a mass point is influenced by the motion of its neighbors
It’s proportional to dt and k
Edgesjij
ijin vvkdtFdtHvF
),(|
~~
)(,
m
dtdtHvFH
m
dtIv nnn )()( 1
21
Implicit integration – Comparison
Where acts like ‘filters’ The bigger the stiffness k is, the wider filt
ers are. The resulting force on a mass point will take into account more forces around
m
dtdtHvFH
m
dtIv nnn )()( 1
21
Integration Scheme - Extension
Extension 1D to 2D/3D
A mass point i is connected to all the other points j with springs of rest length and stiffness kij
0ijl
Integration Scheme - Extension
H is not CONSTANT any more, instead
It’s a 3n x 3n matrix and needs to be solved at each time step
3
03
0
||||
)()(
||||
||||),(
ji
jiT
jiij
ji
ijjiij
i xx
xxxxlI
xx
lxxk
x
jiFH
Integration Scheme - Splitting
By decomposing the forces into 2 parts, a linear and a nonlinear one:
Do approximate integration of two parts
||||
)(),(),(),(
),(),(),(
0
ji
jiijij
linearnonjiij
linear
linearnonlinear
xx
xxlkjiFxxkjiF
jiFjiFjiF
Integration Scheme – Linear part
From above analysis, it’s easy to solve this linear part cause the 3n x 3n Hessian matrix H is CONSTANT
ij
ijii
ijij
kH
jikH ,
Integration Scheme – Nonlinear part
The nonlinear part always has the same magnitude between t and t+dt, which means it only rotates
An angle error is introduced, which needs to be balanced with a straightforward displacement later
Integration Scheme – Nonlinear part
After the internal forces have been filtered, compute resulting global torque T as
xG is the center of gravity. Because the sum of all internal forces is 0, re-write T as
n
i
filterediiG FxxT
1
*)(
n
ii
filteredi xFT
1
*
Integration Scheme – Nonlinear part
T is supposed to be 0, so we can modify the integration output to balance it. Simply add the correction force on each mass point i
This is not a zero-error scheme. In practice the result becomes implausible only for big k or dt: wrinkled mesh
TdtxxF iGcorrectioni *)(
Post-step Modification - Motivation
Mass-spring is not perfect to model cloth
The elongation is proportional to the force applied but the natural force/deformation curve is normally nonlinear
Post-step Modification – Implementation
A force/deformation ratio threshold for each spring as dmax. Iterate over stretched spring and shrink them
When to stop? After fixed iteration steps Time is up