physics for games programmers reframing the problem squirrel eiserloh technical director mumbojumbo...

Post on 26-Mar-2015

224 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Physics for Games Physics for Games Programmers Programmers Reframing the Reframing the

ProblemProblem

Squirrel Eiserloh

Technical DirectorMumboJumbo Games

squirrel@eiserloh.netwww.algds.org

Physics for Games Physics for Games Programmers Programmers Reframing the Reframing the

ProblemProblema.k.a. “It’s All Relative”a.k.a. “It’s All Relative”

Squirrel Eiserloh

Technical DirectorMumboJumbo Games

squirrel@eiserloh.netwww.algds.org

3

Overview

Tunneling Movement Bounds Swept Shapes Einstein Says... Minkowski Says... Rotation

Tunneling(Sucks)

5

Tunneling

Question #1: Do objects A and B overlap?

Plenty of reference material to help solve this, but...

...this is often the wrong question to ask (begs tunneling).

6

Tunneling

7

Tunneling

8

Tunneling

9

Tunneling

10

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 is a false negative Okay, so tunneling really sucks.

What can we do about it?

Movement Bounds

12

Movement Bounds

Disc / Sphere

13

Movement Bounds

Disc / Sphere

AABB (Axis-Aligned Bounding Box)

14

Movement Bounds

Disc / Sphere

AABB (Axis-Aligned Bounding Box)

OBB (Oriented Bounding Box)

15

Movement Bounds

Question #2: Could A and B have collided during the frame?

Better than Question #1 (solves tunneling!), but...

16

Movement Bounds

Question #2: Could A and B have collided during the frame?

Better than Question #1 (solves tunneling!), but...

...even if the answer is “yes”, we still don’t know for sure (false positive).

17

Movement Bounds

Conclusion Good: They prevent tunneling! (i.e. no

false negatives)

Bad: They don’t actually tell us whether A and B collided (still have false positives).

Good: They can be used as a cheap, effective early rejection test.

Swept Shapes

19

Swept Shapes

Swept disc / sphere (n-sphere): capsule

20

Swept Shapes

Swept disc / sphere (n-sphere): capsule

Swept AABB: convex polytope (polygon in 2d, polyhedron in 3d)

21

Swept Shapes

Swept disc / sphere (n-sphere): capsule

Swept AABB: convex polytope (polygon in 2d, polyhedron in 3d)

Swept triangle / tetrahedron (simplex): convex polytope

22

Swept Shapes

Swept disc / sphere (n-sphere): capsule

Swept AABB: convex polytope (polygon in 2d, polyhedron in 3d)

Swept triangle / tetrahedron (simplex): convex polytope

Swept polytope: convex polytope

23

Swept Shapes (cont’d)

Like movement bounds, only with a perfect fit!

24

Swept Shapes (cont’d)

Like movement bounds, only with a perfect fit!

Still no false negatives (tunneling).

25

Swept Shapes (cont’d)

Like movement bounds, only with a perfect fit!

Still no false negatives (tunneling).

Finally, no false positives, either!

26

Swept Shapes (cont’d)

Like movement bounds, only with a perfect fit!

Still no false negatives (tunneling).

Finally, no false positives, either!

No, wait, nevermind. Still have ‘em. Rats.

27

Swept Shapes (cont’d)

Like movement bounds, only with a perfect fit!

Still no false negatives (tunneling).

Finally, no false positives, either!

No, wait, nevermind. Still have ‘em. Rats.

28

Swept Shapes (cont’d)

Like movement bounds, only with a perfect fit!

Still no false negatives (tunneling).

Finally, no false positives, either!

No, wait, nevermind. Still have ‘em. Rats.

29

Swept Shapes (cont’d)

Conclusion Suck? Can be used as early rejection test, but... ...movement bounds are better for that. If you’re not too picky... ...they DO solve a large number of nasty

problems (especially tunneling) ...and can serve as a poor man’s

continuous collision detection for a basic engine.

30

31

Einstein Says...

Coordinate systems are relative

Relative Coordinate Systems

33

Relative Coordinate Systems

World coordinates

34

Relative Coordinate Systems

World coordinates A’s local

coordinates

35

Relative Coordinate Systems

World coordinates A’s local

coordinates B’s local

coordinates

36

Relative Coordinate Systems

World coordinates A’s local

coordinates B’s local

coordinates Many others (e.g.

origin at point of impact)

37

Relative Coordinate Systems (cont’d)

Ball vs. world...

38

Relative Coordinate Systems (cont’d)

Ball vs. world... in world

coordinates

39

