Presentation is loading. Please wait.

Presentation is loading. Please wait.

Collision Detection.

Similar presentations


Presentation on theme: "Collision Detection."— Presentation transcript:

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.


Download ppt "Collision Detection."

Similar presentations


Ads by Google