This preview shows page 1. Sign up to view the full content.
Unformatted text preview: Collision Detection
Part 2 1 SphereSphere Collision
A sphere is represented using its center and its radius d Intersection if d is less than the sum of their two radius
2 How About 2 MOVING spheres?
2 spheres move during a time step from one point to another Their paths cross inbetween but this is not enough to prove that an intersection occurred (they could pass at a different time) nor can the collision point be determined. 3 How About 2 MOVING spheres? Sliced time step up into smaller pieces. Move the spheres according to that sliced time
step using its velocity, and check for collisions. If at any point collision is found (which means the spheres have already penetrated each other) then Take the previous position as the intersection point The smaller the time steps, the more slices we use the more accurate the method is. As an example lets say the time step is 1 and our slices are 3. We would check the two balls for collision at time 0 , 0.33, 0.66, 1. 4 SpherePlane Collision Determine the exact collision point between a particle
and a plane. The start position of the ray is the position of the
particle and the direction of the ray is its velocity (speed and direction). 5 SpherePlane Collision Each sphere has a radius, take the center
of the sphere as the particle and offset the surface along the normal of each plane of interest. ones represented by continuous lines, but the collision testing is done with the offset primitives (represented with dotted lines). test with a little offset plane. Our actual primitives of interest are the In essence we perform the intersection 6 SpherePlane Collision Using this little trick the ball does
not penetrate the surface if an intersection is determined with its center. where the sphere penetrates the surface. This happens because we determine the intersection between its center and the primitives. Otherwise we get the situation 7 Calculating Plane Equations A 3D Plane is defined by a normal and a distance along that normal Plane Equation: ( Nx, Ny, Nz ) ( x, y, z ) +d = 0 Find d: ( Nx, Ny, Nz ) ( Px, Py, Pz ) = d For test point (x,y,z), if plane equation
> 0: point on `front' side (in direction of normal), < 0: on `back' side = 0: directly on plane 8 Example: Distance to Plane A plane is described by a point p on the plane
and a unit normal n. Find the distance from point x to the plane x n p
9 Example: Distance to Plane The distance is the length of the projection
of xp onto n: dist = ( x  p ) n
n p x xp 10 Collision Detection
Two convex objects are nonoverlapping/penetrating if there exists a separating plane between them
separating plane So, find a separating plane and see if it is still valid after the next simulation step Speed up with bounding boxes, grids, hierarchies, etc Use bounding volumes (BV's) to approximate each object's real volume 11 Bounding Volumes?
Reduce complexity of collision computation by substitution of the (complex) original object with a simpler object containing the original one. 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.
12 Bounding Volumes? Spheres, cylinders, boxes, polyhedra, etc. Spheres are mostly used For boxes and polyhedra, most
intersection tests start with point insideoutside tests That's why convexity matters. 13 2D Point InsideOutside Tests Convex Polygon Test Test point has to be on same side of all edges Concave Polygon Tests 360 degree angle summation Compute angles between test point and each vertex, inside if they sum to 360 Slow, dot product and acos for each angle! Other concave polygon tests are Quadrant Method or Edge Cross Test etc 14 Spheres as Bounding Volumes Simplest 3D Bounding Volume Center point and radius Point in/out test: Calculate distance between test point and center point If distance <= radius, point is inside It is ALWAYS worth it to do a sphere
15 test before any more complicated test. SphereAnything Testing The key observation is that collision testing with a
sphere can be converted into a closest point problem: Given a point and an object, find the point on the object that is closest to the given point To test for collision with a sphere, find out if the point
closest to the sphere's center is closer than the sphere's radius 16 AxisAligned Bounding Boxes Specified as two points:
( xmin , ymin , z min ), ( xmax , ymax , z max ) Simple pointinside test:
xmin x xmax ymin y ymax z min z z max
17 Problems With AABB's Not very efficient Rotation can be complicated Must rotate all 8 points of box Other option is to rotate model and rebuild AABB, but this is not efficient 18 Oriented Bounding Boxes Center point, 3 normalized
axis, 3 edge halflengths Can become notabox after transformations Better at bounding than spheres and AABB's 19 OBB Point Inside/Outside Tests Plane Equations Test Plug test point into plane equation for all 6 faces If all test results have the same sign, the point is inside Smart Plane Equations Test Each pair of opposing faces has same normal, only d changes Test point against d intervals down to 3 plane tests 20 kDOP's kDiscrete Oriented Polytype K is the number of the projected faces Set of k/2 infinite `slabs' A slab is a normal and a dinterval Intersection of all slabs forms a convex
polyhedra OBB and AABB are 6DOP's Same intersection tests as OBB There is an even faster test if all your objects have the same k and same slab normals Better bounds than OBB 21 Bounding Volumes KDOP Easy to compute Good fill efficiency Simple overlap test Not invariant to rotation kDOP is 22 Plane Intersection Tests Planes are good for all sorts of things Boundaries between level areas, `finish lines', track walls, etc Basis of BSP (Binary Space Partition) Trees Used heavily in game engines like Quake(1, 2,... They PARTITION space in half ) 23 AABB/Plane Test An AABB has 4 diagonals Find the diagonal most
closely aligned with the plane normal Check if the diagonal crosses the plane 24 Other Planeish Tests PlanePlane Planes are infinite. They intersect unless they are parallel. You can build an arbitrary polyhedra using a bunch of planes (just make sure it is closed....) TriangleTriangle Many, many different ways to do this
25 Separating Axis Theorem For any two arbitrary, convex, disjoint
polyhedra A and B, there exists a separating axis where the projections of the polyhedra for intervals on the axis and the projections are disjoint Lemma: if A and B are disjoint they can be separated by an axis that is orthogonal to either:
1) 2) 3) a face of A a face of B an edge from each polyhedron 26 Separating Axis Theorem Test Can also be used to determine
intersection between objects: Sphere/AABB AABB/AABB OBB/OBB etc 27 OBB/OBB Geometric Test To check if A is intersecting B: Check if any vertex of A is inside B Check if any edge of A intersects a face of B Repeat tests with B against A Face/Face tests It is possible for two boxes to intersect but fail the vertex/box and edge/face tests. Catch this by testing face centroids against boxes Very unlikely to happen, usually ignored 28 Bounding volume schemes Schemes to detect collision on different
scales:
1. Hierarchies of bounding volumes 2. Dimension reduction methods 3. Spatial hashing methods 29 Hierarchical Bounding Volumes To achieve higher exactness in
collision detection, build a multiscale BV representation of the object. Sphere Trees, AABB Trees, OBB Trees Trees are built automagically Usually precomputed, fitting is expensive Accurate bounding of concave objects Down to polygon level if necessary 30 Bounding Volume Hierarchies The hierarchy is stored in a tree named by the underlying BV scheme : AABBtree, OBBtree, kDOP tree, Spheretree Basic idea is to build a tree where each level of the tree bounds is its children Generally used for large numbers of static obstacles and a few moving things Put all the static obstacles into the tree Test for intersection between moving object and tree Intersection test looks a lot like testing against an octree or BSP tree The major difference is that a bounding volume hierarchy does not subdivide all of space, only those parts of space that are occupied Also used for subdividing a single object, as we will see later 31 Hierarchies 32 Hierarchies Recursive Collision Detection
Returns TRUE if BBs overlap. How could this be improved to give a precise overlap test ? ) 33 Hierarchical Bounding Volumes 34 BVH vs Spatial Partitioning 35 Spatial Partitioning  Idea 36 Spatial Data Structures 37 Octree , kd Tree 38 BSPTree binary space partitioning tree hierarchical structure space is subdivided by means of arbitrarily oriented planes generalized kd tree space partitioning into convex cells discreteorientation BSP trees DOBSP (finite set of plane orientations)
39 BSP Tree for Collision Detection 40 Collision Query 41 Dimension Reduction Algorithm works with AABBs In order for two AABBs to overlap
in 3D, they must overlap along every 1D axis This is a special case of the separating plane theorem Sort the box extents in each dimension Find all the 1D overlaps Tag pairs that overlap in all dimensions (can be done without much overhead on the 1D problems) y x X overlaps: greenred, redblue Y overlaps: orangered,orange green, greenred, greenblue 2D overlaps: greenred 42 Exploiting Coherence Sometime you can claim that the sorted order of
the bound extents will not change much between tests If objects don't move far in each frame, and don't frequently change direction This assumption fails for bouncing objects 43 Spatial Hashing Spatial hashing was developed to avoid the bouncing problem with
dimension reduction Claims near linear time overlap detection Basic idea: Pretend space is broken up into a regular subdivision, but don't store the cells Determine the indexes of the cells that each bound overlaps Regular subdivision makes finding cell indices easy Turn the indexes into hash keys, one for each overlapped cell (just concatenate the bits) Hash the object into a table based on the keys Hash table collisions indicate overlaps 44 2D Spatial Hashing Orange is hashed into 0100 Green is hashed into 0100, 0000, 0101
and 0001 Red is hashed into 1001, 0101 Blue is hashed into 0101, 0110, 0001, 0010 Orangegreen, greenred, greenblue, redblue are all potential collisions 10 01 00 00 01 10 The problem with spatial hashing (like any regular grid technique) is choosing the grid resolution A good heuristic is that a cell should be about twice as large as the bounds 45 Dynamic Simulation Architecture Collision Detection
is generally the bottleneck in any dynamic simulation system Lots of ways to speed up collisiondetection
46 Reducing Collision Tests Testing each object with all others is O(N2) At minimum, do bounding sphere tests
first Reduce to O(N+k) with sweepandprune See SIGGRAPH 97 Physically Based Modelling Course Notes Spatial Subdivision is fast too Updating after movement can be complicated AABB is easiest to sort and maintain Not necessary to subdivide all 3 dimensions
47 Other neat tricks Raycasting Fast heuristic for `passthrough' problem Sometimes useful in AI Like for avoiding other cars Caching Exploit frame coherency, cache the last vertex/edge/face that failed and test it first `hits' most of the time, large gains can be seen
48 Collision Response What should happen when 2 object collide? It is a dynamic problem calculating the state (velocity, ...) after the collision Several approaches:
1. 2. 3. Projection Penaltyforce Impulsebased 49 Projection The basic idea is to move the objects out
of overlapping/penetrating using the smallest possible displacement i.e. need to find the vector v which moves the two objects out of penetration by the shortest distance possible. Modifies the position of objects directly 50 Penaltyforce response Use spring forces to pull objects out of
collision modify the acceleration of the object caused from the spring force 51 Impulsebased method Use instantaneous impulse (changing in
velocity) to prevent objects from overlapping/penetrating Modify the velocity of the object 52 Application Examples
Computer Games Medical Surgery 53 Bounding Volumes kDOPs are used e.g. in the game `Cell Damage' (XBOX, Pseudo Interactive, 2002) 54 Bounding Volumes 3D Example: UNREALEngine 55 Intestinal Surgery
small intestine colon Surgery objective  remove cancerous colon tissues
Laparoscopic technique Critical task  move the small intestine aside Aim: Train the surgeons to do this task 56 Challenges
Small Intestine 4 m length, 2 cm thick Mesentery Folded surface 15 cm width Connects intestine with main vessels Model the complex anatomy Detect multiple selfcollisions Provide a stable collision response 57 Related Work
Realtime deformable models  Multiresolution models [Capell02, Debunne01, Grinspun02]  Softtissue models [Cotin00, James99, James02, Meseure00] Objects in isolation or interacting with a rigid tool => Different Situation Skeletal model for intestine [France02]  Chain of masses and springs  Implicit surface representation for smooth rendering  3D grids for selfcollision and collision with environment Not applicable for mesentery Hierarchical BV detection [Bradshaw02, Cohen95, Gottschalk96, van den
Bergen97]  Spheretrees, OBBs, AABBs, etc. Expensive tree updates for largescale deformation 58 References Realtime Simulation of SelfCollisions for Virtual Intestinal Surgery,
Raghupathi et al. (2003), IS4TM, France Rolf Lakaemper, Game Programming, Lecture Notes Others  later 59 ...
View
Full
Document
 Winter '09
 NorAini

Click to edit the document details