This preview shows page 1. Sign up to view the full content.
Unformatted text preview: Collision Detection and Response Motivation
Motivation OpenGL is a rendering system OpenGL has no underlying knowledge of the objects it draws Collision Detection == Intersection Detection Motivation
Motivation Collision Detection Identifying the intersection of 3D models Collision Response Calculating the appropriate post collision response of the 3D models Assumptions Closed 3D polygonal objects Overall Approach
Overall Approach Where is collision detection and response in code? In animation function Usually in Idle or Display
Update object positions
If (CollisionDetection())
Collision Response() Draw Objects Collision Detection
Collision Detection Basic Collision Detection function for (i=0;i<num_of_objects1;i++) for (j=i+1;j<num_of_objects;j++) X=TestIntersection(Object I, Object j) If (x==1) return 1; Collision Detection Packages
Collision Detection Packages SWIFT++ http://www.cs.unc.edu/~geom/SWIFT++/ Works on ‘polygon soup’ Why is collision detection difficult?
Why is collision detection difficult? Too many calculations Reduce # of calculations Accuracy Accept approximations Lots of poor cases Guarantee detection? Accuracy requirements? http://www.cs.unc.edu/~geom/collide/index .shtml Reduce Calculations
Reduce Calculations Reduce object complexity Test with only other objects that might be within collision spaces
Spatial divisions Preprocess vs. runtime Approximate Object Shape
Approximate Object Shape For many applications, it is not necessary to get absolute collision detection accuracy How can we approximate the shape? Bounding Boxes
Bounding Boxes Calculate a 3D box that bounds the object
In the collision detection test, use the 3D box to test for collision in place of the full model
Two types Axis Aligned Bounding boxes are aligned w/ the world coordinate axes Object Aligned Bounding boxes are aligned w/ the object coordinate axes Axis Aligned Bounding Boxes
Axis Aligned Bounding Boxes How do we calculate a AABB? Take max and min for each dimension Pros Very fast Works for many situations Cons Collision detection accuracy reduced for many cases Axis Aligned Bounding Boxes
Axis Aligned Bounding Boxes How do we calculate intersections? Calculate overlap for the minmax range for each dimension Pros Very fast Works for many situations Cons Collision detection accuracy reduced for many cases ObjectAligned Bounding Boxes
ObjectAligned Bounding Boxes Calculate BB based on object’s primary dimensions
Object’s dimensions could be encoded in model or calculated realtime
Apply M matrix to bounding box coordinates Other bounding shapes
Other bounding shapes Boxes Cubes Cylinders Polygons Userdefined shapes Should be easy to calculate and test Bounding Box Approach
Bounding Box Approach Test collisions with BB Can either report collision Or then calculate more accurate collision Benefits of this include more accurate response Poor cases
Poor cases Thin objects Poor cases
Poor cases Numerical Precision Collision Response
Collision Response Assuming rigid bodies Idea is to “rewind time” and to point of collision and calculate resulting location Why is collision response Why is collision response difficult? Resolving interpenetration is difficult Multiple objects http://www.peroxide.dk/download/tutorials/tut10/pics/pic04.jpg Numerical Imprecision
Numerical Imprecision Vibrations Solutions? Minimum delta ...
View Full
Document
 Fall '08
 Staff

Click to edit the document details