Relative Coordinate Systems (cont’d)

Ball vs. world... in world

coordinates x component y component

40

Relative Coordinate Systems (cont’d)

Ball vs. world... in world

coordinates x component y component

in impact coordinates

41

Relative Coordinate Systems (cont’d)

Ball vs. world... in world

coordinates x component y component

in impact coordinates parallel component perpendicular

component

42

Relative Coordinate Systems (cont’d)

Ball vs. world... in world coordinates

x component y component

in impact coordinates parallel component perpendicular

component Change in motion

happens along the perpendicular axis

43

Relative Coordinate Systems (cont’d)

Ball vs. ball...

44

Relative Coordinate Systems (cont’d)

Ball vs. ball... in world

coordinates

45

Relative Coordinate Systems (cont’d)

Ball vs. ball... in world

coordinates x component y component

46

Relative Coordinate Systems (cont’d)

Ball vs. ball... in world

coordinates x component y component

in impact coordinates

47

Relative Coordinate Systems (cont’d)

Ball vs. ball... in world coordinates

x component y component

in impact coordinates parallel component perpendicular

component Energy is exchanged

along the perpendicular axis

48

Relative Coordinate Systems (cont’d)

x2 + y2 = r2x2 - 2xh + h2 + y2 - 2yk + k2 = r2

Also, math is often nicer at the origin.

49

Einstein Says...

Coordinate systems are relative Motion is relative

Relative Motion

51

Relative Motion

"Frames of Reference"

World frame

52

Relative Motion

"Frames of Reference"

World frame A's frame

53

Relative Motion

"Frames of Reference"

World frame A's frame B's frame

54

Relative Motion

"Frames of Reference"

World frame A's frame B's frame Inertial frame

55

Relative Motion (cont’d)

A Rule of Relativistic Collision Detection:

It is always possible to reduce a collision check between two moving objects to a collision check between a moving object and a stationary object (by reframing)

56

(Does Not Suck)

Relative Collision Bodies

58

Relative Collision Bodies

Collision check equivalencies (disc)

59

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB

60

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB Can even reduce

one body to a singularity

61

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB Can even reduce

one body to a singularity

“Tracing” or “Rubbing” collision bodies together

62

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB Can even reduce one

body to a singularity “Tracing” or

“Rubbing” collision bodies together

Spirograph-out the reduced body’s origin

63

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB Can even reduce one

body to a singularity “Tracing” or

“Rubbing” collision bodies together

Spirograph-out the reduced body’s origin

64

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB Can even reduce one

body to a singularity “Tracing” or

“Rubbing” collision bodies together

Spirograph-out the reduced body’s origin

65

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB Can even reduce one

body to a singularity “Tracing” or

“Rubbing” collision bodies together

Spirograph-out the reduced body’s origin

66

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB Can even reduce one

body to a singularity “Tracing” or

“Rubbing” collision bodies together

Spirograph-out the reduced body’s origin

67

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB Can even reduce one

body to a singularity “Tracing” or

“Rubbing” collision bodies together

Spirograph-out the reduced body’s origin

68

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB Can even reduce one

body to a singularity “Tracing” or

“Rubbing” collision bodies together

Spirograph-out the reduced body’s origin

69

Relative Collision Bodies

Collision check equivalencies (disc)

...AABB Can even reduce one

body to a singularity “Tracing” or

“Rubbing” collision bodies together

Spirograph-out the reduced body’s origin

70

Relative Collision Bodies (cont’d)

Disc + disc

71

Relative Collision Bodies (cont’d)

Disc + disc AABB + AABB

72

Relative Collision Bodies (cont’d)

Disc + disc AABB + AABB Triangle + AABB

73

Relative Collision Bodies (cont’d)

Disc + disc AABB + AABB Triangle + AABB AABB + triangle

74

Relative Collision Bodies (cont’d)

Disc + disc AABB + AABB Triangle + AABB AABB + triangle Polytope +

polytope

75

Relative Collision Bodies (cont’d)

Disc + disc AABB + AABB Triangle + AABB AABB + triangle Polytope +

polytope Polytope + disc

76

Relative Collision Bodies (cont’d)

Things start to get messy when combining bodies explicitly / manually.

(Especially in 3d.) General solution?

Minkowski Arithmetic

78

Minkowski Sums

The Minkowski Sum (A+B) of A and B is the result of adding every point in A to every point in B.

79

Minkowski Differences

The Minkowski Difference (A-B) of A and B is the result of subtracting every point in B from every point in A (or A + -B)

80

Minkowski Differences

