- By
**lali** - Follow User

- 88 Views
- Uploaded on

Download Presentation
## Physics for Games Programmers Problem Overview

**An Image/Link below is provided (as is) to download presentation**

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

### Tunneling

Physics for Games Programmers Problem Overview

Squirrel EiserlohTechnical DirectorRitual Entertainmentsquirrel@eiserloh.netwww.ritual.comwww.algds.org

Types of Problems

- Knowing when to cheat
- Simplifying things
- Giving shape to things
- Moving things around
- Simulation baggage
- Detecting (and resolving) collisions
- Sustained interactions
- Dealing with the impossible
- Making it fast enough

Knowing When to Cheat

- Discrete physics simulation falls embarrassingly short of reality.
- “Real” physics is prohibitively expensive...
- ...so we cheat.
- We need to cheat enough to be able to run in real time.
- We need to not cheat so much that things break in a jarring and unrecoverable way.
- Much of the challenge is knowing how and when to cheat.

Knowing When to Cheat

- Ask:
- “Will the player notice?”
- “Will the player care?”
- “Will the results be predictable?”
- “Are we at least cheating in a consistent way?”
- “Will the simulation break?”
- If the simulation breaks, they will notice and they will care
- Some crimes are greater than others

Simplifying Things

- Simplified bodies

Simplifying Things

- Simplified bodies
- Even more simplified bodies

Simplifying Things

- Simplified bodies
- Even more simplified bodies
- Convex bodies

Simplifying Things

- Simplified bodies
- Even more simplified bodies
- Convex bodies
- Homogeneous bodies

Simplifying Things

- Simplified bodies
- Even more simplified bodies
- Convex bodies
- Homogeneous bodies
- Rigid bodies

Simplifying Things

- Simplified bodies
- Even more simplified bodies
- Convex bodies
- Homogeneous bodies
- Rigid bodies
- Indestructible bodies

Simplifying Things

- Movement is often assumed to be in a vacuum (ignoring air resistance)
- Even when air resistance does get simulated, it is hugely oversimplified

Simplifying Things

- Collisions are often assumed to be perfect and elastic
- That is, 100% of the energy before the collision is maintained after the collision
- Think billiard balls

Giving Shape to Things

- N-sphere
- 2d: Disc
- 3d: Sphere

Giving Shape to Things

- N-sphere
- 2d: Disc
- 3d: Sphere
- Simplex
- 2d: Triangle
- 3d: Tetrahedron

Giving Shape to Things

- N-sphere
- 2d: Disc
- 3d: Sphere
- Simplex
- 2d: Triangle
- 3d: Tetrahedron
- Convex Polytope
- 2d: Convex Polygon
- 3d: Convex Polyhedron
- a.k.a. “Convex Hull”
- a.k.a. “Brush” (Quake)

Giving Shape to Things

- Discrete Oriented Polytope (DOP)

Giving Shape to Things

- Discrete Oriented Polytope (DOP)
- Oriented Bounding Box (OBB)

Giving Shape to Things

- Discrete Oriented Polytope (DOP)
- Oriented Bounding Box (OBB)
- Axis-Aligned Bounding Box (AABB)

Giving Shape to Things

- Discrete Oriented Polytope (DOP)
- Oriented Bounding Box (OBB)
- Axis-Aligned Bounding Box (AABB)
- Capsule

Giving Shape to Things

- Discrete Oriented Polytope (DOP)
- Oriented Bounding Box (OBB)
- Axis-Aligned Bounding Box (AABB)
- Capsule
- Cylinder (3d only)

Moving Things Around

- Kinematics
- Describes motion
- Uses position, velocity, momentum, acceleration

Moving Things Around

- Kinematics
- Describes motion
- Uses position, velocity, momentum, acceleration
- Dynamics
- Explains motion
- Uses forces
- ...and impulses

Moving Things Around

- Kinematics
- Describes motion
- Uses position, velocity, momentum, acceleration
- Dynamics
- Explains motion
- Forces (F=ma)
- Impulses
- Rotation
- Torque
- Angular momentum
- Moment of inertia

Simulation Baggage

- Flipbook syndrome

Simulation Baggage

- Flipbook syndrome
- Things can happen in-between snapshots

Simulation Baggage

- Flipbook syndrome
- Things mostly happen in-between snapshots

Simulation Baggage

- Flipbook syndrome
- Things mostly happen in-between snapshots
- Curved trajectories treated as piecewise linear

Simulation Baggage

- Flipbook syndrome
- Things mostly happen in-between snapshots
- Curved trajectories treated as piecewise linear
- Terms often assumed to be constant throughout the frame

Simulation Baggage (cont’d)

- Error accumulates

Simulation Baggage (cont’d)

- Error accumulates
- Energy is not always conserved
- Energy loss can be undesirable
- Energy gain is evil
- Simulations explode!

Simulation Baggage (cont’d)

- Error accumulates
- Energy is not always conserved
- Energy loss can be undesirable
- Energy gain is evil
- Simulations explode!
- Rotations are often assumed to happen instantaneously at frame boundaries

Simulation Baggage (cont’d)

