12
Oct 3, Fall 2005 Game Design 1 Collision Detection

Oct 3, Fall 2005Game Design1 Collision Detection

  • View
    215

  • Download
    2

Embed Size (px)

Citation preview

Oct 3, Fall 2005 Game Design 1

Collision Detection

Oct 3, Fall 2005 Game Design 2

Collision Detection

Essential for many games– Shooting – Kicking, punching, beating, whacking,

smashing, hitting, chopping, dicing, slicing, julienne fries…

– Car crashes Expensive

– tests!!)( 2NO

Oct 3, Fall 2005 Game Design 3

Collision Detection

For each object i containing polygons p– Test for intersection with object j with

polygons q– (j > i)

For polyhedral objects, test if object i penetrates surface of j– Test if vertices of i straddle polygon q of j

• If straddle, then test intersection of polygon q with polygon p of object i

Oct 3, Fall 2005 Game Design 4

Collision Detection

Efficiency hacks/cheats– Fewer tests: Exploit spatial coherence

• Use bounding boxes/spheres• Hierarchies of bounding boxes/spheres

Oct 3, Fall 2005 Game Design 5

Bounding Boxes

Axis-aligned vs. Object-aligned

Axis-aligned BBox change as object moves

Approximate by rotating BBoxSwept volume

Oct 3, Fall 2005 Game Design 6

Collision Detection

Convex objects– Look for separating plane

• Test all faces

• Test each edge from obj 1 against vertex of obj 2

– Save separating plane for next animation frame

Oct 3, Fall 2005 Game Design 7

Collision Detection

Concave Objects– Break apart– Convex hull

• Automatic or artist-created

Oct 3, Fall 2005 Game Design 8

Collision Detection

To go faster– Sort on one dimension

• Bucket sort (i.e. discretize in 1 dimension)

– Exploit temporal coherence• Maintain a list of object pairs that are close

to each other• Use current speeds to estimate likely

collisions

– Use cheaper tests

Oct 3, Fall 2005 Game Design 9

))()(( 221

221 yyxxsqrtd −+−=

Collision Detection

Cheaper distance calculation:– Compare against

Approximation:

– Manhattan distance - Shortest side/2

)()( 2121 yyabsxxabsd −+−=

2d

5.55.143'

54,3

=−+== →==

dddydx

2/))(),(min( 2121 yyabsxxabs −−−

Oct 3, Fall 2005 Game Design 10

Collision Detection: Sprites

AND for each pixel in sprites

Oct 3, Fall 2005 Game Design 11

Collision Detection

Discretization in 3D Create a voxel array

– Store an ID in each voxel where an object is– Collision where voxel has an ID already– Difficult to determine good voxel size– Huge memory– Hash table -- gives constant time point

queries

Oct 3, Fall 2005 Game Design 12

Inter-Object Distance A related problem:

– Collision Avoidance Part of motion planning is to avoid

collisions Many collision detection algorithms take

time into account Estimate Collision Time, distance www.cs.unc.edu/~geom/collide/

index.shtml