4.2 Collision Detection
4.2 Collision Detection
2
Collision Detection and
Resolution
Collision Detection
Complicated for two reasons
1. Geometry is typically very complex,
potentially requiring expensive
testing
2. Naïve solution is O(n2) time
complexity, since every object can
potentially collide with every other
object
2
Collision Detection
Two basic techniques
1. Overlap testing
Detects whether a collision has already
occurred
2. Intersection testing
Predicts whether a collision will occur in
the future
Overlap Testing
Facts
Most common technique used in games
Exhibits more error than intersection
testing
Concept
For every simulation step, test every
pair of objects to see if they overlap
Easy for simple volumes like spheres,
harder for polygonal models
4
Overlap Testing:
Useful Results
Useful results of detected collision
Time collision took place
Collision normal vector
5
Overlap Testing:
Collision Time
Collision time calculated by moving
object back in time until right before
collision
Bisection is an effective technique
A
t0
A
A
t 0.25 A A
A
t 0.375
t 0.4375 t 0.40625
t 0.5
t1
B B B B B B
In itial O v erlap Iteratio n 1 Iteratio n 2 Iteratio n 3 Iteratio n 4 Iteratio n 5
T es t F o rw ard 1 /2 Bac k w ard 1 /4 F o rw ard 1 /8 F o rw ard 1 /1 6 Bac k w ard 1 /3 2
6
Overlap Testing:
Limitations
Fails with objects that move too fast
Unlikely to catch time slice during overlap
Possible solutions
Design constraint on speed of objects
Reduce simulation step size
w in d o w
t -1 t0 t1 t2
b u llet
7
Intersection Testing
Predict future collisions
When predicted:
Move simulation to time of collision
Resolve collision
Simulate remaining time step
8
Intersection Testing:
Swept Geometry
Extrude geometry in direction of
movement
Swept sphere turns into a “capsule”
shape
t0
t1
9
Intersection Testing:
Sphere-Sphere Collision
t
Α Β A B 2
B 2 Α 2 rP rQ
2
, A P1 Q1
B P2 P1 Q 2 Q1 .
2
B
Q2
t= 1
P1
t= 0
P
P2
Q
t= 1
Q1
t= 0
10
Intersection Testing:
Sphere-Sphere Collision
Smallest distance ever separating
two spheres:
2
d A 2 A B
2
B2
r
2 2
If d P rQ
there is a collision
11
Intersection Testing:
Limitations
Issue with networked games
Future predictions rely on exact state of
world at present time
Due to packet latency, current state not
always coherent
12
Dealing with Complexity
Two issues
1. Complex geometry must be
simplified
2. Reduce number of object pair tests
13
Dealing with Complexity:
Simplified Geometry
Approximate complex objects with
simpler geometry, like this
ellipsoid
14
Dealing with Complexity:
Minkowski Sum
By taking the Minkowski Sum of
two complex volumes and creating
a new volume, overlap can be
found by testing if a single point is
within the new volume
15
Dealing with Complexity:
Minkowski Sum
X Y { A B : A X and B Y}
X Y = X Y = X Y
16
Dealing with Complexity:
Minkowski Sum
t1 t1
t0 t0
17
Dealing with Complexity:
Bounding Volumes
Bounding volume is a simple
geometric shape
Completely encapsulates object
If no collision with bounding volume,
no more testing is required
Common bounding volumes
Sphere
Box
18
Dealing with Complexity:
Box Bounding Volumes
20
Dealing with Complexity:
Achieving O(n) Time
Complexity
Another solution is the plane sweep
algorithm
y
B1
A1
R1 B
A
B0
A0 R
C1
R0
C
C0
A0 A1 R 0 B0 R 1 C 0 B1 C1 x
21
Terrain Collision Detection:
Height Field Landscape
22
Terrain Collision Detection:
Locate Triangle on Height
Field
z
Q Q
R Qz > Qx Rz > 1 - Rx
Qz <= Qx Rz <= 1 - Rx
23
Terrain Collision Detection:
Locate Point on Triangle
Plane equation: Ax By Cz D 0
A, B, C are the x, y, z components
of the plane’s normal vector
Where D N P0
with one of the triangles
vertices beingP0
Giving: N x x N y y N z z N P0 0
24
Terrain Collision Detection:
Locate Point on Triangle
The normal can be constructed by
taking the cross product of two sides:
N P1 P0 P2 P0
Solve for y and insert the x and z
components of Q, giving the final
equation for point within triangle:
N x Q x N z Q z N P0
Qy
Ny
25
Terrain Collision Detection:
Locate Point on Triangle
Triangulated Irregular Networks
(TINs)
Non-uniform polygonal mesh
Barycentric
P
Coordinates
2
P o in t = w 0 P 0 + w 1 P 1 + w 2 P 2
Q Q = ( 0 ) P 0 + ( 0 .5 ) P 1 + ( 0 .5 ) P 2
R
R = ( 0 .3 3 ) P 0 + ( 0 .3 3 ) P 1 + ( 0 .3 3 ) P 2
P1
P0
26
Terrain Collision Detection:
Locate Point on Triangle
Calculate barycentric coordinates for
point Q in a triangle’s plane
w1 1 V22 V1 V2 S V1 S Q P0
w V1 P1 P0
2 V1 V2 V1 V2
2
2 2
V1 V2 V12 S V2
V2 P2 P0
w0 1 w1 w2
If any of the weights (w0, w1, w2) are
negative, then the point Q does not lie
in the triangle
27
Collision Resolution:
Examples
Two billiard balls strike
Calculate ball positions at time of impact
Impart new velocities on balls
Play “clinking” sound effect
Rocket slams into wall
Rocket disappears
Explosion spawned and explosion sound effect
Wall charred and area damage inflicted on nearby
characters
Character walks through wall
Magical sound effect triggered
No trajectories or velocities affected 28
Collision Resolution:
Parts
Resolution has three parts
1. Prologue
2. Collision
3. Epilogue
29
Collision Resolution:
Prologue
Collision known to have occurred
Check if collision should be ignored
Other events might be triggered
Sound effects
Send collision notification messages
30
Collision Resolution:
Collision
Place objects at point of impact
Assign new velocities
Using physics or
Using some other decision logic
31
Collision Resolution:
Epilogue
Propagate post-collision effects
Possible effects
Destroy one or both objects
Play sound effect
Inflict damage
Many effects can be done either in
the prologue or epilogue
32
Collision Resolution:
Resolving Overlap Testing
1. Extract collision normal
2. Extract penetration depth
3. Move the two objects apart
4. Compute new velocities
33
Collision Resolution:
Extract Collision Normal
Find position of objects before impact
Use two closest points to construct the
collision normal vector
34
Collision Resolution:
Extract Collision Normal
Sphere collision normal vector
Difference between centers at point of
collision
t0
t0.25
t0.5
t0.75
t0
t1
t0.25
Co
N o llis io t0.5
rm n
al
t0.75
t1
35
Collision Resolution:
Resolving Intersection
Testing
Simpler than resolving overlap
testing
No need to find penetration depth or
move objects apart
Simply
1. Extract collision normal
2. Compute new velocities
36