Collision Detection Part II

30
Graphics Lab Jong-In Choi 1 Collision Detection Part II David H. Eberly 3D Game Engine Design 2001. 10. 31

description

Collision Detection Part II. David H. Eberly 3D Game Engine Design 2001. 10. 31. Abstract (1/2). Dynamic Object-Object Intersection 물체가 이동한 궤적을 고려하여 검사 Oriented Bounding Box Trees OBB Tree 의 간략한 소개 Processing of Rotating and Moving Objects 회전하며 이동하는 물체의 충돌 검사. Abstract (2/2). - PowerPoint PPT Presentation

Transcript of Collision Detection Part II

Page 1: Collision Detection Part II

Graphics Lab Jong-In Choi 1

Collision DetectionPart II

David H. Eberly3D Game Engine Design

2001. 10. 31

Page 2: Collision Detection Part II

Graphics Lab Jong-In Choi 2

Abstract (1/2)

• Dynamic Object-Object Intersection– 물체가 이동한 궤적을 고려하여 검사

• Oriented Bounding Box Trees– OBB Tree 의 간략한 소개

• Processing of Rotating and Moving Objects– 회전하며 이동하는 물체의 충돌 검사

Page 3: Collision Detection Part II

Graphics Lab Jong-In Choi 3

Abstract (2/2)

• Constructing an OBB Tree– OBB Tree 를 만드는 방법

• A Simple Dynamic Collision Detection System– OBB Tree 를 이용한 충돌 검사 구현

Page 4: Collision Detection Part II

Graphics Lab Jong-In Choi 4

Dynamic Object-Object Intersection (1/2)

• 하나는 정지 , 다른 하나는 이동• 움직이는 물체는 상대 속도 (W) 를 가짐• 일정 시간동안 검색 [0, tmax]

이동이동 정지 w

이동

0 tmax

Page 5: Collision Detection Part II

Graphics Lab Jong-In Choi 5

Dynamic Object-Object Intersection (2/2)

• Spheres, Capsules, and Lozenges• Oriented Boxes• Oriented Boxes and Triangles• Triangles

Dynamic

Static

Sphere Capsule Lozenge

Sphere Dist(pnt, {pnt, seg}) Dist(pnt, {seg, pgm}) Dist(pnt, {rct, hex, ppd})

Capsule Dist(seg, {pnt, seg}) Dist(seg, {seg, pgm}) Dist(seg, {rct, hex, ppd})

Lozenge

Dist(rct, {pnt, seg}) Dist(rct, {seg, pgm}) Dist(rct, {rct, hex, ppd})

Page 6: Collision Detection Part II

Graphics Lab Jong-In Choi 6

Sphere

Point

Line Segment

Page 7: Collision Detection Part II

Graphics Lab Jong-In Choi 7

Capsule

Line Segment

Parallelogram

Page 8: Collision Detection Part II

Graphics Lab Jong-In Choi 8

Lozenge

Rectangle

Parallelepiped Hexagon

Page 9: Collision Detection Part II

Graphics Lab Jong-In Choi 9

Oriented Boxes (1/5)

• Finding the First Time of Intersection

D

R0

R1

LR

a1A1

a2A2

b1B1

b2B2

L: separating axis

ai: edge length of box A

Ai: axis normal of box A

bi: edge length of box B

Bi: axis normal of box BD: distance between boxes

Page 10: Collision Detection Part II

Graphics Lab Jong-In Choi 10

Oriented Boxes (2/5)

• Finding the First Time of Intersection

C(0)C(T)C(T)C(0)

R(T)R0

R1

R(0)

R (0)< R0 + R 1 , R (tmax)> R0 + R 1

Sign(L•D(0)) = Sign(L•D(tmax)) 충돌이 아님

L

D

Page 11: Collision Detection Part II

Graphics Lab Jong-In Choi 11

Oriented Boxes (3/5)

• Added separating sxis

Page 12: Collision Detection Part II

Graphics Lab Jong-In Choi 12

Oriented Boxes (4/5)

• Finding a Point of Intersection

2

0

2

0 iii

iii ByDAx

Page 13: Collision Detection Part II

Graphics Lab Jong-In Choi 13

Oriented Boxes (5/5)

• Finding a Point of Intersection

Page 14: Collision Detection Part II

Graphics Lab Jong-In Choi 14

