Continuous Collision Detection of General Convex Objects
Download
Report
Transcript Continuous Collision Detection of General Convex Objects
Physics for Games Programmers
Reframing the Problem
Squirrel Eiserloh
Technical Director
MumboJumbo Games
[email protected]
www.algds.org
Physics for Games Programmers
Reframing the Problem
a.k.a. “It’s All Relative”
Squirrel Eiserloh
Technical Director
MumboJumbo Games
[email protected]
www.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
Like movement
bounds, only with a
perfect fit!
(cont’d)
24
Swept Shapes
Like movement
bounds, only with a
perfect fit!
Still no false negatives
(tunneling).
(cont’d)
25
Swept Shapes
Like movement
bounds, only with a
perfect fit!
Still no false negatives
(tunneling).
Finally, no false
positives, either!
(cont’d)
26
Swept Shapes
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.
(cont’d)
27
Swept Shapes
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.
(cont’d)
28
Swept Shapes
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.
(cont’d)
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
in impact coordinates
x component
y component
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
in impact coordinates
x component
y component
parallel component
perpendicular
component
Energy is exchanged
along the
perpendicular axis
48
Relative Coordinate Systems
(cont’d)
Also, math is often nicer at the origin.
x2 - 2xh + h2 + y2 - 2yk + k2 = r2
x2 + y2 = r2
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
Disc + disc
(cont’d)
71
Relative Collision Bodies
Disc + disc
AABB + AABB
(cont’d)
72
Relative Collision Bodies
Disc + disc
AABB + AABB
Triangle + AABB
(cont’d)
73
Relative Collision Bodies
Disc + disc
AABB + AABB
Triangle + AABB
AABB + triangle
(cont’d)
74
Relative Collision Bodies
Disc + disc
AABB + AABB
Triangle + AABB
AABB + triangle
Polytope + polytope
(cont’d)
75
Relative Collision Bodies
Disc + disc
AABB + AABB
Triangle + AABB
AABB + triangle
Polytope + polytope
Polytope + disc
(cont’d)
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
Minkowski Differences
are not commutative:
A-B != B-A
Minkowski Difference
of convex objects is
convex (since A-B =
A+ -B)
(cont’d)
82
Minkowski Differences
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”
(cont’d)
83
Minkowski Differences
If the singularity is
outside the combined
body, A and B do not
overlap.
(cont’d)
84
Minkowski Differences
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.
(cont’d)
85
Minkowski Differences
In world space, A-B is
“near” the origin
(cont’d)
86
Minkowski Differences
Aoriginvs.
-Borigin
___
(A-B)origin
Borigin
vs.
-Borigin
___
0
(cont’d)
87
Minkowski Differences
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.
(cont’d)
88
Minkowski Differences
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)
(cont’d)
89
Minkowski Differences
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)
(cont’d)
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
A vs. B in world frame
(cont’d)
96
Relative Everything
A vs. B in world frame
A is CSO, B is point
(cont’d)
97
Relative Everything
A vs. B in world frame
A is CSO, B is point
A is moving CSO, B is
still point
(cont’d)
98
Relative Everything
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!
(cont’d)
99
Relative Everything
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...
(cont’d)
100
Relative Everything
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
(cont’d)
101
Relative Everything
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!
(cont’d)
102
Relative Everything
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”.
(cont’d)
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:
[email protected]