Transcript
  • 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


Top Related