Oriented Boxes and Triangles (1/8)

• Finding the First Time of Intersection

D

L

-R

a1A1a2A2

R

E1

E0p0

p1

p2

Min(ui) Max(ui)

L: separating axis

ai: edge length of box

Ai: axis normal of box

Ei: edge vector of triangle

pi: vertex of triangle

D: distance between boxes

Page 15: Collision Detection Part II

Graphics Lab Jong-In Choi 15

Oriented Boxes and Triangles (2/8)

• Finding the First Time of Intersection– Axis N

-R R p(0)p(T)p(T)p(0)

R > p(0) and R > p(T)-R < p(0) and -R > p(T) 충돌이 아님

Page 16: Collision Detection Part II

Graphics Lab Jong-In Choi 16

Oriented Boxes and Triangles (3/8)

• Finding the First Time of Intersection– Axis Ak

-R R p(0)p(T)p(T)p(0)

R > p(0) and R > p(T)-R < p(0) and -R > p(T) 충돌이 아님

Page 17: Collision Detection Part II

Graphics Lab Jong-In Choi 17

Oriented Boxes and Triangles (4/8)

• Finding the First Time of Intersection– Axis Ai X Ej

-R R p(0)p(T)p(T)p(0)

R > p(0) and R > p(T)-R < p(0) and -R > p(T) 충돌이 아님

Page 18: Collision Detection Part II

Graphics Lab Jong-In Choi 18

Oriented Boxes and Triangles (5/8)

• Finding a Point of Intersection1100

2

0

EyEyDAxi

ii

Page 19: Collision Detection Part II

Graphics Lab Jong-In Choi 19

Oriented Boxes and Triangles (6/8)

Page 20: Collision Detection Part II

Graphics Lab Jong-In Choi 20

Oriented Boxes and Triangles (7/8)

Page 21: Collision Detection Part II

Graphics Lab Jong-In Choi 21

Oriented Boxes and Triangles (8/8)

Page 22: Collision Detection Part II

Graphics Lab Jong-In Choi 22

Triangles (1/4)

• Finding the First Time of Intersection

LMin(vi)

D

E0

E1 F1

F0

Max(vi)

Min(ui)

Max(ui)

p0

p1

p2 q0q1

q2

L: separating axis

Ei: edge vector of triangle1pi: vertex of triangle1

Ei: edge vector of triangle1pi: vertex of triangle1

D: distance between boxes

Page 23: Collision Detection Part II

Graphics Lab Jong-In Choi 23

Triangles (2/4)

• Finding the First Time of Intersection– Axis N or M

p(0)p(T)p(T)p(0)

Page 24: Collision Detection Part II

Graphics Lab Jong-In Choi 24

Triangles (3/4)

• Finding the First Time of Intersection– Axis E X F

p(0)p(T)p(T)p(0)

Page 25: Collision Detection Part II

Graphics Lab Jong-In Choi 25

Triangles (4/4)

• Finding a Point of Intersection

1100

1100

FyFyD

ExEx

Page 26: Collision Detection Part II

Graphics Lab Jong-In Choi 26

Oriented Bounding Box Trees• Gottchalk, Lin, and Manocha 1996• 충돌 검사의 계층적인 방법을 제시• 동적인 물체에 확장 적용 가능

Page 27: Collision Detection Part II

Graphics Lab Jong-In Choi 27

Processing of Rotatingand Moving Objects

• 일정 시간 간격마다 충돌 검사– Equations of Motion– Closed-Form Algorithm– Algorithm Based on a Numerical

Ordinary Differential Equation Solver

Page 28: Collision Detection Part II

Graphics Lab Jong-In Choi 28

Constructing an OBB Tree (1/2)

• Subdivision rule– Splitting longest axis of a box– Partitioning the polygons according to

center point lies on

Recursively partitionThe Bounded polygons

Page 29: Collision Detection Part II

Graphics Lab Jong-In Choi 29

Constructing an OBB Tree (2/2)

• Example– Teapot, Torus

Level 0 Level 2

Level 4 Level 6

Page 30: Collision Detection Part II

Graphics Lab Jong-In Choi 30

A Simple Dynamic Collision Detection System

• Testing for Collision– Tree 를 반복적으로 검색

• Root leaf: 하향식 검색 • Finding Collision Detection

– OBB & OBB– OBB & Triangle– Triangle & Triangle