Physics for Games Programmers Problem Overview Squirrel Eiserloh Technical Director Ritual...

Post on 27-Mar-2015

218 views 3 download

Tags:

Transcript of Physics for Games Programmers Problem Overview Squirrel Eiserloh Technical Director Ritual...

Physics for Games Physics for Games Programmers Programmers Problem Problem

OverviewOverview

Squirrel Eiserloh

Technical DirectorRitual Entertainment

squirrel@eiserloh.netwww.ritual.comwww.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 2d: Disc 3d: Sphere

17

Giving Shape to Things

N-sphere 2d: Disc 3d: Sphere

Simplex 2d: Triangle 3d: Tetrahedron

18

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)

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 (3d 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

in-between 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 (cont’d)

Error accumulates

35

Simulation Baggage (cont’d)

Error accumulates Energy is not

always conserved Energy loss can be

undesirable Energy gain is evil

Simulations explode!

36

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

37

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

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

Different solutions Stacking Friction

Static & Kinetic Constraints & Joints

Dealing With the Impossible

52

Dealing With the Impossible

Interpenetration

53

Dealing With the Impossible

Interpenetration Tunneling

Tunneling(Sucks)

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 (cont’d)

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

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 (cont’d)

Interpenetration Tunneling Rotational

tunneling

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 1000x1000 checks = 1 Million checks

67

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!

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

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