Presentation is loading. Please wait.

Presentation is loading. Please wait.

CIS 350 – I Game Programming Instructor: Rolf Lakaemper.

Similar presentations


Presentation on theme: "CIS 350 – I Game Programming Instructor: Rolf Lakaemper."— Presentation transcript:

1 CIS 350 – I Game Programming Instructor: Rolf Lakaemper

2 Parts of these slides are based on www2.informatik.uni-wuerzburg.de/ mitarbeiter/holger/lehre/osss02/schmidt/vortrag.pdf by Jakob Schmidt Introduction To Collision Detection

3 What ? The problem: The search for intersecting planes of different 3D models in a scene. Collision Detection is an important problem in fields like computer animation, virtual reality and game programming.

4 Intro The problem can be defined as if, where and when two objects intersect.

5 Intro This introduction will deal with the basic problem: IF two (stationary) objects intersect.

6 Intro The simple solution: Pairwise collision check of all polygons the objects are made of.

7 Intro Problem: complexity O(n²) not acceptable for reasonable number n of polygons not applicable for realtime application

8 Bounding Volumes 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 Bounding Volumes How to choose BVs ? Object approximation behavior (‘Fill efficiency’) Computational simplicity Behavior on (non linear !) transformation (incl. deformation) Memory efficiency

11 Bounding Volumes Different BVs used in game programming: Axes Aligned Bounding Boxes (AABB) Oriented Bounding Boxes (OBB) Spheres k-Discrete Oriented Polytopes (k DOP) AABB OBB Sphere k-DOP

12 Bounding Volumes Axes Aligned Bounding Box (AABB) Align axes to the coordinate system Simple to create Computationally efficient Unsatisfying fill efficiency Not invariant to basic transformations, e.g. rotation

13 Bounding Volumes Axes Aligned Bounding Box (AABB) Collision test: project BBs onto coordinate axes. If they overlap on each axis, the objects collide.

14 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

15 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.

16 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).

17 Bounding Volumes Sphere Relatively complex to compute Bad fill efficiency Simple overlap test invariant to rotation

18 Bounding Volumes K-DOP Easy to compute Good fill efficiency Simple overlap test Not invariant to rotation

19 Bounding Volumes k-DOP is considered to be a trade off between AABBs and OBBs. Its collision check is a general version of the AABB collision check, having k/2 directions

20 Bounding Volumes k-DOPs are used e.g. in the game ‘Cell Damage’ (XBOX, Pseudo Interactive, 2002)

21 How to Compute and Store k-DOPs: k-directions k-directions B i define halfplanes (they are the normals to the halfplanes), the intersection of these halfplanes defines the k-DOP bounding volume. Halfplane H i = {x | B i x – d i <= 0} Bounding Volumes

22 3D Example: UNREAL-Engine

23 Bounding Volumes 2D Example for halfplanes defining a k-DOP Normal vector B i

24 Bounding Volumes Again: halfplane H i = {x | B i x – d i <= 0} If the directions B i are predefined, only the distances d i must be stored to specify the halfplane H i. This is one scalar value per direction. If the directions are NOT predefined, B i and d i must be stored (3D case: 4 values)

25 Bounding Volumes How to compute d i : Hessian Normal Form ( Bx – d = 0 with d = Bp) with unit vector of a plane automatically gives distance d if a single point p on the plane is known.

26 Bounding Volumes Compute distances of all vertices to plane Bx = 0, i.e. multiply (dot product) each vertex with the unit normal vector B Bx = 0 Unit vector B

27 Bounding Volumes d i is the minimum distance of the object to the plane Bx = 0 Bx = 0 didi

28 Bounding Volumes Collision Given: k non kollinear directions B i and V = set of vertices of object. Compute d i = min{B i v| v in V } and D i = max{B i v| v in V}. d i and D i define an interval on the axis given by B i. This is the interval needed for the collision detection !

29 Bounding Volumes Collision B1 Plane defined by B1Interval [d1, D1] defined by B1 d1 D1

30 Bounding Volumes Part 2: Collision on different scales: Hierarchies

31 Idea: To achieve higher exactness in collision detection, build a multiscale BV representation of the object

32 Hierarchies

33 Use the hierarchy from coarse to fine resolution to exclude non intersecting objects

34 Hierarchies The hierarchy is stored in a tree, named by the underlying BV scheme: AABB – tree OBB – tree Sphere – tree kDOP – tree

35 Hierarchies Sphere Trees are used for example in “Gran Tourismo”

36 Hierarchies Simple example: Binary tree Each node contains all primitives of its subtree Leaves contain single primitive

37 Hierarchies

38

39 Recursive Collision Detection ) Returns TRUE if BBs overlap. How could this be improved to give a precise overlap test ?

40 Hierarchies

41 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

42 Hierarchies Bottom up: Start with BV for each primitive Merge

43 Hierarchies Example for top down using OBBs :

44 Hierarchies Comparison AABB / OBB

45 Multiple Objects Part 3: Collision between Multiple Objects

46 Virtual environment usually consists of more than 2 objects. Pairwise detailed collision between all objects is too slow. Solution again: 1. Exclude non colliding objects 2. Check collision between remaining objects

47 Multiple Objects Methods to exclude non colliding objects: 1.Grid Method Or 2. Sort and Sweep (AABB)

48 Multiple Objects Grid Method: Create 3d grid volume overlay Only check collision between objects sharing at least one cell

49 Multiple Objects 2D example

50 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)

51 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

52 Multiple Objects S3 S1 E3 S2 E1 E2 1 2 3 s3 e3 e1 s1 s2 e2 e1s2e3s1s3 S1 S2 E1 S3 E2 E3 XY OVERLAP 1,2

53 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 "CIS 350 – I Game Programming Instructor: Rolf Lakaemper."

Similar presentations


Ads by Google