Collision handling: detection and response CSE 3541 Matt Boggus.

74
Collision handling: detection and response CSE 3541 Matt Boggus

Transcript of Collision handling: detection and response CSE 3541 Matt Boggus.

Page 1: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision handling:detection and response

CSE 3541Matt Boggus

Page 2: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision handling overview

Point collision detectionLine segment and ray collision detectionPolyhedron-polyhedron collision detection

Bounding volume testVertex inside polyhedron test

Concave caseConvex case

Edge-face intersection test

Kinematic response

Penalty method

detection

response

Page 3: Collision handling: detection and response CSE 3541 Matt Boggus.

Geometric modeling primitives

• Point

• Line segment

• Polygon

Page 4: Collision handling: detection and response CSE 3541 Matt Boggus.

Terminology – convex and concave polygons

Page 5: Collision handling: detection and response CSE 3541 Matt Boggus.

Convex and concave – line test

Page 6: Collision handling: detection and response CSE 3541 Matt Boggus.

Convex and concave – interior angles

Page 7: Collision handling: detection and response CSE 3541 Matt Boggus.

Polygon triangulationsplit into a set of convex polygons

Page 8: Collision handling: detection and response CSE 3541 Matt Boggus.

Types of equations

• Explicit y = f(x)– 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)

Page 9: Collision handling: detection and response CSE 3541 Matt Boggus.

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

Page 10: Collision handling: detection and response CSE 3541 Matt Boggus.

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

Page 11: Collision handling: detection and response CSE 3541 Matt Boggus.

Examples

• P0 = (0,0)

• P1 = (1,1)

• P = (0.5, 0.5)• P = (-1, -1)• P = (2, 2)• P = (5, 0)

Page 12: Collision handling: detection and response CSE 3541 Matt Boggus.

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

Page 13: Collision handling: detection and response CSE 3541 Matt Boggus.

Line intersection – visual example

Page 14: Collision handling: detection and response CSE 3541 Matt Boggus.

Point in polygon – ray test

Page 15: Collision handling: detection and response CSE 3541 Matt Boggus.

Ray test special cases

Page 16: Collision handling: detection and response CSE 3541 Matt Boggus.

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

Page 17: Collision handling: detection and response CSE 3541 Matt Boggus.

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

Page 18: Collision handling: detection and response CSE 3541 Matt Boggus.

Polygon Intersection

Contained vertex Intersecting edges

Page 19: Collision handling: detection and response CSE 3541 Matt Boggus.

Polygon intersection – vertex + edges

Page 20: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision detection: point-ground plane

0y

0y

0y

p = (x, y, z)

Page 21: Collision handling: detection and response CSE 3541 Matt Boggus.

Surface/Polygon normals

Images from http://en.wikipedia.org/wiki/Normal_(geometry)

Page 22: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision detection: point-plane