The Minkowski Difference (A-B) of A and B is the result of subtracting every point in B from every point in A

Resulting shape is different from A+B.

81

Minkowski Differences (cont’d)

Minkowski Differences are not commutative:A-B != B-A

Minkowski Difference of convex objects is convex (since A-B = A+ -B)

82

Minkowski Differences (cont’d)

Minkowski Differences are not commutative:A-B != B-A

Minkowski Difference of convex objects is convex (since A-B = A+ -B)

Minkowski Difference produces the same shape as “Spirograph”

83

Minkowski Differences (cont’d)

If the singularity is outside the combined body, A and B do not overlap.

84

Minkowski Differences (cont’d)

If the singularity is outside the combined body, A and B do not overlap.

If the singularity is inside the combined body (A-B), then A and B overlap.

85

Minkowski Differences (cont’d)

In world space, A-B is “near” the origin

86

Minkowski Differences (cont’d)

Aorigin vs. Borigin

-Borigin -Borigin

___ ___(A-B)origin vs. 0

87

Minkowski Differences (cont’d)

Since the singularity point is always at the origin (B-B), we can say...

If (A-B) does not contain the origin, A and B do not overlap.

88

Minkowski Differences (cont’d)

If (A-B) contains the origin, A and B overlap.

In other words, we reduce A vs. B to:

combined body (A-B) vs.point (B-B, or origin)

89

Minkowski Differences (cont’d)

If A and B are in the same coordinate system, the comparison between A-B and the origin is said to happen in configuration space

...in which case A-B is said to be a configuration space obstacle (CSO)

90

Minkowski Differences (cont’d)

Translations in A or B simply translate the CSO

91

Minkowski Differences (cont’d)

Rotations in A or B mutate the CSO

92

(Does Not Suck)

Relative Everything

94

Relative Everything

Let’s combine: Relative Coordinate Systems Relative Motion Relative Collision Bodies

95

Relative Everything (cont’d)

A vs. B in world frame

96

Relative Everything (cont’d)

A vs. B in world frame

A is CSO, B is point

97

Relative Everything (cont’d)

A vs. B in world frame

A is CSO, B is point A is moving CSO, B

is still point

98

Relative Everything (cont’d)

A vs. B in world frame

A is CSO, B is point A is moving CSO, B

is still point A is still CSO, B is

moving point This is the one we

want!

99

Relative Everything (cont’d)

Question #3: Did A and B collide during the frame? Yes! We can now

get an exact answer.

No false negatives, no false positives!

However, we still don’t know WHEN they collided...

100

Relative Everything (cont’d)

Why does the exact collision time matter? Outcomes can be

different Order of events (e.g.

multiple collisions) is relevant

Collision response is easier when you can reconstruct the exact moment of impact

101

Relative Everything (cont’d)

Question #4: When, during the frame, did A and B collide? The time at which

the ray intersects the CSO is the time at which the collision occurred.

Finally, the right question - and we have a complete answer!

102

Relative Everything (cont’d)

The Minkowski Difference (A-B) / CSO can also be thought of as “the set of all translations [from the origin] that would cause a collision”.

A.K.A. the set of “inadmissible translations”.

Quality vs. Quantity

or

“You Get What You Pay For”

104

Quality vs. Quantity

The more you ask, the more you pay. Question #1: Do A and B overlap? Question #2: Could A and B have

collided during the frame? Question #3: Did A and B collide

during the frame? Question #4: When, during the

frame, did A and B collide?

Rotations(Suck)

106

Rotations

Continuous rotational collision detection sucks

Rotational tunneling alone is problematic

107

Rotations

Continuous rotational collision detection sucks

Rotational tunneling alone is problematic

Methods we’ve discussed here often don’t work on rotations, or their rotational analogue is quite complex

108

Rotations (cont’d)

However: Rotational tunneling is usually not as

jarring as translational tunneling Rotational speed limits are actually

feasible Can do linear approximations of swept

rotations Can use bounding shapes to contain pre-

and post-rotated positions This is something that many engines

never solve robustly

Summary

110

Summary Have to worry about false negatives

(tunneling!) as well as false positives. Knowing when a collision event took

place can be very important (especially when resolving it).

Sometimes a problem (and math) looks easier when we look at it from a different viewpoint.

Can combine bodies in cheaty ways to simplify things even further.

111

Summary (cont’d)

Einstein and Minkowski are cool. Rotations suck. Doing real-time collision detection

doesn’t have to be hard. Or expensive. Or confusing.

112

Questions?

Feel free to reach me by email at:

squirrel@eiserloh.net

top related