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
pmv
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


L (t ) (t )

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 ( xy ) 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 ) I body 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(t 2 )

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(t 2 )

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 ) p b (t )) 0
Since d (t c ) 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 (t c ) 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

di (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