You are on page 1of 36

CS274: Computer Animation and Simulation

Lecture VII

Rigid Body Dynamics

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Rigid Bodies
Rigid bodies have both a position and orientation

Rigid bodies assume no object deformation

Rigid body motion is represented by 2 parameters


x(t ) - center of mass
R (t ) - orientation (rotation matrix)

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Rigid Bodies
Objects are defined in body space and transformed
by the position and orientation into world space

p(t )  R(t ) p 0  x(t )

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Linear Velocity
The change of the center of mass over time
x (t )  v (t )
For a pure translation ( R (t ) constant), all points
move with velocity v (t )

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Angular Velocity
The change in orientation over time
ω(t )
Encodes both the axis and speed of the rotation
 direction encodes the axis
 magnitude encodes the speed (rad/s)

But, how are ω(t ) and R (t ) related?

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Angular Velocity
ω
For a given vector
r (t )  ω(t )  r (t )
r
The columns of R (t ) represent the transformed axes
 (t )  ω(t )  R (t )
R .j .j

e2 R. 2 R.1

e1
e3
R. 3
CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Angular Velocity
We can represent the cross product with a matrix
0 az ay 
a  b  a b   ax
*
0 ax  b
a y az 0 

Therefore

R(t )  ω (t ) R(t )
*

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Velocity of a Point
Since a point can be represented at any time by
r(t )  R(t ) r0  x(t )
Total velocity can then be expressed as
 (t ) r  v(t )
r (t )  R 0

Which can be rewritten as


r (t )  ω* R (t ) r0  v(t )
r (t )  ω  (r (t )  x(t ))  v(t )
CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Force
We can apply forces to the object at any point

F2 (t )
F1 (t )

Total force on an object is simply


F(t )   Fi (t )

No information about where the forces are applied


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Torque
Torque describes the “rotational force”
τ i (t )  (ri (t )  x(t ))  Fi (t )
x(t ) r1 (t )
F2 (t )
F1 (t )

Total torque on an object is simply

τ(t )   τi (t )   (ri (t )  x(t ))  Fi (t )

Tells us about the force distribution over the object


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Linear Momentum
Linear momentum of a particle is
pmv

Linear momentum of a rigid body is then


P(t )    r (t ) dV

density

integration over the body

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Linear Momentum
Linear momentum can be simplified as follows
P(t )    r (t ) dV
P(t )    v(t )   ω  (r (t )  x(t )) dV
P(t )  M v(t )

Assuming constant mass gives


P (t )  M v (t )
P (t )  F(t )
CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Angular Momentum
Angular momentum of a rigid body
L(t )  I(t ) ω(t )

inertia tensor

Taking the time derivative


 (t )  τ(t )
L

Angular momentum is conserved for no torque


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Inertia Tensor
Describes how mass is distributed in the body
 I xx I xy I xz  I xx    ( yˆ 2  zˆ 2 ) dV
 
I (t)   I yx I yy I yz  I xy     ( xˆyˆ ) dV
 I zx I zy I zz 
 xˆ  x  xcenterOfMass

Analogous to mass in linear velocity


Measures the preferred axis of rotation

Expensive to compute this at every time step


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Inertia Tensor
Rewrite the tensor as

I(t )    (r (t )  r (t ) Id  r (t ) r (t ) ) dV
ˆ ˆ ˆ ˆ T

I(t )    (( R (t )r0 )T R (t )r0 Id  R (t )r0 (R (t )r0 )T ) dV

I(t )    (R (t )(r0 r0 Id  r0r0 )R T (t )) dV


T T

I(t )  R(t ) Ibody R (t )


T

Integrals can now be precomputed


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Rigid Body Equations of Motion
Combining the equations

 x(t )   v (t ) 
R (t ) ω* R (t )
d    

dt  P(t )   F (t ) 
   
 L(t )   τ (t ) 

Discretize these continuous equations and integrate


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Using Quaternions
Use quaternions to represent orientation

 cos( / 2) 
