physics for games programmers reframing the problem squirrel eiserloh technical director mumbojumbo...
TRANSCRIPT
Physics for Games Physics for Games Programmers Programmers Reframing the Reframing the
ProblemProblem
Squirrel Eiserloh
Technical DirectorMumboJumbo Games
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
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.