Continuous Collision Detection of General Convex Objects
Download
Report
Transcript Continuous Collision Detection of General Convex Objects
Physics for Games Programmers Tutorial
Motion and Collision – It’s All Relative
Squirrel Eiserloh
[email protected]
Lead Programmer
Ritual Entertainment
www.ritual.com
www.algds.org
2
Takeaway
A comfortable, intuitive understanding of:
The Problems of Discrete Simulation
Continuous Collision Detection
Applying Relativity to Game Physics
Configuration Space
Collisions in Four Dimensions
The Problems of Rotation
Why this is all really important even if you’re
doing simple cheesy 2d games at home in your
underwear in your spare time
3
The Problem
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.
4
Overview
Simulation
Tunneling
Movement Bounds
Swept Shapes
Einstein Says...
Minkowski Says...
Rotation
5
Also, I promise...
No math
Simulation
(Sucks)
7
Problems with Simulation
Flipbook syndrome
8
Problems with Simulation
Flipbook syndrome
Things can happen inbetween snapshots
9
Problems with Simulation
Flipbook syndrome
Things mostly happen
in-between snapshots
10
Problems with Simulation
Flipbook syndrome
Things mostly happen
in-between snapshots
Curved trajectories
treated as piecewise
linear
11
Problems with Simulation
Flipbook syndrome
Things mostly happen
in-between snapshots
Curved trajectories
treated as piecewise
linear
Terms often assumed
to be constant
throughout the frame
12
Problems with Simulation
Flipbook syndrome
Things mostly happen
in-between snapshots
Curved trajectories
treated as piecewise
linear
Terms often assumed
to be constant
throughout the frame
Error accumulates
13
Problems with Simulation
Rotations are often
assumed to happen
instantaneously at
frame boundaries
(cont’d)
14
Problems with Simulation
Rotations are often
assumed to happen
instantaneously at
frame boundaries
Energy is not always
conserved
Energy loss can be
undesirable
Energy gain is evil
Simulations explode!
(cont’d)
15
Problems with Simulation
Rotations are often
assumed to happen
instantaneously at
frame boundaries
Energy is not always
conserved
Energy loss can be
undesirable
Energy gain is evil
Simulations explode!
Tunneling
(Also evil!)
(cont’d)
16
Overlapping Objects
Question #1: Do A
and B overlap?
Plenty of reference
material to help solve
this, but...
...this is often the
wrong question to ask
(begs tunneling).
Tunneling
(Sucks)
18
Tunneling
Small objects tunnel more easily
19
Tunneling
(cont’d)
Possible solutions
Minimum size requirement?
Inadequate; fast objects still tunnel
20
Tunneling
(cont’d)
Fast-moving objects tunnel more easily
21
Tunneling
(cont’d)
Possible solutions
Minimum size requirement?
Maximum speed limit?
Inadequate; fast objects still tunnel
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
22
Tunneling
Besides, even with
min. size requirements
and speed limits and a
small timestep, you
still have degenerate
cases that cause
tunneling
(cont’d)
23
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
Okay, so tunneling really sucks. What can
we do about it?
Movement Bounds
25
Movement Bounds
Disc / Sphere
26
Movement Bounds
Disc / Sphere
AABB (Axis-Aligned
Bounding Box)
27
Movement Bounds
Disc / Sphere
AABB (Axis-Aligned
Bounding Box)
OBB (Oriented
Bounding Box)
28
Movement Bounds
Question #2: Could
A and B have collided
during the frame?
Better than Question
#1 (solves
tunneling!), but...
29
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
positives).
30
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
32
Swept Shapes
Swept disc / sphere
(n-sphere): capsule
33
Swept Shapes
Swept disc / sphere
(n-sphere): capsule
Swept AABB: convex
polytope (polygon in
2d, polyhedron in 3d)
34
Swept Shapes
Swept disc / sphere
(n-sphere): capsule
Swept AABB: convex
polytope (polygon in
2d, polyhedron in 3d)
Swept triangle /
tetrahedron (simplex):
convex polytope
35
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
36
Swept Shapes
Like movement
bounds, only with a
perfect fit!
(cont’d)
37
Swept Shapes
Like movement
bounds, only with a
perfect fit!
Still no false negatives
(tunneling).
(cont’d)
38
Swept Shapes
Like movement
bounds, only with a
perfect fit!
Still no false negatives
(tunneling).
Finally, no false
positives, either!
(cont’d)
39
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)
40
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.
41
42
Einstein Says...
Coordinate systems are relative
Relative Coordinate
Systems
44
Relative Coordinate Systems
World coordinates
45
Relative Coordinate Systems
World coordinates
A’s local coordinates
46
Relative Coordinate Systems
World coordinates
A’s local coordinates
B’s local coordinates
47
Relative Coordinate Systems
Math is often nicer at the origin.
(x-h)2 + (y-k)2 = r2
x2 + y2 = r2
48
Einstein Says...
Coordinate systems are relative
Motion is relative
Relative Motion
50
Relative Motion
"Frames of Reference"
World frame
51
Relative Motion
"Frames of Reference"
World frame
A's frame
52
Relative Motion
"Frames of Reference"
World frame
A's frame
B's frame
53
Relative Motion
"Frames of Reference"
World frame
A's frame
B's frame
Inertial frame
54
Relative Motion
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)
55
(Does Not Suck)
Relative Collision
Bodies
57
Relative Collision Bodies
Collision check
equivalencies (disc)
58
Relative Collision Bodies
Collision check
equivalencies (disc)
...AABB
59
Relative Collision Bodies
Collision check
equivalencies (disc)
...AABB
Can even reduce one
body to a singularity
60
Relative Collision Bodies
Collision check
equivalencies (disc)
...AABB
Can even reduce one
body to a singularity
“Tracing” or “Rubbing”
collision bodies
together
61
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
62
Relative Collision Bodies
Disc + disc
(cont’d)
63
Relative Collision Bodies
Disc + disc
AABB + AABB
(cont’d)
64
Relative Collision Bodies
Disc + disc
AABB + AABB
Triangle + AABB
(cont’d)
65
Relative Collision Bodies
Disc + disc
AABB + AABB
Triangle + AABB
AABB + triangle
(cont’d)
66
Relative Collision Bodies
Disc + disc
AABB + AABB
Triangle + AABB
AABB + triangle
Polytope + polytope
(cont’d)
67
Relative Collision Bodies
Disc + disc
AABB + AABB
Triangle + AABB
AABB + triangle
Polytope + polytope
Polytope + disc
(cont’d)
68
Relative Collision Bodies
(cont’d)
Things start to get messy when combining
bodies explicitly / manually.
(Especially in 3d.)
General solution?
Minkowski Arithmetic
70
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.
71
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.
Minkowski Sums are
commutative:
A+B = B+A
Minkowski Sum of
convex objects is
convex
72
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)
73
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.
74
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)
75
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)
76
Minkowski Differences
If the singularity is
outside the combined
body, A and B do not
overlap.
(cont’d)
77
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)
78
Minkowski Differences
Aoriginvs.
-Borigin
___
(A-B)origin
Borigin
vs.
-Borigin
___
0
(cont’d)
79
Minkowski Differences
In world space, A-B is
“near” the origin
(cont’d)
80
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)
81
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)
82
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)
83
Minkowski Differences
(cont’d)
Translations in A or B simply translate the CSO
84
Minkowski Differences
(cont’d)
Rotations in A or B mutate the CSO
85
Minkowski Sum vs. Difference
Lots of confusion over Minkowski “Sum”
vs. “Difference”.
Sum is used to “fatten” an object by
“adding” another object (in local
coordinates) to it
Difference is used to put the objects in
configuration space, i.e. A-B vs. origin.
Difference sometimes called Sum since
A-B can be expressed as A+(-B)!
86
Minkowski Sum vs. Difference
(cont’d)
Difference is the same as “Spirograph” or
“rubbing”
Difference is not commutative!
A-B != B-A
Difference and sum produce differentshaped results
Difference produces CSO (configuration
space obstacle)
87
(Does Not Suck)
Relative Everything
89
Relative Everything
Let’s combine:
Relative Coordinate Systems
Relative Motion
Relative Collision Bodies
90
Relative Everything
A vs. B in world frame
(cont’d)
91
Relative Everything
A vs. B in world frame
A vs. B, inertial frame
(cont’d)
92
Relative Everything
A vs. B in world frame
A vs. B, inertial frame
A is moving, B is still
(cont’d)
93
Relative Everything
A
A
A
A
vs. B in world frame
vs. B, inertial frame
is moving, B is still
is CSO, B is point
(cont’d)
94
Relative Everything
A vs. B in world frame
A vs. B, inertial frame
A is moving, B is still
A is CSO, B is point
A is moving CSO, B is
still point
(cont’d)
95
Relative Everything
A vs. B in world frame
A vs. B, inertial frame
A is moving, B is still
A is CSO, B is point
A is moving CSO, B is
still point
A is still CSO, B is
moving point
(cont’d)
96
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)
97
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)
98
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)
Determining Collision
Time
100
Determining Collision Time
Method #1: Frame Subdivision
101
Subdividing Movement Frame
If a swept-shape (or
movement bounds)
test says “yes”:
102
Subdividing Movement Frame
If a swept-shape (or
movement bounds)
test says “yes”:
Cut the frame in half;
perform two separate
tests (first half first,
second half second).
First positive test is
when the collision
occurred.
103
Subdividing Movement Frame
(cont’d)
Can recurse (1/2, 1/4,
1/8...) to the desired
level of granularity
104
Subdividing Movement Frame
(cont’d)
Can recurse (1/2, 1/4,
1/8...) to the desired
level of granularity
If both tests negative,
no collision (was a
false positive).
Still inexact
(minimizing, not
eliminating, false
positives)
Gets expensive
105
Determining Collision Time
Method #1: Frame Subdivision
Method #2: 4D* Continuous Collision
Detection
*(N+1
dimensions; 3D for 2D physics, etc.)
Spacetime
107
Spacetime
Spacetime is a Physics construct which
combines N-dimensional space with an
extra dimension for time, yielding a unified
model with N+1 dimensions.
Space (1D) + time (1D) = spacetime (2D)
Space (2D) + time (1D) = spacetime (3D)
Space (3D) + time (1D) = spacetime (4D)
108
Spacetime Diagrams
1D space + time = 2D
Just an X vs. T graph!
109
Spacetime Diagrams
1D space + time = 2D
Just an X vs. T graph!
2D space + time = 3D
No problem.
110
Spacetime Diagrams
1D space + time = 2D
2D space + time = 3D
Just an X vs. T graph!
No problem.
Another example (2d
space + time = 3D)
111
Spacetime Diagrams
1D space + time = 2D
2D space + time = 3D
Just an X vs. T graph!
No problem.
Another example (2d
space + time = 3D)
3D space + time = 4D
Brainbuster!
?
112
Spacetime Diagrams
(cont’d)
Note that an N-dimensional system in
motion is the same as a still snapshot in
N+1 dimensions
1D animation = 2D spacetime still image
2D animation = 3D spacetime still image
3D animation = 4D spacetime still image
113
Spacetime Diagrams
1D animation
(cont’d)
2D spacetime still image
114
Spacetime Diagrams
2D animation
(cont’d)
3D spacetime still image
115
Spacetime Diagrams
(cont’d)
How do you envision a 4D object?
Use 2D animation -> 3D spacetime diagram as
a mental analogy.
Fun reading: Flatland by Edwin Abbott
Think about a 4D object that you’re already
familiar with.
(The universe in motion!)
116
Spacetime Diagrams
(cont’d)
Invented by Hermann Minkowski
Also called “Minkowski Diagrams”
117
(Rules)
Time-Swept Shapes
119
Time-Swept Shapes
Sweep out shapes,
but do it over time in
a spacetime diagram
Define time over
frame as being in the
interval [0,1]
As before, we can
play around with lots
of relativistic
variations:
120
Time-Swept Shapes
A vs. B in world frame
(cont’d)
121
Time-Swept Shapes
A vs. B in world frame
A is moving, B is still
(cont’d)
122
Time-Swept Shapes
A vs. B in world frame
A is moving, B is still
A is CSO, B is point
(cont’d)
123
Time-Swept Shapes
A vs. B in world frame
A is moving, B is still
A is CSO, B is point
A is still CSO, B is
moving (swept) point
(cont’d)
124
Time-Swept Shapes
To solve for collision time,
we intersect the pointswept ray against the CSO
The ‘t’ coordinate at the
intersection point is the
time [0,1] of collision
Collision check is done in
N+1 dimensions
Which means, in a 3D
game, we collide a 4D ray
vs. a 4D body! (What?)
(cont’d)
125
Time-Swept Shapes
Wait, it gets easier...
When we view this
diagram (CSO vs
moving point) down
the time axis, i.e.
from “overhead”:
Since CSO is not
moving, it looks 2D
from overhead...
(cont’d)
126
Time-Swept Shapes
We can reduce this back
down to N dimensions
(from N+1) since we are
looking down the time
axis!
So it becomes an Ndimesional ray vs. Ndimensional body again.
Which means, in a 3D
game, we collide a 3D ray
vs. a 3D body.
(cont’d)
127
128
Time-Swept Shapes
Question #4: When,
during the frame, did
A and B collide?
Finally, the right
question - and we
have a complete
answer!
With fixed cost, and
with exact results (no
false anything).
(cont’d)
129
Time-Swept Shapes
BTW, this is essentially
the same as solving
for the fraction of the
singularity-translation
ray from our original
Minkowski Difference
“inadmissible
translations” picture!
(cont’d)
Quality vs. Quantity
or
“You Get What You Pay For”
131
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)
133
Rotations
Continuous rotational
collision detection
sucks
Rotational tunneling
alone is problematic
134
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
135
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
137
Summary
The nature of simulation causes us real
problems... problems which can’t be ignored.
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.
138
Summary
(cont’d)
Einstein and Minkowski are cool.
Rotations suck.
Doing real-time collision detection in 4D
spacetime doesn’t have to be hard.
Or expensive.
Or confusing.
139
Questions?
Feel free to reach me by email at:
[email protected]
or
[email protected]