q(t )   
sin(  / 2) axis

The update rule is then


1
q (t )  ω(t ) q(t )
2

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Rigid Body Equations of Motion
Using quaternions gives

 x(t )   v (t ) 
 q(t )   1 ω q(t )
d    2 
dt  P (t )   F (t ) 
   
L(t )  τ (t ) 

Discretize these continuous equations and integrate


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Collisions and Contact
So far, no interaction between rigid bodies

Collision detection –
determining if, when and where a collision occurs

Collision response –
calculating the state (velocity, …) after the collision

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Collisions and Contact
What should we do when there is a collision?
x(t0 )
x(t1 )

x(t2 )

x(t3 )

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Rolling Back the Simulation
Restart the simulation at the time of the collision
x(t0 )
x(t1 )

x(t2 )
x(tc )

x(t3 )

Collision time can be found by bisection, etc.


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Collision Detection
Exploit coherency through witnessing

Two convex objects are


non-penetrating iff there exists a
separating plane between them

separating plane
First find a separating plane and
see if it is still valid after the next
simulation step

Speed up with bounding boxes, grids, hierarchies, etc.


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Collision Detection
Conditions for collision
p a (t )  v a (t )  ωa (t )  (p a (t )  x a (t ))

p a  p b
A A p a  p b A
N N N

B B B p a  p b
N  (p a (t )  p b (t ))  0 N  (p a (t )  p b (t ))  0 N  (p a (t )  p b (t ))  0
separating contact colliding
CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Collision
Soft Body Collision

Force is applied to prevent interpenetration


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Collision
Soft Body Collision

Apply forces and change the velocity


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Collision
Harder Collision

Higher force over a shorter time


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Collision
Rigid Body Collision

Impulsive force produces a discontinuous velocity


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Impulse
We need to change velocity instantaneously

Infinite force in an infinitesimal time

J  F t

An impulse changes the velocity as

J
v  or P  J
M
CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Impulse
An impulse also creates an impulsive torque
τ impulse  (p(t )  x(t ))  J

The impulsive torque changes the angular velocity

1
ω  I (t ) τimpulse or L  τ impulse

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Impulse
For a frictionless collision
J jN
A Ja
N

B Jb

But how do we calculate j ?


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Impulse
For a frictionless collision

N  (p a (t )  p b (t ))   (N  (p a (t )  p b (t )))

Given this equation and knowing how j affects the


linear and angular velocities of the two bodies,
we can solve for j

.̂ .̂ .̂ .̂

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Resting Contact
Bodies are neither colliding nor separating

We want a force strong enough to resist


penetration but only enough to maintain contact
CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Resting Contact
We want to prevent interpenetration
d (t )  N  (p a (t )  pb (t ))  0
Since d (tc )  0 we should keep it from decreasing

d (t )  N
  (p (t )  p (t ))  N  (p (t )  p (t ))  0
a b a b

Since d (tc )  0 we should keep it from decreasing

d(tc )  N  (p
a (tc )  p   (p (t )  p (t ))  0
b (tc ))  2 N a c b c

Describes the objects’ acceleration towards one another


CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Resting Contact
Contact forces only act in the normal direction
Fc  f N(tc )
Contact forces should
 avoid interpenetration
d(tc )  0
 be repulsive
f 0
 become zero if the bodies begin to separate
f  d(tc )  0 workless force
CS274 Spring 01 Lecture 7 Copyright © Mark Meyer
Resting Contact
The relative accelerations can be written in terms
of all of the contact forces

di (tc )  a0 f 0  ...  an f n  bi

So we can simply solve a Quadratic Program to


find the solution to all the constraints

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer


Simulation Algorithm
Algorithm with collisions and contact
current state

compute new state


next state
detect collisions and backtrack
collision state
compute and apply impulses

post-collision state
compute and apply constraint forces

CS274 Spring 01 Lecture 7 Copyright © Mark Meyer

You might also like