Animation CS 551 / 651 Lecture 4 Rigid-body Simulation

advertisement
Baraff, 1991
Animation
CS 551 / 651
Lecture 4
Rigid-body Simulation
Physical Simulation
References
• Physics for Game Developers (Bourg)
• Chris Hecker Game Developer articles
– http://www.d6.com/users/checker/dynamics.htm
Equations of Motion
The physics-based equations that define
how objects move
• Gravity
• Turbulence
• Contact forces with objects
• Friction
• Joint constraints
Why is this a graphics problem?
Physics gives us a lot
• Analytical methods for computing movements of objects in
idealized environments
There’s a lot missing
• Everything on a computer is discrete
– Positions and velocities are discrete
– Time is discrete
• Accurate modeling of friction, collisions, constrained motion
• Simulating so it is “good enough”
Why is this a graphics problem?
Unpredictable situations are not generalizable
• Computations with small & large numbers is tough
– Small numbers go to zero
– Large numbers go to NaN
• Collisions of so many varieties (special cases)
– Edge-edge, edge-face, face-face, vertex-vertex
Unique features of graphics
• Discretization introduces errors
• Graphics representations are frequently polygonal
Equations of Motion
Current State
Equations of
Motion
Position and velocity
Integrate
Forces
Integrate
Velocities
Accelerations
Integrate
Equations of Motion
Linear motions:
r (t )   v(t )dt
v(t )   a (t )dt
Example:
• Constant
acceleration of
5 m/s2
v(t )   a dt   5dt  5t  C
v(0)  5(0)  C
v0  C
v(t )  5t  v0
5 2
r (t )   v(t )dt   5t  v0 dt  t  v0t  r0
2
Linear Momentum
Mass times velocity = linear momentum, p

p  mv
Newton’s Second Law
  dp d (mv )



F p

 mv  ma
dt
dt
Ceasing to identify vectors…
Rigid Bodies
Imagine a rigid body as a set of point masses
Total momentum, pT, is sum of momentums of all
i i
points: p T 
mv

i
Center of Mass (CM) is a
single point. Vector to CM
CM
r 
is linear combination of
vectors to all points in rigid
body weighted by their masses,
divided by total mass of body
m r
i i
i
M
Total Momentum
Rewrite total momentum in terms of CM
i i
CM
d
(
m
r
)
d
(
Mr
)
T
i i
p  m v  

dt
dt
i
i
Total linear momentum equals total mass times the
velocity of the center of mass
(For continuous rigid bodies, all summations turn
into integrals over the body, but CM still exists)
We can treat all bodies as single point mass and
velocity
Total Force
Total force is derivative of the total momemtum
• Again, CM simplifies total force equation of a rigid body
F  p  Mv
T
T
CM
 Ma
CM
• We can represent all forces acting on a body as if their
vector sum were acting on a point at the center of mass
with the mass of the entire body
Intermediate Results
• Divide a force by M to find acceleration of the
center of mass
• Integrate acceleration over time to get the
velocity and position of body
• Note we’ve ignored where the forces are
applied to the body
• In linear momentum, we don’t keep track of the
angular terms and all forces are applied to the
CM.
Ordinary Differential Equations
Solving for a function satisfying an equation
containing one or more derivatives of an
unknown variable
• Derivatives of the dependent variable
• Dependent variable
• Independent variable
dv
v
a

dt
m
v’s derivative is a function of its current value
Ordinary refers to ordinary derivatives
• As opposed to partial derivatives
Integrating ODEs
Analytically solving ODEs is complicated
Numerically integrating ODEs is much
easier (in general)
• Euler’s Method
• Runge-Kutta
Euler’s Method
Based on calculus definition of first
derivative = slope
Euler’s Method
Use derivative at time n to integrate h units
forward
dyn
yn 1  yn  h
dx
Euler Errors
Depending on ‘time step’ h, errors will
accumulate
SIGGRAPH Course Notes
Accumulating Errors
SIGGRAPH Course Notes
Recap
Angular Effects
Let’s remain in 2-D plane for now
In addition to kinematic variables
• x, y positions
Add another
kinematic variable
• W angle
• CCW rotation of object
axes relative to world
axes
Angular Velocity
w is the angular velocity
d W dw

 w  a
2
dt
dt
2
a is the angular acceleration
Computing Velocities
How do we combine linear and angular quantities?
Consider velocity of a point, B, of a rigid body
rotating about its CM
v  wr
B
OB
r_perp is perpendicular to r vector from O to B
Velocity is w-scaled perpendicular vector from
origin to point on body
v
o
r
More Details
Point B travels W radians
Point B travels C units
Radius of circle is r
C= Wr
• By definition of radians,
where circumference = 2pr
B’s speed (magnitude of velocity vector)
• Differentiate C= Wr w.r.t. time
d (Wr ) dW

r  wr
dt
dt
More Details
The direction of velocity is tangent to circle
== perpendicular to radius
Therefore, linear
velocity is angular
velocity multiplied
by tangent vector
Chasles’ Theorem
Any movement is decomposed into:
• Movement of a single point on body
• Rotation of body about that point
Linear and Angular Components
v  v  wr
B
O
OB
Angular Momentum
The angular momentum of point B about
point A (we always measure angular terms
about some point)
It’s a measure of how much of point B’s
linear momentum is rotating around A
AB
L
 r
AB
p
B
Angular Momentum
Check: If linear momentum, pB, is perpendicular to r_perp,
then dot product of two will cause angular momentum will
be zero
Torque
Derivative of Angular Momentum
• Remember force was derivative of linear
momentum
AB B )
AB
dL
d (r p


dt
dt
AB
AB
B
 r  ma  r  F B
• This measures how much of a force applied at point
B is used to rotate about point A, the torque
Total Angular Momentum
Total angular momentum about point A is denoted
LAT
Ai i
AT
L   r p
i
  r m i v i
Ai
i
But computation can be expensive to sample all
points
Sampling of a surface would require surface
integration
Moment of Inertia
LAT   r p i
Ai
i
substitute
  r m i v i
v  wr
B
OB
Ai
i
Remember
• An alternate way of representing
the velocity of a point in terms of
angular velocity
If A is like the origin
i is like B, then substitute
AT
L
  r m wr
Ai
i
Ai
i
 w  m r r
i
Ai
Ai
i
 w  m (r )
i
i
 wI
A
Ai 2
Moment of Inertia, IA
The sum of squared distances from point A
to each other point in the body, and each
squared distance is scaled by the mass of
each point
Ai 2
i
A
m (r )  I


i
This term characterizes how hard it is to
rotate something
Total Torque
Differentiate total
angular momentum
to get total torque
 AT
dLAT

 d ( I Aw )
dt
 I Aw  I Aa
This relates total torque and the body’s
angular acceleration through the scalar
moment of inertia
Planar Dynamics
• Calculate COM and MOI of rigid body
• Set initial position and linear/angular velocities
• Figure out all forces and their points of application
• Sum all forces and divide by mass to find COM’s linear acceleration
• For each force, compute perp-dot-product from COM to point of
force application and add value into total torque of COM
• Divide total torque by the MOI at the COM to find angular
acceleration
• Numerically integrate linear/angular accelerations to update the
position/orientation and linear/angular velocities
• Draw body in new position and repeat
Constrained Dynamics - 1996
Rube Goldberg - 1989
Collisions - 1990
Deformations (1992)
Upcoming Topics
Collisions
3-dimensional rigid bodies (inertia tensors)
Forces (centripetal, centrifugal, viscosity,
friction, contact)
Constrained dynamics (linked bodies)
Download