Presentation is loading. Please wait.

Presentation is loading. Please wait.

Collision handling: detection and response

Similar presentations


Presentation on theme: "Collision handling: detection and response"— Presentation transcript:

1 Collision handling: detection and response
CSE 3541 Matt Boggus

2 Collision handling overview
Point collision detection Line segment and ray collision detection Polyhedron-polyhedron collision detection Bounding volume test Vertex inside polyhedron test Concave case Convex case Edge-face intersection test detection Kinematic response Penalty method response

3 Geometric modeling primitives
Point Line segment Polygon

4 Terminology – convex and concave polygons

5 Convex and concave – line test
For any two points within a polygon, the line segment they form is contained within the polygon if it is convex, otherwise it is concave.

6 Convex and concave – interior angles

7 Polygon triangulation split into a set of convex polygons

8 Types of equations Explicit y = f(x) Implicit f(x,y) = 0
Ex: y = mx + b Implicit f(x,y) = 0 Ex: x2 + y2 – 1 = 0 Given values for (x,y), say x = a and y = b, compute f(a,b) = c c > 0, then (a,b) is “outside” shape f c = 0, then (a,b) is on the boundary/surface of shape f c < 0, then (a,b) is “inside” shape f Parametric form (x,y) = (f(u),g(u)) Ex: x = f(t) = r cos (t) , y = g(t) = r sin (t) Given any value for t parameter, compute a point (x,y) Implicit – good for intersection tests and morphing Parametric – good for generating points and polygons

9 Parametric line equation
P(t) = P0 + t V P0 is point on line V is direction (or slope) of line On line segment with P1, t ranges from (0,1) x = P0.x + t * (P1 – P0).x y = P0.y + t * (P1 – P0).y

10 Point on a line segment Given (x,y), is it on a line segment (P1 to P0)? x = P0.x + tx * (P1 – P0).x y = P0.y + ty * (P1 – P0).y Plug in x, y, P0, P1, solve for tx and ty On the segment if 0 ≤ tx = ty ≤ 1

11 Examples P0 = (0,0) P1 = (1,1) P = (0.5, 0.5) P = (-1, -1) P = (2, 2)
Examples drawn on board

12 Line intersection – two equations
Pa = P0 + ta (P1 – P0) Pb = P2 + tb (P3 – P2) Set them equal, solve for ta and tb Note that these are vector equations, not scalars Line segment intersection if 0 <= ta <= 1, and 0 <= tb <= 1

13 Line intersection – visual example
Example drawn on board

14 Point in polygon – ray test

15 Ray test special cases

16 Point in convex polygon
(y - y0) (x1 - x0) - (x - x0) (y1 - y0) > 0, point is to the left of the line < 0, point is to the right of the line = 0, point is on the line

17 Point in convex polygon
(y - y0) (x1 - x0) - (x - x0) (y1 - y0) For (3,1): (1)(5) – (3)(0) = 5 For (3,0): (0)(5) – (3)(0) = 0 For (3,-1): (-1)(5) – (3)(0) = -5

18 Polygon Intersection Contained vertex Intersecting edges

19 Polygon intersection – vertex + edges

20 Collision detection: point-ground plane
p = (x, y, z)

21 Surface/Polygon normals
Images from

22 Collision detection: point-plane
p = (x, y, z) N = (a, b, c) N Terms: p = point N = normal vector D = distance from origin

23 Collision detection: time of impact
P(ti) P(ti+1) 2 options Consider collision at next time step Compute fractional time at which collision actually occurred Tradeoff: accuracy v. complexity

24 3D object collision detection

25 Collision detection: polyhedra
Order tests according to computational complexity and power of detection 1. test bounding volumes for overlap 2. test for vertex of one object inside of other object 3. test for edge of one object intersecting face of other object

26 Polygon and polyhedra complexity
How many edges? How many points?

27 Bounding objects Sphere Axis aligned bounding box
Oriented bounding box

28 Bounding volume construction
Given a set of points as input, can we automatically create bounding volumes Axis aligned bounding box Sphere Convex hull

29 Axis aligned bounding box

30 Axis aligned bounding box
Loop over all vertices to find min and max x and y coordinates, these define the min and max planes of the box

31 Bounding sphere

32 Bounding sphere

33 Bounding sphere

34 Bounding sphere Determine sphere center – use the midpoint of maximally separated pair OR the centroid (average x, average y, average z) May also choose to set initial radius Loop over all points, altering the sphere to fit the each point

