-
University of Texas at Austin CS 378 – Game Technology Don Fussell
CS 378: Computer Game Technology
Physics for Games Spring 2012
-
Game Physics – Basic Areas
! Point Masses ! Particle simulation ! Collision response
! Rigid-Bodies ! Extensions to non-points
! Soft Body Dynamic Systems ! Articulated Systems and Constraints ! Collision Detection
-
Physics Engines
! API for collision detection ! API for kinematics (motion but no forces) ! API for dynamics ! Examples
! Box2d ! Bullet ! ODE (Open Dynamics Engine) ! PhysX ! Havok ! Etc.
University of Texas at Austin CS 378 – Game Technology Don Fussell 3
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 4
Particle dynamics and particle systems
! A particle system is a collection of point masses that obeys some physical laws (e.g, gravity, heat convection, spring behaviors, …).
! Particle systems can be used to simulate all sorts of physical phenomena:
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 5
Particle in a flow field
! We begin with a single particle with:
! Position,
! Velocity,
! Suppose the velocity is actually dictated by some driving function g:
g(x,t)
x
y
€
x =xy"
# $ %
& '
€
v = x•
=d x dt
=dx dtdy dt"
# $
%
& '
€
x•
= g( x ,t)
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 6
Vector fields
! At any moment in time, the function g defines a vector field over x:
! How does our particle move through the vector field?
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 7
Diff eqs and integral curves
! The equation
is actually a first order differential equation. ! We can solve for x through time by starting at an initial
point and stepping along the vector field:
! This is called an initial value problem and the solution is called an integral curve.
Start Here
€
x•
= g( x ,t)
-
Eulers method
! One simple approach is to choose a time step, Δt, and take linear steps along the flow:
! Writing as a time iteration:
! This approach is called Euler’s method and looks like:
! Properties: ! Simplest numerical method ! Bigger steps, bigger errors. Error ~ O(Δt2).
! Need to take pretty small steps, so not very efficient. Better (more complicated) methods exist, e.g., “Runge-Kutta” and “implicit integration.”
€
x i+1 = x i + Δ t ⋅ v i
€
x (t + Δ t) = x (t) + Δ t ⋅ x(t) = x (t) + Δ t ⋅ g( x ,t)€
•
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 9
Particle in a force field
! Now consider a particle in a force field f. ! In this case, the particle has:
! Mass, m ! Acceleration,
! The particle obeys Newton’s law:
! The force field f can in general depend on the position and velocity of the particle as well as time.
! Thus, with some rearrangement, we end up with:
€
a ≡ x = d v dt
=d2 x dt 2
€
••
€
f = m a = mx
€
••
€
x = f ( x ,x,t)m
€
••
€
•
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 10
This equation:
is a second order differential equation.
Our solution method, though, worked on first order differential equations.
We can rewrite this as:
where we have added a new variable v to get a pair of coupled first order equations.
Second order equations
€
x = v
v = f ( x , v ,t)m
"
#
$ $
%
&
' '
€
•
€
•
€
x = f ( x ,x,t)m
€
••
€
•
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 11
Phase space
! Concatenate x and v to make a 6-vector: position in phase space.
! Taking the time derivative: another 6-vector.
! A vanilla 1st-order differential equation. €
xv"
# $ %
& '
€
•
€
•
€
x v "
# $ %
& '
€
xv"
# $ %
& ' =
v f m"
# $
%
& '
€
•€
•
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 12
Differential equation solver
Applying Euler’s method:
Again, performs poorly for large Δt.
And making substitutions:
Writing this as an iteration, we have:
Starting with:
€
xv"
# $ %
& ' =
v f m"
# $
%
& '
€
•€
•
€
x (t + Δ t) = x (t) + Δ t ⋅ x(t)€
•
€
x(t + Δ t) = x(t) + Δ t ⋅ x(t)€
•
€
•
€
••
€
x (t + Δ t) = x (t) + Δ t ⋅ v (t)
€
•
€
x(t + Δ t) = x(t) + Δ t ⋅ f ( x ,x,t) m
€
•
€
•
€
x i+1 = x i + Δ t ⋅ v i
€
v i+1 = v i + Δ t ⋅ f i
m
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 13
Particle structure
m
! "# $# $# $# $% &
xvf
position velocity force accumulator mass
Position in phase space
How do we represent a particle?
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 14
Single particle solver interface
m
! "# $# $# $# $% &
xvf ! "# $
% &
xv
/m! "# $% &
vf
[ ]6getDim
derivEval
getState
setState
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 15
Particle systems
particles n time
In general, we have a particle system consisting of n particles to be managed over time:
€
x 1 v 1 f 1m1
"
#
$ $ $ $
%
&
' ' ' '
x 2 v 2 f 2m2
"
#
$ $ $ $
%
&
' ' ' '
…
x n v n f nmn
"
#
$ $ $ $
%
&
' ' ' '
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 16
Particle system solver interface
derivEval
get/setState getDim
For n particles, the solver interface now looks like:
particles n time
€
6n x 1 v 1 x 2 v 2 …
x n v n
v 1
f 1m1
v 2
f 2m2
… v n
f nmn
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 17
Particle system diff. eq. solver
We can solve the evolution of a particle system again using the Euler method:
€
x 1i+1
v 1i+1
x ni+1
v ni+1
"
#
$ $ $ $ $ $
%
&
' ' ' ' ' '
=
x 1i
v 1i
x ni
v ni
"
#
$ $ $ $ $ $
%
&
' ' ' ' ' '
+ Δt
v 1i
f 1i m1 v ni
f ni mn
"
#
$ $ $ $ $ $
%
&
' ' ' ' ' '
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 18
Forces
! Each particle can experience a force which sends it on its merry way.
! Where do these forces come from? Some examples: ! Constant (gravity) ! Position/time dependent (force fields) ! Velocity-dependent (drag) ! Combinations (Damped springs)
! How do we compute the net force on a particle?
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 19
Particle systems with forces
particles n time forces
F2 Fnf
nf
! Force objects are black boxes that point to the particles they influence and add in their contributions.
! We can now visualize the particle system with force objects:
F1
€
x 1 v 1 f 1m1
"
#
$ $ $ $
%
&
' ' ' '
x 2 v 2 f 2m2
"
#
$ $ $ $
%
&
' ' ' '
…
x n v n f nmn
"
#
$ $ $ $
%
&
' ' ' '
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 20
Gravity and viscous drag
p->f += p->m * F->G
p->f -= F->k * p->v
The force due to gravity is simply:
Often, we want to slow things down with viscous drag:
€
f grav = m
G
€
f drag = −k
v
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 21
Recall the equation for the force due to a spring: We can augment this with damping: The resulting force equations for a spring between two particles become:
Damped spring
€
f = −kspring (Δ x − r)
€
f = − kspring (Δ x − r) + kdamp
v [ ]
€
f 1 = − kspring Δ
x − r( ) + kdampΔ v •Δ x Δ x
$
% &
'
( )
*
+ , ,
-
. / /
Δ x
Δ x
f 2 = −
f 1
r = rest length
€
p1 = x 1 v 1
"
# $ %
& '
€
p2 = x 2 v 2
"
# $
%
& '
€
Δ x = x 1 −
x 2
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 22
derivEval Clear forces
Loop over particles, zero force accumulators
Calculate forces Sum all forces into accumulators
Return derivatives Loop over particles, return v and f/m Apply forces
to particles
Clear force accumulators 1
2
3 Return derivatives
to solver
F2 F3 Fnf F1
€
x 1 v 1 f 1m1
"
#
$ $ $ $
%
&
' ' ' '
x 2 v 2 f 2m2
"
#
$ $ $ $
%
&
' ' ' '
…
x n v n f nmn
"
#
$ $ $ $
%
&
' ' ' '
€
x 1 v 1 f 1m1
"
#
$ $ $ $
%
&
' ' ' '
x 2 v 2 f 2m2
"
#
$ $ $ $
%
&
' ' ' '
…
x n v n f nmn
"
#
$ $ $ $
%
&
' ' ' '
€
v 1 f 1 m1
"
# $
%
& '
v 2 f 2 m2
"
# $
%
& ' …
v n f n mn
"
# $
%
& '
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 23
Bouncing off the walls
! Add-on for a particle simulator ! For now, just simple point-plane
collisions
N P
A plane is fully specified by any point P on the plane and its normal N.
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 24
Collision Detection
N
v
P
x
How do you decide when you’ve crossed a plane?
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 25
Normal and tangential velocity
N
v
P
Nv
v Tv
To compute the collision response, we need to consider the normal and tangential components of a particle’s velocity.
€
v N = N • v ( )
N
v T = v − v N
-
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 26
Collision Response
before after
Without backtracking, the response may not be enough to bring a particle to the other side of a wall. In that case, detection should include a velocity check:
€
v N
€
v T
€
v T
€
" v = v T − krestitution
v N
€
−krestitution v N
€
" v
€
v