- Error accumulates
- Energy is not always conserved
- Energy loss can be undesirable
- Energy gain is evil
- Simulations explode!
- Rotations are often assumed to happen instantaneously at frame boundaries
- Numerical nightmares!

Collision Detection

- We need to determine if A and B intersect

Collision Detection

- We need to determine if A and B intersect
- Worse yet, they could be (and probably are) in motion

Collision Detection

- We need to determine if A and B intersect
- Worse yet, they could be (and probably are) in motion
- If they did collide, we probably also need to know when they collided

Collision Response

- ...and we need to figure out how to resolve the collision

Sustained Interactions

- Surface contact

Sustained Interactions

- Surface contact
- Edge contact

Sustained Interactions

- Surface contact
- Edge contact
- Contact points

Sustained Interactions

- Surface contact
- Edge contact
- Contact points
- Different solutions

Sustained Interactions

- Surface contact
- Edge contact
- Contact points
- Different solutions
- Stacking

Sustained Interactions

- Surface contact
- Edge contact
- Contact points
- Different solutions
- Stacking
- Friction
- Static & Kinetic

Sustained Interactions

- Surface contact
- Edge contact
- Contact points
- Different solutions
- Stacking
- Friction
- Static & Kinetic
- Constraints & Joints

Dealing With the Impossible

- Interpenetration

Dealing With the Impossible

- Interpenetration
- Tunneling

(Sucks)

Tunneling

- Small objects tunnel more easily

Tunneling (cont’d)

- Possible solutions
- Minimum size requirement?
- Inadequate; fast objects still tunnel

Tunneling (cont’d)

- Fast-moving objects tunnel more easily

Tunneling (cont’d)

- Possible solutions
- Minimum size requirement?
- Inadequate; fast objects still tunnel
- Maximum speed limit?
- Inadequate; since speed limit is a function of object size, this would mean small & fast objects (bullets) would not be allowed
- Smaller time step?
- Helpful, but inadequate; this is essentially the same as a speed limit

Tunneling (cont’d)

- Besides, even with min. size requirements and speed limits and a small timestep, you still have degenerate cases that cause tunneling!

Tunneling (cont’d)

- Tunneling is very, very bad – this is not a “mundane detail”
- Things falling through world
- Bullets passing through people or walls
- Players getting places they shouldn’t
- Players missing a trigger boundary

Tunneling (cont’d)

- Interpenetration
- Tunneling
- Rotational tunneling

Making It Fast Enough

- Don’t be too particular too soon
- Avoid unnecessary work

Making It Fast Enough

- Don’t be too particular too soon
- Avoid unnecessary work
- Eschew n-squared operations
- Avoid the “everything vs. everything” case

Making It Fast Enough

- Don’t be too particular too soon
- Avoid unnecessary work
- Eschew n-squared operations
- Avoid the “everything vs. everything” case
- Try using simulation islands or other methods to divide and conquer

Simulation Islands

- Consider:
- 1000 objects, 1 island
- 1000x1000 checks
- = 1 Million checks

Simulation Islands

- Consider:
- 1000 objects, 1 island
- 1000x1000 checks
- = 1 Million checks
- Verses:
- 1000 objects, divided into 10 islands of 100
- 10 x (100x100) checks
- = 100,000 checks
- 1/10th as many!

Simulation Islands

- Simulation islands can “go to sleep” when they become stable
- i.e. when forces and motion remain unchanged

Simulation Islands

- Simulation islands can “go to sleep” when they become stable
- i.e. when forces and motion remain unchanged

Simulation Islands

- Simulation islands can “go to sleep” when they become stable
- i.e. when forces and motion remain unchanged
- When an object enters the island’s bounds...

Simulation Islands

- Simulation islands can “go to sleep” when they become stable
- i.e. when forces and motion remain unchanged
- When an object enters the island’s bounds...

Simulation Islands

- Simulation islands can “go to sleep” when they become stable
- i.e. when forces and motion remain unchanged
- When an object enters the island’s bounds...
- ...the island wakes up

Simulation Islands

- Add the newcomer to this simulation island

Simulation Islands

- Add the newcomer to this simulation island
- ...and put it back to sleep once it stabilizes
- This is just one of many ways to reduce complexity
- We’ll be covering several others later on

Making It Fast Enough

- Can also exploit work previously done
- Make “educated assumptions” using:
- Temporal/frame coherence: Things tend not to have changed a whole lot in the 15ms or so since the previous frame, so save the previous frame’s results!
- Spatial coherence: Things tend to miss each other far more often than they collide, and only things in the same neighborhood can collide with each other

Summary

- The nature of simulation causes us real problems... problems which can’t be ignored
- So we cheat
- And we simplify things
- And even then, it can get quite complex...

Summary (cont’d)

- Problems we’re concerned with:
- How should we choose to represent physical bodies?
- How should we simulate and compute motion?
- How can we prevent energy build-up?
- How do we cope with floating point error?
- How can we detect collisions – especially when large numbers of objects are involved?
- How should we resolve penetration?
- How should we handle contact?
- How can we prevent tunneling?
- How do we deal with non-rigid bodies?

Download Presentation

Connecting to Server..