Create Presentation
Download Presentation

Download Presentation
## Collision Detection and Response

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Motivation**• OpenGL is a rendering system • OpenGL has no underlying knowledge of the objects it draws • Collision Detection == Intersection Detection**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**• 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**• Basic Collision Detection function • for (i=0;i<num_of_objects-1;i++) • for (j=i+1;j<num_of_objects;j++) • X=TestIntersection(Object I, Object j) • If (x==1) return 1;**Collision Detection Packages**• SWIFT++ • http://www.cs.unc.edu/~geom/SWIFT++/ • Works on ‘polygon soup’**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 object complexity • Test with only other objects that might be within collision spaces • Spatial divisions • Pre-process vs. runtime**Approximate Object Shape**• For many applications, it is not necessary to get absolute collision detection accuracy • How can we approximate the shape?**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**• 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**• How do we calculate intersections? • Calculate overlap for the min-max range for each dimension • Pros • Very fast • Works for many situations • Cons • Collision detection accuracy reduced for many cases**Object-Aligned Bounding Boxes**• Calculate BB based on object’s primary dimensions • Object’s dimensions could be encoded in model or calculated real-time • Apply M matrix to bounding box coordinates**Other bounding shapes**• Boxes • Cubes • Cylinders • Polygons • User-defined shapes • Should be easy to calculate and test**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**• Thin objects**Poor cases**• Numerical Precision**Collision Response**• Assuming rigid bodies • Idea is to “rewind time” and to point of collision and calculate resulting location**Why is collision response difficult?**• Resolving interpenetration is difficult • Multiple objects http://www.peroxide.dk/download/tutorials/tut10/pics/pic04.jpg**Numerical Imprecision**• Vibrations • Solutions? Minimum delta