Physics for Games Programmers Problem Overview Squirrel Eiserloh
Physics for Games Programmers Problem Overview Squirrel Eiserloh Technical Director Ritual Entertainment squirrel@eiserloh. net www. ritual. com www. algds. org
2 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
4 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. >
5 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
7 Simplifying Things > Simplified bodies
8 Simplifying Things > > Simplified bodies Even more simplified bodies
9 Simplifying Things > > > Simplified bodies Even more simplified bodies Convex bodies
10 Simplifying Things > > Simplified bodies Even more simplified bodies Convex bodies Homogeneous bodies
11 Simplifying Things > > > Simplified bodies Even more simplified bodies Convex bodies Homogeneous bodies Rigid bodies
12 Simplifying Things > > > Simplified bodies Even more simplified bodies Convex bodies Homogeneous bodies Rigid bodies Indestructible bodies
13 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
14 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
16 Giving Shape to Things > N-sphere > > 2 d: Disc 3 d: Sphere
17 Giving Shape to Things > N-sphere > > > 2 d: Disc 3 d: Sphere Simplex > > 2 d: Triangle 3 d: Tetrahedron
18 Giving Shape to Things > N-sphere > > > Simplex > > > 2 d: Disc 3 d: Sphere 2 d: Triangle 3 d: Tetrahedron Convex Polytope > > 2 d: Convex Polygon 3 d: Convex Polyhedron a. k. a. “Convex Hull” a. k. a. “Brush” (Quake)
19 Giving Shape to Things > Discrete Oriented Polytope (DOP)
20 Giving Shape to Things > > Discrete Oriented Polytope (DOP) Oriented Bounding Box (OBB)
21 Giving Shape to Things > > > Discrete Oriented Polytope (DOP) Oriented Bounding Box (OBB) Axis-Aligned Bounding Box (AABB)
22 Giving Shape to Things > > Discrete Oriented Polytope (DOP) Oriented Bounding Box (OBB) Axis-Aligned Bounding Box (AABB) Capsule
23 Giving Shape to Things > > > Discrete Oriented Polytope (DOP) Oriented Bounding Box (OBB) Axis-Aligned Bounding Box (AABB) Capsule Cylinder (3 d only)
Moving Things Around
25 Moving Things Around > Kinematics > Describes motion > Uses position, velocity, momentum, acceleration
26 Moving Things Around > > Kinematics > Describes motion > Uses position, velocity, momentum, acceleration Dynamics > Explains motion > Uses forces. . . and impulses >
27 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
29 Simulation Baggage > Flipbook syndrome
30 Simulation Baggage > > Flipbook syndrome Things can happen inbetween snapshots
31 Simulation Baggage > > Flipbook syndrome Things mostly happen in-between snapshots
32 Simulation Baggage > > > Flipbook syndrome Things mostly happen in-between snapshots Curved trajectories treated as piecewise linear
33 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
34 Simulation Baggage > Error accumulates (cont’d)
35 Simulation Baggage > > Error accumulates Energy is not always conserved > > Energy loss can be undesirable Energy gain is evil > Simulations explode! (cont’d)
36 Simulation Baggage > > 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 (cont’d)
37 Simulation Baggage > > 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! (cont’d)
Collision Detection
39 Collision Detection > We need to determine if A and B intersect
40 Collision Detection > > We need to determine if A and B intersect Worse yet, they could be (and probably are) in motion
41 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
42 Collision Response > . . . and we need to figure out how to resolve the collision
Sustained Interactions
44 Sustained Interactions > Surface contact
45 Sustained Interactions > > Surface contact Edge contact
46 Sustained Interactions > > > Surface contact Edge contact Contact points
47 Sustained Interactions > > > Surface contact Edge contact Contact points > Different solutions
48 Sustained Interactions > > > Surface contact Edge contact Contact points > > Different solutions Stacking
49 Sustained Interactions > > > Surface contact Edge contact Contact points > > > Different solutions Stacking Friction > Static & Kinetic
50 Sustained Interactions > > > Surface contact Edge contact Contact points > > > Stacking Friction > > Different solutions Static & Kinetic Constraints & Joints
Dealing With the Impossible
52 Dealing With the Impossible > Interpenetration
53 Dealing With the Impossible > > Interpenetration Tunneling
(Sucks) Tunneling
55 Tunneling > Small objects tunnel more easily
56 Tunneling > (cont’d) Possible solutions > Minimum size requirement? > Inadequate; fast objects still tunnel
57 Tunneling > (cont’d) Fast-moving objects tunnel more easily
58 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
59 Tunneling > Besides, even with min. size requirements and speed limits and a small timestep, you still have degenerate cases that cause tunneling! (cont’d)
60 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 >
61 Tunneling > > > Interpenetration Tunneling Rotational tunneling (cont’d)
Making It Fast Enough
63 Making It Fast Enough > Don’t be too particular too soon > Avoid unnecessary work
64 Making It Fast Enough > Don’t be too particular too soon > > Avoid unnecessary work Eschew n-squared operations > Avoid the “everything vs. everything” case
65 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
66 Simulation Islands > Consider: > > > 1000 objects, 1 island 1000 x 1000 checks = 1 Million checks
67 Simulation Islands > Consider: > > 1000 objects, 1 island 1000 x 1000 checks = 1 Million checks Verses: > > 1000 objects, divided into 10 islands of 100 10 x (100 x 100) checks = 100, 000 checks 1/10 th as many!
68 Simulation Islands > Simulation islands can “go to sleep” when they become stable > i. e. when forces and motion remain unchanged
69 Simulation Islands > Simulation islands can “go to sleep” when they become stable > i. e. when forces and motion remain unchanged
70 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. . .
71 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. . .
72 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
73 Simulation Islands > Add the newcomer to this simulation island
74 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
75 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 15 ms 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
77 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. . . >
78 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?
79 Questions? > Feel free to reach me by email at: squirrel@eiserloh. net or squirrel@ritual. com
- Slides: 79