35 Convex Hull Best fit convex polyhedron to concave polyhedron but takes some (one-time) computation Find highest vertex, V1 Find remaining vertex that minimizes angle with horizontal plane through point. Call edge L Form plane with this edge and horizontal line perpendicular to L at V1 Find remaining vertex that for triangle that minimizes angle with this plane. Add this triangle to convex hull, mark edges as unmatched For each unmatched edge, find remaining vertex that minimizes angle with the plane of the edge’s triangle

36 Convex hull

37 Convex hull

38 Convex hull

39 Convex hull

40 Convex hull

41 Convex hull

42 Convex hull

43 Bounding Slabs For better fit bounding polyhedron: use arbitrary (user-specified) collection of bounding plane-pairs Is a vertex between each pair?

44 Sphere vs. Sphere Compare distance (p1,p2) to r1+r2

45 AABB vs. AABB

46 AABB vs. AABB

47 Oriented bounding boxes and arbitrary polygons
Separating axis theorem

48 Sphere vs. AABB

49 Sphere vs. AABB – clamping

50 Sphere vs. AABB – closest point

51 Collision detection: swept volume
Time & relative direction of travel sweeps out a volume Only tractable in simple cases (e.g. linear translation) If part of an object is in the volume, it was intersected by object

52 Collision detection: polyhedra
1. test bounding volumes for overlap 2. test for vertex of one object inside of other object 3. test for edge of one object intersecting face of other object Now consider #2 and #3

53 Collision detection: polyhedra
Intersection = NO For each vertex, V, of object A if (V is inside of B) intersection = YES For each vertex, V, of object B if (V is inside of A) intersection = YES A vertex is inside a convex polyhedron if it’s on the ‘inside’ side of all faces A vertex is inside a cancave polyhedron if a semi-infinite ray from the vertex intersects an odd number of faces

54 Collision detection: polyhedra
Edge intersection face test Finds all polyhedral intersections, but is the most expensive test: for all faces (i) for all edges (j) test face i for intersection with edge j Set plane equation equal to line equation (this generates a point) Test point to determine if it is inside the polygon face If vertices of edges are on opposite side of plane of face Calculate intersection of edge with plane Determine if that point of intersection is inside the face

55 Collision detection speedup

56 Particle collision detection loop
ArrayList Particles = new ArrayList(); Particle p; Particles.Add(p); void HandleAllParticleCollisions(){ for(int i=0; i < Particles.Count; i++){ for(int j ) { // test Particles i and j for collision } =i+1 j < Particles.Count; j++

57 Collision detection speedup
Two approaches Bound the object Bound the space the object is contained in

58 Hierarchical bounding volumes
Tree of bounding volumes Approximating polyhedra with spheres for time-critical collision detection, by Philip M. Hubbard

59 HBV example

60 HBV example

61 HBV example Only test branches in the tree where there were collisions
If a leaf bounding volume intersects, then the two objects intersect

62 Spatial subdivision – grid (quadtrees and octrees)
Each grid cell has a list of objects in it (objects may be in multiple grid cells) Iterate over grid cells, checking for collisions between all objects in the current grid cell and those of its neighbors

63 Spatial subdivision – binary space partitioning
Instead of regularly sampling space, divide it with planes

64 Collision response

65 Collisions: physics review
Momentum In a closed system, momentum is conserved After a collision, the sum of all momentums is the same as the sum of all momentum before the collision

66 Collision types Inelastic collisions – loss of kinetic energy
Elastic collisions – no loss of kinetic energy (e.g. deformations, heat) Inelastic collisions – loss of kinetic energy Kinetic energy

67 Elastic collision with stationary object: horizontal and vertical walls/planes
For vertical wall/boundary Negate x component of velocity Preserve y component of velocity Ex: v0 = (3,-3) ; v = (-3,-3) For horizontal walls/boundaries Preserve x Negate y

68 Elastic collision with stationary object: angled walls/planes
Still split velocity vector into components Now with respect to the normal (n) of the wall u = (v * n / n * n) n Note: * is dot product Vector/direction is parallel to n Scalar/magnitude is in opposite direction of n; (v * n) < 0 w = v – u Reflected velocity: v’ = w – u For more on this topic, check out:

69 Elastic collision with movable object
Determine separating plane/line Split momentum into components parallel and orthogonal to plane/line Set object momentum using components More details and examples at:

70 Inelastic Collisions Coefficient of restitution
ratio of velocities before and after collision (dampen the resulting velocity) Objects stick together, momentum is conserved

71 Collision response: damped
Damping factor = 0.8

72 Collision response – penalty method

73 Collision response: penalty

74 Additional issues Adding physics for rotation
Handling multiple collisions Resting contact


Download ppt "Collision handling: detection and response"

Similar presentations


Ads by Google