Top Banner
University of Texas at Austin CS 378 – Game Technology Don Fussell CS 378: Computer Game Technology Physics for Games Spring 2012
26

CS 378: Computer Game Technologyfussell/courses/cs378/lectures/cs378-6.pdf · This equation: is a second order differential equation. Our solution method, though, worked on first

Oct 21, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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