modeling and solving constraints erin catto blizzard entertainment
TRANSCRIPT
![Page 1: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/1.jpg)
Modeling and Solving Modeling and Solving ConstraintsConstraints
Erin CattoBlizzard Entertainment
![Page 2: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/2.jpg)
Executive Summary
Constraints are used to simulate joints, contact, and collision.
We need to solve the constraints to stack boxes and to keep ragdoll limbs attached.
Constraint solvers do this by calculating impulse or forces, and applying them to the constrained bodies.
![Page 3: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/3.jpg)
Overview
Constraint Formulas Deriving Constraints
Joints, Motors, Contact Building a Constraint Solver
![Page 4: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/4.jpg)
Constraint Types
Contact and Friction
![Page 5: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/5.jpg)
Constraint Types
Ragdolls
![Page 6: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/6.jpg)
Constraint Types
Particles and Cloth
![Page 7: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/7.jpg)
Show Me the Demo!
![Page 8: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/8.jpg)
Motivation
Bead on a Rigid Wire (2D)
( ) 0C x
Implicit Function
This is a constraint equation!
![Page 9: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/9.jpg)
Velocity
v
The normal vector is perpendicular to the curve.
n
So this dot product is zero: 0T n v
![Page 10: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/10.jpg)
Velocity Constraint
( ) 0C xPosition Constraint:
0C Velocity Constraint:
If C is zero, then its time derivative should be zero.
![Page 11: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/11.jpg)
Velocity Constraint
Velocity constraints define the allowed motion.
Velocity constraints can be satisfied by applying impulses.
More on that later.
![Page 12: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/12.jpg)
The Jacobian
Due to the chain rule the velocity constraint has a special structure:
0C Jv
J is the Jacobian.
![Page 13: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/13.jpg)
The Jacobian
v
TJ
The Jacobian is perpendicular to the velocity.
0C Jv
![Page 14: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/14.jpg)
The Velocity Map
v J C
CartesianSpace
Velocity
ConstraintSpace
Velocity
![Page 15: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/15.jpg)
Constraint Force
v
Assume the wire is frictionless.
What is the force between the wire and the bead?
![Page 16: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/16.jpg)
Lagrange Multiplier
v
cF
Intuitively the constraint force Fc is parallel to the normal vector.
Tc F J
Direction known.Magnitude unknown. implies
![Page 17: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/17.jpg)
Lagrange Multiplier
Lambda is the constraint force signed magnitude.
How do we compute lambda? That is the solver’s job. Solvers are discussed later.
![Page 18: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/18.jpg)
The Force Map
cF
ConstraintSpaceForce
CartesianSpaceForce
TJ
![Page 19: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/19.jpg)
Work, Energy, and Power
Work = Force times Distance
Work has units of Energy (Joules)
Power = Force times Velocity (Watts)
![Page 20: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/20.jpg)
Principle of Virtual Work
Tc F J
Constraint forces do no work, so they must be perpendicular to the allowed velocity.
0Tc F v Jv
Proof:
So the constraint force doesn’t affect energy.
Assertion:
![Page 21: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/21.jpg)
Constraint Quantities
C
C
J
Position Constraint
Velocity Constraint
Jacobian
Lagrange Multiplier
![Page 22: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/22.jpg)
Why all the Painful Abstraction? To put all manner of constraints into
a common form for the solver. To allow us to efficiently try different
solution techniques.
![Page 23: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/23.jpg)
Time Dependence
Some constraints, like motors, have prescribed motion.
This is represented by time dependence.
, 0C t x
( ) 0C b t Jv
Position:
Velocity:
velocity bias
![Page 24: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/24.jpg)
Example: Distance Constraint
T
C xv
x
T
x
Jx
y
x
L
C L x
0b
Position:
Velocity:
Jacobian:
Velocity Bias: is the tension
particle
![Page 25: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/25.jpg)
Gory Details
2 2
2 2
2 2
2 2
2 2
1
2
20
2
1
x y
Tx
y
dC dx y L
dt dtd dL
x ydt dtx y
xv yv
x y
vx
vyx y
![Page 26: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/26.jpg)
Computing the Jacobian
At first, it is not easy to compute the Jacobian.
It helps to have the constraint equation first.
It gets easier with practice. Try to think in terms of vectors.
![Page 27: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/27.jpg)
A Recipe for J
Use geometry to write C. Differentiate C with respect to time. Isolate v. Identify J by inspection (and b). Don’t compute partial derivatives!
C b Jv
![Page 28: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/28.jpg)
Homework
1 2
2 1
2 1 1
cos
0
T
T
C
C
C
a a
p p
p p a
Angle Constraint:
Point Constraint:
Line Constraint:
![Page 29: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/29.jpg)
Newton’s Law
a c Mv F F
We separate applied forces andconstraint forces.
![Page 30: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/30.jpg)
Types of Forces
Applied forces are computed according to some law: F = mg, F = kx, etc.
Constraints impose kinematic (motion) conditions.
Constraint forces are implicit. We must solve for constraint forces.
![Page 31: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/31.jpg)
Constraint Potpourri
Joints Motors Contact Restitution Friction
![Page 32: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/32.jpg)
Joint: Distance Constraint
Tc F Jy
x
v
a mF g
T
x
Jx
![Page 33: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/33.jpg)
Motors
A motor is a constraint with limited force (torque).
sinC t
Example
10 10
A Wheel
Note: this constraint does work.
![Page 34: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/34.jpg)
Velocity Only Motors
2C
Example
Usage: A wheel that spins at a constant rate.We don’t care about the angle.
5 5
![Page 35: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/35.jpg)
Inequality Constraints
So far we’ve looked at equality constraints (because they are simpler).
Inequality constraints are needed for contact, joint limits, rope, etc.
( , ) 0C t x
![Page 36: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/36.jpg)
Inequality Constraints
0C
What is the velocity constraint?
If0C
Else
skip constraint
enforce:
![Page 37: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/37.jpg)
Inequality Constraints
Force Limits:
Inequality constraints don’t suck.
0
![Page 38: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/38.jpg)
Contact Constraint
Non-penetration. Restitution: bounce Friction: sliding, sticking, and rolling
![Page 39: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/39.jpg)
Non-Penetration Constraint
nC
p
body 2
body 1(separation)
![Page 40: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/40.jpg)
Non-Penetration Constraint
2 1
2 2 2 1 1 1
1
1 1
2
2 2
( )p p
T
C
v v n
v ω p x v ω p x n
n v
p x n ω
n v
p x n ω
J v
A B C
C A B
B C A
Handy Identities
![Page 41: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/41.jpg)
Restitution
2 1( )n p pv v v n
Relative normal velocity
Adding bounce as a velocity bias
nb ev0n nC v ev
n nv ev
Velocity Reflection
![Page 42: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/42.jpg)
Friction Constraint
Friction is like a velocity-only motor.
The target velocity is zero.
p
p
T
C
v t
v ω p x t
t v
p x t ω
J v
t
![Page 43: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/43.jpg)
Friction Constraint
The friction force is limited by the normal force.
Coulomb’s Law: t n
Or: n t n
Where: 0
![Page 44: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/44.jpg)
What is a Solver?
Collect all forces and integrate velocity and position.
Apply constraint forces to ensure the new state satisfies the constraints.
We must solve for the constraint forces because they are implicit.
![Page 45: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/45.jpg)
Solver Types
Global Solvers (slow) Iterative Solvers (fast)
![Page 46: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/46.jpg)
Solving A Chain
1
2
3
Global:solve for 1, 2, and 3 simultaneously.
Iterative:while !done
solve for 1solve for 2solve for 3
![Page 47: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/47.jpg)
Sequential Impulses (SI)
An iterative solver. SI applies impulses at each
constraint to correct velocity errors. SI is fast and stable (usually). Converges to a global solution
(eventually).
![Page 48: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/48.jpg)
Why Impulses?
Easier to deal with friction and collision.
Velocity is more intuitive than acceleration.
Given the time step, impulse and force are interchangeable.
hP F
![Page 49: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/49.jpg)
Sequential Impulses
Step1:
Integrate applied forces, yielding new velocities.Step2:
Apply impulses sequentially for all constraints, to correct the velocity errors.
Step3:
Use the new velocities to update the positions.
![Page 50: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/50.jpg)
Step 1 :Integrate Applied Forces
12 1 ah v v M F
Euler’s Method
This new velocity tends to violate the velocity constraints.
![Page 51: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/51.jpg)
Step 2:Apply Corrective Impulses
For each constraint, solve:
12 2
2 0
T
b
v v M P
P J
Jv
Newton:
Virtual Work:
Velocity Constraint:
![Page 52: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/52.jpg)
Step 2: Impulse Solution
2
1
1
C
C T
m b
m
Jv
JM J
The scalar mC is the effective mass seen bythe constraint impulse:
Cm C
![Page 53: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/53.jpg)
Step 2: Velocity Update
12 2
T
P J
v v M P
Now that we solved for lambda, we can use itto update the velocity.
![Page 54: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/54.jpg)
Step 2: Iteration
Loop over all constraints until you are done: - Fixed number of iterations. - Corrective impulses become small. - Velocity errors become small.
![Page 55: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/55.jpg)
Step 3: Integrate Positions
2 1 2h x x v
Use the new velocity:
This is the Symplectic Euler integrator.
![Page 56: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/56.jpg)
Extensions to Step 2
Handle position drift. Handle force limits. Handle inequality constraints.
![Page 57: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/57.jpg)
Handling Position Drift
Velocity constraints are not obeyed precisely.
Joints will fall apart.
![Page 58: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/58.jpg)
Baumgarte Stabilization
Feed the position error back into the velocity constraint.
0C Ch
Jv
New velocity constraint:
Bias factor:
0 1
![Page 59: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/59.jpg)
Baumgarte Stabilization
What is the solution to:
0C Ch
???
ODE …
First-order differential equation …
![Page 60: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/60.jpg)
Answer
0 expt
C Ch
exp t
![Page 61: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/61.jpg)
Tuning the Bias Factor
If your simulation has instabilities, set the bias factor to zero and check the stability.
Increase the bias factor slowly until the simulation becomes unstable.
Use half of that value.
![Page 62: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/62.jpg)
Handling Force Limits
First, convert force limits to impulse limits.
impulse forceh
![Page 63: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/63.jpg)
Handling Impulse Limits
Clamping corrective impulses:
min maxclamp , ,
Is it really that simple?
Hint: no.
![Page 64: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/64.jpg)
How to Clamp
Each iteration computes corrective impulses.
Clamping corrective impulses is wrong!
You should clamp the total impulse applied over the time step.
The following example shows why.
![Page 65: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/65.jpg)
Example: Inelastic Collision
v
P
A Falling Box
P
Global Solution 1
2mP v
![Page 66: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/66.jpg)
Iterative Solution
1P 2Piteration 1
constraint 1
constraint 1 constraint 2
Suppose the corrective impulses are too strong.What should the second iteration look like?
![Page 67: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/67.jpg)
Iterative Solution
1P 2P
iteration 2
To keep the box from bouncing, we needdownward corrective impulses.
In other words, the corrective impulses arenegative!
![Page 68: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/68.jpg)
Iterative Solution
But clamping the negative corrective impulseswipes them out:
clamp( , 0, )
0
This is a nice way to introduce jitter intoyour simulation.
![Page 69: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/69.jpg)
Accumulated Impulses
For each constraint, keep track of the total impulse applied.
This is the accumulated impulse. Clamp the accumulated impulse. This allows the corrective impulse to
be negative when the accumulated impulse is still positive.
![Page 70: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/70.jpg)
New Clamping Procedure
Step A:Compute the corrective impulse, but don’t apply it.
Step B:Add the corrective impulse to the accumulated impulse.
Step C:Clamp the accumulated impulse.
Step D:Compute the change in the accumulated impulse.
Step E:Apply the impulse found in Step D.
![Page 71: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/71.jpg)
Handling Inequality Constraints
Before iterations, determine if the inequality constraint is active.
If it is inactive, then ignore it. Clamp accumulated impulses:
0 acc
![Page 72: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/72.jpg)
Inequality Constraints
A problem:
overshoot
active inactive active
gravity
Jitter is not nice!
![Page 73: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/73.jpg)
Preventing Overshoot
slopCh
Jv
Allow a little bit of penetration (slop).
If separation < slop factor
C JvElse
Note: the slop factor will be negative (separation).
![Page 74: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/74.jpg)
Other Important Topics
Warm Starting Split Impulses
![Page 75: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/75.jpg)
Warm Starting
Iterative solvers use an initial guess for the lambdas.
So save the lambdas from the previous time step.
Use the stored lambdas as the initial guess for the new step.
Benefit: improved stacking.
![Page 76: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/76.jpg)
Step 1.5
Apply the stored lambdas. Use the stored lambdas to initialize
the accumulated impulses.
![Page 77: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/77.jpg)
Step 2.5
Store the accumulated impulses.
![Page 78: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/78.jpg)
Split Impulses
Baumgarte stabilization affects momentum.
This is bad, bad, bad! Unwanted bounces Spongy contact Jet propulsion
![Page 79: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/79.jpg)
Split Impulses
Use different velocity vectors and impulses.
vReal:
pseudovPseudo:
pseudo
Two parallel solvers.
![Page 80: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/80.jpg)
Split Impulses
The real velocity only sees pure velocity constraints.
The pseudo velocity sees position feedback (Baumgarte).
The Jacobians are the same!
![Page 81: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/81.jpg)
Pseudo Velocity
The pseudo velocity is initialized to zero each time step.
The pseudo accumulated impulses don’t use warm starting (open issue).
![Page 82: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/82.jpg)
Step 3 (revised):Integrate Positions
2 1 2 pseudoh x x v v
Use the combined velocity:
![Page 83: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/83.jpg)
Further Reading
http://www.cs.cmu.edu/~baraff/sigcourse/notesf.pdf
http://www.gphysics.com/downloads/
http://www.continuousphysics.com And the references found there.
![Page 84: Modeling and Solving Constraints Erin Catto Blizzard Entertainment](https://reader033.vdocuments.site/reader033/viewer/2022061601/56649f495503460f94c6ac49/html5/thumbnails/84.jpg)
Box2D Demo
An open source 2D physics engine. http://www.gphysics.com/box2d A test bed and a learning aid.