dpNdczbyaxpE )(

0)( pE

0)( pE

0)( pEN

N = (a, b, c)

p = (x, y, z)

Terms:p = pointN = normal vectorD = distance from origin

Page 23: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision detection: time of impact

2 optionsConsider collision at next time stepCompute fractional time at which collision actually occurred

Tradeoff: accuracy v. complexity

P(ti)

P(ti+1)

Page 24: Collision handling: detection and response CSE 3541 Matt Boggus.

3D object collision detection

Page 25: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision detection: polyhedra

• Order tests according to computational complexity and power of detection

2. test for vertex of one object inside of other object

1. test bounding volumes for overlap

3. test for edge of one object intersecting face of other object

Page 26: Collision handling: detection and response CSE 3541 Matt Boggus.

Polygon and polyhedra complexity

How many edges? How many points?

Page 27: Collision handling: detection and response CSE 3541 Matt Boggus.

Bounding objects

• Sphere

• Axis aligned bounding box

• Oriented bounding box

Page 28: Collision handling: detection and response CSE 3541 Matt Boggus.

Bounding volume construction

• Given a set of points as input, can we automatically create bounding volumes

– Axis aligned bounding box

– Sphere

– Convex hull

Page 29: Collision handling: detection and response CSE 3541 Matt Boggus.

Axis aligned bounding box

Page 30: Collision handling: detection and response CSE 3541 Matt Boggus.

Axis aligned bounding box

Page 31: Collision handling: detection and response CSE 3541 Matt Boggus.

Bounding sphere

Page 32: Collision handling: detection and response CSE 3541 Matt Boggus.

Bounding sphere

Page 33: Collision handling: detection and response CSE 3541 Matt Boggus.

Bounding sphere

Page 34: Collision handling: detection and response CSE 3541 Matt Boggus.

Bounding sphere

Page 35: Collision handling: detection and response CSE 3541 Matt Boggus.

Convex HullBest fit convex polyhedron to concave polyhedron but takes some (one-time) computation

1. Find highest vertex, V12. Find remaining vertex that minimizes angle

with horizontal plane through point. Call edge L3. Form plane with this edge and horizontal line

perpendicular to L at V14. Find remaining vertex that for triangle that

minimizes angle with this plane. Add this triangle to convex hull, mark edges as unmatched

5. For each unmatched edge, find remaining vertex that minimizes angle with the plane of the edge’s triangle

Page 36: Collision handling: detection and response CSE 3541 Matt Boggus.

Convex hull

Page 37: Collision handling: detection and response CSE 3541 Matt Boggus.

Convex hull

Page 38: Collision handling: detection and response CSE 3541 Matt Boggus.

Convex hull

Page 39: Collision handling: detection and response CSE 3541 Matt Boggus.

Convex hull

Page 40: Collision handling: detection and response CSE 3541 Matt Boggus.

Convex hull

Page 41: Collision handling: detection and response CSE 3541 Matt Boggus.

Convex hull

Page 42: Collision handling: detection and response CSE 3541 Matt Boggus.

Convex hull

Page 43: Collision handling: detection and response CSE 3541 Matt Boggus.

Bounding SlabsFor better fit bounding polyhedron: use arbitrary (user-specified) collection of bounding plane-pairs

Is a vertex between each pair?

12 dPNd

Page 44: Collision handling: detection and response CSE 3541 Matt Boggus.

Sphere vs. Sphere

Compare distance (p1,p2) to r1+r2

distance(p1,p2)2 to (r1 + r2)2

Page 45: Collision handling: detection and response CSE 3541 Matt Boggus.

AABB vs. AABB

Page 46: Collision handling: detection and response CSE 3541 Matt Boggus.

AABB vs. AABB

Page 48: Collision handling: detection and response CSE 3541 Matt Boggus.

Sphere vs. AABB

Page 49: Collision handling: detection and response CSE 3541 Matt Boggus.

Sphere vs. AABB – clamping

Page 50: Collision handling: detection and response CSE 3541 Matt Boggus.

Sphere vs. AABB – closest point

Page 51: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision detection: swept volumeTime & relative direction of travel sweeps out a volumeOnly tractable in simple cases (e.g. linear translation)

If part of an object is in the volume, it was intersected by object

Page 52: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision detection: polyhedra

2. test for vertex of one object inside of other object

1. test bounding volumes for overlap

3. test for edge of one object intersecting face of other object

Page 53: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision detection: polyhedra

Intersection = NOFor each vertex, V, of object A

if (V is inside of B) intersection = YESFor 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

Page 54: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision detection: polyhedra

Edge intersection face testFinds 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

If vertices of edges are on opposite side of plane of faceCalculate intersection of edge with planeDetermine if that point of intersection is inside the face

Page 55: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision detection speedup

Page 56: Collision handling: detection and response CSE 3541 Matt Boggus.

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++

Page 57: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision detection speedup

• Two approaches

– Bound the object

– Bound the space the object is contained in

Page 58: Collision handling: detection and response CSE 3541 Matt Boggus.

Hierarchical bounding volumes

Approximating polyhedra with spheres for time-critical collision detection, by Philip M. Hubbard

Page 59: Collision handling: detection and response CSE 3541 Matt Boggus.

HBV example

Page 60: Collision handling: detection and response CSE 3541 Matt Boggus.

HBV example

Page 61: Collision handling: detection and response CSE 3541 Matt Boggus.

HBV example

Page 62: Collision handling: detection and response CSE 3541 Matt Boggus.

Spatial subdivision – grid (quadtrees and octrees)

Page 63: Collision handling: detection and response CSE 3541 Matt Boggus.

Spatial subdivision – binary space partitioning

Page 64: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision response

Page 65: Collision handling: detection and response CSE 3541 Matt Boggus.

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

mvp

''vmmvp

Page 66: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision typesElastic collisions – no loss of kinetic energy (e.g. deformations, heat)

Inelastic collisions – loss of kinetic energy

2

2

1mvE Kinetic energy

Page 67: Collision handling: detection and response CSE 3541 Matt Boggus.

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

Page 68: Collision handling: detection and response CSE 3541 Matt Boggus.

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

Page 69: Collision handling: detection and response CSE 3541 Matt Boggus.

Elastic collision with movable object

Page 70: Collision handling: detection and response CSE 3541 Matt Boggus.

Inelastic Collisions

Objects stick together,momentum is conserved

Coefficient of restitution ratio of velocities before and after collision (dampen the resulting velocity)

Page 71: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision response: damped

Damping factor = 0.8

Page 72: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision response – penalty method

Page 73: Collision handling: detection and response CSE 3541 Matt Boggus.

Collision response: penalty

Page 74: Collision handling: detection and response CSE 3541 Matt Boggus.

Additional issues

• Adding physics for rotation• Handling multiple collisions

• Resting contact