Upload
jordan-macpherson
View
218
Download
2
Tags:
Embed Size (px)
Citation preview
Physics for Games Programmers Tutorial
Motion and Collision – It’s All Relative
Squirrel [email protected]
Lead ProgrammerRitual Entertainment
www.ritual.comwww.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
in-between 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 (cont’d)
Rotations are often assumed to happen instantaneously at frame boundaries
14
Problems with Simulation (cont’d)
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!
15
Problems with Simulation (cont’d)
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!)
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?
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
22
Tunneling (cont’d)
Besides, even with min. size requirements and speed limits and a small timestep, you still have degenerate cases that cause tunneling
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 (cont’d)
Like movement bounds, only with a perfect fit!
37
Swept Shapes (cont’d)
Like movement bounds, only with a perfect fit!
Still no false negatives (tunneling).
38
Swept Shapes (cont’d)
Like movement bounds, only with a perfect fit!
Still no false negatives (tunneling).
Finally, no false positives, either!
39
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.
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
x2 + y2 = r2(x-h)2 + (y-k)2 = r2
Math is often nicer at the origin.
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 (cont’d)
Disc + disc
63
Relative Collision Bodies (cont’d)
Disc + disc AABB + AABB
64
Relative Collision Bodies (cont’d)
Disc + disc AABB + AABB Triangle + AABB
65
Relative Collision Bodies (cont’d)
Disc + disc AABB + AABB Triangle + AABB AABB + triangle
66
Relative Collision Bodies (cont’d)
Disc + disc AABB + AABB Triangle + AABB AABB + triangle Polytope +
polytope
67
Relative Collision Bodies (cont’d)
Disc + disc AABB + AABB Triangle + AABB AABB + triangle Polytope +
polytope Polytope + disc
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 (cont’d)
Minkowski Differences are not commutative:A-B != B-A
Minkowski Difference of convex objects is convex (since A-B = A+ -B)
75
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”
76
Minkowski Differences (cont’d)
If the singularity is outside the combined body, A and B do not overlap.
77
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.
78
Minkowski Differences (cont’d)
Aorigin vs. Borigin
-Borigin -Borigin
___ ___(A-B)origin vs. 0
79
Minkowski Differences (cont’d)
In world space, A-B is “near” the origin
80
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.
81
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)
82
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)
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 different-shaped 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 (cont’d)
A vs. B in world frame
91
Relative Everything (cont’d)
A vs. B in world frame
A vs. B, inertial frame
92
Relative Everything (cont’d)
A vs. B in world frame
A vs. B, inertial frame
A is moving, B is still
93
Relative Everything (cont’d)
A vs. B in world frame
A vs. B, inertial frame
A is moving, B is still
A is CSO, B is point
94
Relative Everything (cont’d)
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
95
Relative Everything (cont’d)
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
96
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...
97
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
98
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”.
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 Just an X vs. T
graph! 2D space + time =
3D No problem.
Another example (2d space + time = 3D)
111
Spacetime Diagrams
1D space + time = 2D Just an X vs. T graph!
2D space + time = 3D 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 (cont’d)
2D spacetime still image
1D animation
114
Spacetime Diagrams (cont’d)
3D spacetime still image
2D animation
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 (cont’d)
A vs. B in world frame
121
Time-Swept Shapes (cont’d)
A vs. B in world frame
A is moving, B is still
122
Time-Swept Shapes (cont’d)
A vs. B in world frame
A is moving, B is still
A is CSO, B is point
123
Time-Swept Shapes (cont’d)
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
124
Time-Swept Shapes (cont’d)
To solve for collision time, we intersect the point-swept 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?)
125
Time-Swept Shapes (cont’d)
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...
126
Time-Swept Shapes (cont’d)
We can reduce this back down to N dimensions (from N+1) since we are looking down the time axis!
So it becomes an N-dimesional ray vs. N-dimensional body again.
Which means, in a 3D game, we collide a 3D ray vs. a 3D body.
127
128
Time-Swept Shapes (cont’d)
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).
129
Time-Swept Shapes (cont’d)
BTW, this is essentially the same as solving for the fraction of the singularity-translation ray from our original Minkowski Difference “inadmissible translations” picture!
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.