Dynamics 101 - Essential Math for Games Programmers
Download
Report
Transcript Dynamics 101 - Essential Math for Games Programmers
Dynamics 101
Marq Singer
Red Storm Entertainment
[email protected]
2
Talk Summary
Going to talk about:
A brief history of motion theory
Newtonian motion for linear and rotational
dynamics
Handling this in the computer
3
Physically Based-Motion
Want game objects to move consistent with
world
Match our real-world experience
But this is a game, so…
Can’t be too expensive
(no atomic-level interactions)
4
History I: Aristotle
Observed:
From this, deduced:
Push an object, stop, it stops
Rock falls faster than feather
Objects want to stop
Motion is in a line
Motion only occurs with action
Heavier object falls faster
Note: was not actually beggar for a bottle
5
History I: Aristotle
Motion as changing position
6
History I: Aristotle
Called kinematics
Games: move controller, stop on a dime,
move again
Not realistic
7
History II: Galileo
Observed:
Object in motion slows down
Cannonballs fall equally
Theorized:
Slows due to unseen force: friction
Object in motion stays in motion
Object at rest stays at rest
Called inertia
Also: force changes velocity, not position
Oh, and mass has no effect on velocity
8
History II: Galileo
Force as changing velocity
Velocity changes position
Called dynamics
9
History III: Newton
Observed:
Planet orbit like continuous falling
Theorized:
Planet moves via gravity
Planets and small objects linked
Force related to velocity by mass
Calculus helps formulate it all
10
History III: Newton
Sum of forces sets acceleration
Acceleration changes velocity
Velocity changes position
g
11
History III: Newton
Games: Move controller, add force, then
drift
12
History III: Newton
As mentioned, devised calculus
Differential calculus:
rates of change
Integral calculus:
(concurrent with Leibniz)
areas and volumes
antiderivatives
Did not invent the Fig Newton™
13
Differential Calculus Review
Have position function x(t)
Derivative x'(t) describes how x changes
as t changes (also written dx/dt, or x )
x'(t) gives tangent vector at time t
x(ti)
y
y(t)
x'(ti)
t
14
Differential Calculus Review
Our function is position:x(t )
Derivative is velocity:
dx
v(t ) x(t )
x
dt
Derivative of velocity is acceleration
dv
v
dt
d 2x
x(t ) 2 x
dt
a(t ) v(t )
15
Newtonian Dynamics
Summary
All objects affected by forces
Gravity
Ground (pushing up)
Other objects pushing against it
Force determines acceleration (F = ma)
dv
a)
Acceleration changes velocity (
dx dt
Velocity changes position (
v )
dt
16
Dynamics on Computer
Break into two parts
Linear dynamics (position)
Rotational dynamics (orientation)
Simpler to start with position
17
Linear Dynamics
Simulating a single object with:
Last frame position xi
Last frame velocity vi
Mass m
Sum of forces F
Want to know
Current frame position xi+1
Current frame velocity vi+1
18
Linear Dynamics
Could use Newton’s equations
a F /m
x i1 x i v i t 1/2at 2
v i1 v i at
Problem: assumes F constant across frame
Not always true:
E.g. spring force: Fspring = –kx
E.g. drag force: Fdrag = –mv
19
Linear Dynamics
Need numeric solution
Take stepwise approximation of function
20
Linear Dynamics
Basic idea: derivative (velocity) is going
in the right direction
Step a little way in that direction (scaled
by frame time h)
Do same with velocity/acceleration
Called Euler’s method
21
Linear Dynamics
Euler’s method
x i1 x i hv i
a F(x i ,v i ) /m
v i1 v i ha
22
Linear Dynamics
Another way: use linear momentum
P mv
P F
Then
x i1 x i hvi
Pi1 Pi hF(x i ,v i )
vi1 Pi1 /m
23
Linear: Final Formulas
Using Euler’s method with time step h
F Fk (x i ,v i )
k
F
ai
m
x i1 x i hv i
v i1 v i ha i
24
Rotational Dynamics
Simulating a single object with:
Last frame orientation Ri or qi
Last frame angular velocity i
Inertial tensor I
Sum of torques
Want to know
Current frame orientation Ri+1 or qi+1
Current frame ang. velocity i+1
25
Rotational Dynamics
Orientation
Represented by
Rotation matrix R
Quaternion q
Which depends on your needs
Hint: quaternions are cheaper
26
Rotational Dynamics
Angular velocity
Represents change in rotation
How fast object spinning
3-vector
Direction is axis of rotation
Length is amount of rotation (in radians)
Ccw around axis (r.h. rule)
27
Rotational Dynamics
Angular velocity
Often need to know linear velocity at point
Solution: cross product
r v
v
r
28
Moments of Inertia
Inertial tensor
I is rotational equivalent of mass
3 x 3 matrix, not single scalar factor (unlike m)
Many factors - rotation depends on shape
Describe how object rotates around various axes
Not always easy to compute
Change as object changes orientation
29
Rotational Dynamics
Computing I
Can use values for closest box or cylinder
Alternatively, can compute based on
geometry
Assume constant density, constant mass at each
vertex
Solid integral across shape
See Mirtich,Eberly for more details
Blow and Melax do it with sums of tetrahedra
30
Rotational Dynamics
Torque
Force equivalent
Apply to offset from center of mass – creates
rotation
Add up torques just like forces
31
Rotational Dynamics
Computing torque
Cross product of vector r (from CoM to point
where force is applied), and force vector F
r
F
r F
Applies torque ccw around vector (r.h. rule)
32
Rotational Dynamics
Center of Mass
Point on body where applying a force acts just like
single particle
“Balance point” of object
Varies with density, shape of object
Pull/push anywhere but CoM, get torque
Generally falls out of inertial tensor calculation
33
Rotational Dynamics
Have matrix R and vector
How to compute Ri1 Ri hi ?
Convert to give change in R
Convert to symmetric skew matrix
Multiply by orientation matrix
Can use Euler's method after that
34
Computing New Orientation
If have matrix R, then
˜ iRi
Ri1 Ri h
where
0
˜ 3
2
3
0
1
2
1
0
35
Computing New Orientation
If have quaternion q, then
h
q i 1 q i w i q i
2
where
wi (0,i )
See Baraff or Eberly for derivation
36
Computing Angular Velocity
Can’t easily integrate angular velocity from
angular acceleration:
I
I I
Can no longer “divide” by I and do Euler step
37
Computing Angular
Momentum
Easier way: use angular momentum
L I
L
Then
L i1 L i h (Ri , i )
i1 I L i1
1
i1
38
Using I in World Space
Remember, I1L
I computed in local space, must
transform to world space
If using rotation matrix R, use formula
1
i
1
i 0
I Li R I R Li
T
i
If using quaternion, convert to matrix
39
Rotational Formulas
rk Fk
k
~
R i 1 R n hi R i
L i 1 L i h
I
1
i 1
1
i 1 0
R I R
i 1 I i11L i 1
T
i 1
40
Impulses
Normally force acts over period of time
F
E.g., pushing a chair
t
41
Impulses
Even if constant over frame
F
sim assumes application over entire time
t
42
Impulses
But if instantaneous change in velocity?
Discontinuity!
F
t
Still force, just instantaneous
Called impulse - good for collisions/constraints
43
Summary
Basic Newtonian dynamics
Linear simulation
Position, velocity, force, momentum
Force -> acceleration -> velocity -> position
Rotational simulation
Torque -> ang. mom. -> ang. vel. ->
orientation
44
Questions?
45
References
Burden, Richard L. and J. Douglas Faires, Numerical
Analysis, PWS Publishing Company, Boston, MA,
1993.
Hecker, Chris, “Behind the Screen,” Game Developer,
Miller Freeman, San Francisco, Dec. 1996-Jun. 1997.
Witken, Andrew, David Baraff, Michael Kass,
SIGGRAPH Course Notes, Physically Based Modelling,
SIGGRAPH 2002.
Eberly, David, Game Physics, Morgan Kaufmann,
2003.