Download presentation
Presentation is loading. Please wait.
1
Collision Detection
2
The problem can be defined as
Intro The problem can be defined as if, where and when two objects intersect.
3
Collision Detection Collision detection, as used in the games community, usually means intersection detection of any form Intersection detection is the general problem: find out if two geometric entities intersect – typically a static problem Subtle point: Collision detection is about the algorithms for finding collisions in time as much as space
4
Classification of Collision Detection
Type of objects convexity/concavity rigid/deformable polygons/curves 1-Dimensional/2D/3D/N-D static/dynamic Time of collision discrete/continuous exact/approximate Motion of objects linear/non-linear predictable/dynamic bounded/unbounded angular motion Other factors realtime/off-line number of objects allowable error margin frame vs. path
5
Choosing an Algorithm The geometry of the colliding objects is the primary factor in choosing a collision detection algorithm “Object” could be a point, or line segment Object could be specific shape: a sphere, a triangle, a cube, … Objects can be concave/convex, solid/hollow, deformable/rigid, manifold/non- manifold
6
Collision Detection in the Video Game Package
For pair (j, k) of Sprites: if the boundingBox(j) does not intersect boundingBox(k), return no intersection let m be the intersection of j and k if m is empty, return no intersection otherwise, return intersection This algorithm uses a simple test for intersection when possible (intersection of bounding boxes), and a more exact test when the bounding box fails to determine intersection.
7
Collision Detection in the Video Game Package
What this collision detection is not good at doing: determining path intersections (important for fast moving objects or low model frame rates) determining time/location of first intersection predicting intersections handling a large number of Sprites
8
Part 1: Bounding Volumes
Reduce complexity of collision computation by substitution of the (complex) original object with a simpler object containing the original one.
9
Bounding Volumes The original objects can only intersect if the simpler ones do. Or better: if the simpler objects do NOT intersect, the original objects won’t either.
10
Different BVs used in game programming:
Bounding Volumes Different BVs used in game programming: Axes Aligned Bounding Boxes (AABB) Oriented Bounding Boxes (OBB) Spheres k-Discrete Oriented Polytopes (k DOP) Sphere OBB k-DOP AABB
11
Oriented Bounding Box (OBB)
Bounding Volumes Oriented Bounding Box (OBB) Align box to object such that it fits optimally in terms of fill efficiency Computationally expensive Invariant to rotation Complex intersection check
12
Separating Axes Theorem
Bounding Volumes The overlap test is based on the Separating Axes Theorem (S. Gottschalk. Separating axis theorem. Technical Report TR96-024,Department of Computer Science, UNC Chapel Hill, 1996) Two convex polytopes are disjoint iff there exists a separating axis orthogonal to a face of either polytope or orthogonal to an edge from each polytope.
13
Bounding Volumes Each box has 3 unique face orientations, and 3 unique edge directions. This leads to 15 potential separating axes to test (3 faces from one box, 3 faces from the other box, and 9 pairwise combinations of edges).
14
Not invariant to rotation
Bounding Volumes K-DOP Easy to compute Good fill efficiency Simple overlap test Not invariant to rotation
15
k-DOPs are used e.g. in the game
Bounding Volumes k-DOPs are used e.g. in the game ‘Cell Damage’ (XBOX, Pseudo Interactive, 2002)
16
Part 2: Collision on different scales:
Bounding Volumes Part 2: Collision on different scales: Hierarchies
17
Hierarchies Idea: To achieve higher exactness in collision detection, build a multiscale BV representation of the object
18
Hierarchies
19
Each node contains all primitives of its subtree
Hierarchies Simple example: Binary tree Each node contains all primitives of its subtree Leaves contain single primitive
20
Hierarchies
21
Hierarchies
22
Hierarchies
23
How to create a hierarchy tree
Hierarchies How to create a hierarchy tree Top down: Use single BV covering whole object Split BV Continue recursively until each BV contains a single primitive
24
Start with BV for each primitive
Hierarchies Bottom up: Start with BV for each primitive Merge
25
Example for top down using OBBs :
Hierarchies Example for top down using OBBs :
26
Hierarchies Comparison AABB / OBB
27
Part 3: Collision between
Multiple Objects Part 3: Collision between Multiple Objects
28
Grid Method: Create 3d grid volume overlay
Multiple Objects Grid Method: Create 3d grid volume overlay Only check collision between objects sharing at least one cell
29
Multiple Objects 2D example
30
Sort and Sweep Create single AABB for each object
Multiple Objects Sort and Sweep Create single AABB for each object Project BVs onto coordinate axes Create a sorted list of start and endpoints for each coordinate axis, hence store the intervals created by each object (Cont’d)
31
If startpoint of object i is hit, insert i into ‘active list’
Multiple Objects Traverse each list If startpoint of object i is hit, insert i into ‘active list’ If endpoint of object i is hit, remove i from ‘active list’ If 2 objects i1,i2 are active at the same time they overlap in the dimension processed Objects overlapping in all single dimensions overlap in world
32
S3 S1 E3 S2 E1 E2 S1 S2 E1 S3 E2 E3 Multiple Objects X Y 3 1 2
OVERLAP 1,2 s1 s2 e1 s3 e2 e3
33
Note: sort and sweep for a single step is relatively expensive.
Multiple Objects Note: sort and sweep for a single step is relatively expensive. Since not all objects are transformed for the next frame, the list is not created newly for each frame, but updated.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.