+ All Categories
Home > Documents > 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9....

교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9....

Date post: 24-Mar-2021
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
15
1 교차 검사 방법들 Information Security Laboratory Kim Dong Ok 2 Content 13.11 삼각형/박스 교차 13.12 BV/BV 검사 13.12.1 구/구 교차 13.12.2 구/박스 교차 13.12.3 AABB/AABB 교차 13.12.4 k-DOP/k-DOP 교차 13.12.5 OBB/OBB 교차 13.13 시각 절두체 교차 13.13.1 시각 절두체/구 교차 13.13.2 시각 절두체/원통 교차 13.13.3 시각 절두체/박스 교차
Transcript
Page 1: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

1

교차 검사 방법들

Information Security LaboratoryKim Dong Ok

2

Content

13.11 삼각형/박스 교차

13.12 BV/BV 검사13.12.1 구/구 교차

13.12.2 구/박스 교차

13.12.3 AABB/AABB 교차

13.12.4 k-DOP/k-DOP 교차

13.12.5 OBB/OBB 교차

13.13 시각 절두체 교차13.13.1 시각 절두체/구 교차

13.13.2 시각 절두체/원통 교차

13.13.3 시각 절두체/박스 교차

Page 2: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

3

13.11 삼각형/박스 교차

삼각형의 변들이 좌표축에 평행한 박스(AABB)와 겹치는지 여부를알아내는 알고리즘을 설명

공간이 박스들로 꽉 차 있다고 생각

삼각형이 현재 차지하는 위치를 알아냄.

정규 뷰 볼륨(canonical view volume)과 다각형의 충돌 검출절단이나 조명 루틴을 부르지 않도록 하게 하는 데 쓰임.

4

13.11 삼각형/박스 교차

SAT(Separating Axis Theorem)에 따라 다음 13개의 축에 대해서검사한다.

1. [3개의 검사] e1 = (1, 0, 0), e1 = (0, 1, 0), e2(0, 0, 1)(AABB의 법선벡터). 다시 말하면, AABB를 삼각형을 둘러싼 최소 AABB와 검사.

2. [1개의 검사] n, 삼각형 Δu0u1u2의 법선 벡터. 평면/AABB 교차 검사를사용.

박스의 대각선 중 삼각형의 법선 벡터와 가장 평행한 대각선의 양 끝 점만검사.

3. [9개의 검사] aij = ei × fj, i,j ∈ {0, 1, 2}, f0 = v1 – v0, f1 = v2 – v1, f2= v0 – v2, 즉 f는 변을 나타내는 벡터.

separating axis를 찾자마자 알고리즘은 종료.겹치지 않는다고 판다.

모든 검사를 통과하면(separating axis가 없으면) 삼각형이 박스와 겹치는 것.

Page 3: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

5

13.11 삼각형/박스 교차

세번째 단계의 아홉 가지 검사 중 i = 0, j = 0인 경우a00 = e0 × f0 = (0, -f0z, f0y)이다.

삼각형을 a00로 투영해야 한다.

p0, p1, p2 중 최소•최대값을 찾음.p0와 p1이 같으므로 계산이 간단.

삼각형을 a로 투영한 후에는 박스를 a로 투영.투영된 박스의 “반지름” r을 다음과 같이 구한다.

이 축에 대한 최종 검사.

yzzzyyyz

zyyzyz

zyyzyz

)v - v - (v)v - v(vffp

p v - vvvffp

v - vvvffp

20120120022

0101010011

101000000

) ,- (0,

) ,- (0,

) ,- (0,

=•=•=

==•=•=

=•=•=

vva

vva

vva

<식 13.31>

||a h| |a h| |a h| |a h| |a hr zzyyzzyyxx +=++= <식 13.32>

false;return ) )20max(or )20(min( if -r, ppr, pp <> <식 13.33>

6

13.12 BV/BV 검사

경계 공간(Bounding Volume)어떤 집합의 물체들을 둘러싸는 닫힌 공간.

보다 간단한 교차 검사를 제공.

보다 효율적인 배제를 가능하게 하는 것.

계층적 경계 공간충돌 검출 알고리즘의 기본.

주로 사용되는 4가지 경계 공간구, AABB, k-DOP, OBB

가장 기본적인 연산두 개의 경계 공간이 충돌하는지 여부를 알아내는 것.

Page 4: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

7

13.12.1 구/구 교차

구의 교차 검사 방법은 간단하고 빠르다.구의 중심간의 거리를 계산

이 값이 두 반지름의 합보다 크면 교차하지 않는다.

그렇지 않으면 교차한다.

구현할 대 실제 거리나 반지름의 길이의 합보다는 이들의 제곱을 사용.

제곱근 연산을 피할 수 있다.

8

13.12.2 구/박스 교차

Arvo가 제안한 구와 AABB간의 교차 검사를 하는 매우 간단한 알고리즘.

AABB의 점들 중 구의 중심에 가장 가까운 점을 찾는 것이 아이디어.

AABB의 각축에 대해서 1차원 검사를 한다.

각 축에 대해서 구의 중심의 좌표 중 검사되는 축 좌표가 박스의 검사되는 축의 양 끝점 내부에 있는지 검사.

만약에 바깥에 있다면 구의 중심과 박스까지의 거리의 제곱을 계산.

이를 세 축에 대해서 반복한 후 세 거리의 합과 구의 반지름의 제곱을비교.

이 합이 반지름의 제곱보다 작으면 가장 가까운 점이 구 내부에 있게되고, 구와 박스는 겹친다.

이 알고리즘을 수정하면 빈 박스와 구와의 교차 검사나 축에 정렬된타원형과의 교차 검사에도 사용할 수 있음.

Page 5: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

9

13.12.2 구/박스 교차

10

13.12.3 AABB/AABB 교차

AABB는 각 면들이 좌표 평면과 평행하다.두 점을 가지고 정의할 수 있다.

AABB는 간단하기 때문에 충돌 검출이나 장면 그래프의 노드의 경계공간으로 많이 사용.

Page 6: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

11

13.12.4 k-DOP/k-DOP 교차

이산 방향 다면체(discrete orientation polytope) 또는 k-DOPKlosowski가 명명.

볼록한 다면체로 고정된 k개의 법선 벡터들에 의해서 결정.

법선 벡터들에 의해서 정의되는 평면들의 바깥쪽은 k-DOP의 바깥쪽.

교차 검사는 k/2번의 구간 교차 검사로 이루어지게 된다.

크지 않은 k에 대해서 두 k-DOP의 교차 검사가 OBB간의 교차 검사보다 10배 이상 빠르다.

AABB도 법선 벡터가 좌표축들의 양/음 방향인 6-DOP이다.

k가 커질수록 최소 볼록 집합을 닮아간다.

최소 볼록 집합은 가장 잘 맞는 볼록 경계 공간이다.

두 k-DOP A, B의 교차 여부 검사모든 slab에 대해서 교차 검사를 한다.

1차원 검사로 쉽게 할 수 있다.

어느 slab이라도 교차하지 않으면 경계 공간이 교차하지 않는 것으로검사는 종료.

12

13.12.4 k-DOP/k-DOP 교차

만약 모든 slab이 교차하면 교차한다고 판다.

각 k-DOP는 k개의 스칼라값으로 정의하는 것에 유의.

만약 두 k-DOP가 각각 tA, tB만큼 이동했다면tA를 법선 벡터에 투영한 결과 pi

A = tA •ni를 계산

diA, min과 di

A, max에 더한다.

tB에 대해서도 같은 작업을 해주어야 한다.

Page 7: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

13

13.12.5 OBB/OBB 교차

두 OBB A와 B가 겹치는지 검사하는 빠른 방법SAT를 이용.

가장 가까운 점들을 사용하는 방법이나 선형 프로그래밍 방법에 비해서 10배 이상 빠르다.

A의 중심과 축들로 이루어진 좌표 공간상에서 검사가 이루어짐.원점이 A의 중심이고, x, y, z축이 A의 축들 au, av, aw와 일치하는 공간.

B의 위치는 좌표 공간상에서 이동 t와 회전 행렬 R로 표현.

SAT에 의하면, A와 B가 서로 겹치지 않는다는 것을 알기 위해서는 A와 B를 구분할 수 있는 축을 찾으면 충분.

이를 위해 15개의 축을 검사.A의 면들로부터 3개, B의 면들로부터 3개, A와 B의 변들의 조합인 3 × 3 = 9개.

A = (au av aw)가 서로 수직이고, 크기가 1이기 때문에 A의 면들에 수직이어야 하는 A와 B의 구분 후보축들은 au, av, aw이다.

B에 대해서도 마찬가지이다.

A와 B의 변들로부터 생성되는 9개의 축들.i, j가 {u, v, w}에 속할 때 cij = ai × bj, ∀i∈{u, v, w}와 ∀j∈{u, v, w} 이다.

14

13.12.5 OBB/OBB 교차

Page 8: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

15

13.12.5 OBB/OBB 교차

•=

•=

(u, v, w)i

iBiB

u, v, wi

iAiA

hd

hd

| |

|| )(

lb

la<식 13.34>

16

13.12.5 OBB/OBB 교차

l상의 구간들이 서로 겹치지 않는 것은 l이 구분하는 축이라는 필요 충분 조건이다. 즉 다음 부등식이 성립해야 한다.

A의 변, B의 변, A와 B의 변의 조합의 세 경우에 대한 <식 13.35>의유도 과정

l = au

마지막 등식은 A의 좌표계, 즉 au = (1 0 0)T인 좌표계상에서 생각하기 때문에 성립한다.

BA d d +>• | | lt <식 13.35>

|| | | | | xu t=•=• atlt <식 13.36>

||r h| |r h| |rh

||b h| |b h| |bh

hhd

hhhd

Bw

Bv

Bu

wx

Bw

vx

Bv

ux

Bu

wvui wvui

uiBi

iBiB

wvui wvui

Au

uiAi

iAiA

020100

},,{ },,{

},,{ },,{

| | | |

| | | |

++=

++=

•=•=

=•=•=

∑ ∑

∑ ∑

∈ ∈

∈ ∈

ablb

aala

<식 13.37>

Page 9: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

17

13.12.5 OBB/OBB 교차

dA를 구하는 식에서 마지막 등식은 A가 정규 직교이기 때문에 성립.

dB를 구하는 마지막 등식에서는 r00 등은 다음 행렬 R의 구성요소.

축 l = au에서의 검사는 다음과 같다.

이 부등식이 성립하면 A와 B는 겹치지 않는다.

l = aw나 l = av

)(

222120

121110

020100wvu

rrr

rrr

rrr

bbbR =⎥⎥⎥

⎢⎢⎢

⎡=

<식 13.38>

|| || || || 020100 rhrhrhht Bw

Bv

Bu

Aux +++> <식 13.39>

18

13.12.5 OBB/OBB 교차

l = bu

이들을 가지고 l = bu에 대한 비교차 검사를 <식 13.41>과 같이 구할 수있다.

∑ ∑

∑ ∑

∈ ∈

∈ ∈

=•=•=

++=++=

•=•=

++=++=•=•

},,{ },,{

201000

},,{ },,{

201000

| | | |

| | | |

| | | | |

wvui wvui

Bu

uiBi

iBiB

Aw

Av

Au

uz

Aw

uy

Av

ux

Au

wvui wvui

uiAi

iAiA

zyxu

zzu

yyu

xxu

hhhd

||r h| |r h| |r h| |b h| |b h| |bh

hhd

|r t r t r |t| b t b t bt

bblb

bala

btlt

<식 13.40>

Bu

Aw

Av

Auzyx h| |r h| |r h| |r h| r t r t r|t +++>++ 201000201000 <식 13.41>

Page 10: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

19

13.12.5 OBB/OBB 교차

두 OBB의 변들의 조합으로 만든 축이 separating axis가 될 수 있다.

예를 들면 l = au × bu가 separating axis인지 검사해보아야 한다.

||r h| |r h| |b h| |bh

hhh

hhd

||r h| |r h| |b h| |bh

hhh

hhd

|r - tr |t| b - tbt

)|, b, -b(

Bw

Bu

ux

Bw

wx

Bu

uuBw

wuBu

viuBi

vuiBi

iBiB

Aw

Av

vy

Aw

vz

Av

vvAw

wvAv

iuvAi

vuiAi

iAiA

yzv

yv

yz

vy

vz

vu

z

0002

1121

2111

| | | | |) ( |

|) ( | | |

| | | | |) ( |

|) ( | | |

|

0 | |) ( | | |

+=+=

•+•=ו=

ו=•=

+=+=

•+•=ו=

ו=•=

==

•=ו=•

∑ ∑

∑ ∑

bababba

bablb

ababaab

baala

tbatlt

<식 13.42>

20

13.12.5 OBB/OBB 교차

결과적으로, 교차 검사는 다음과 같다.

cij = ai × bi, ∀i ∈ {u, v, w}와 ∀j ∈ {u, v, w}의 형태로 주어지는 나머지 축들에 대한 비교차 검사도 비슷한 방법으로 구할 수 있다.

이러한 15개의 검사 중 하나라도 긍정적인 결과가 나온다면 OBB들은교차하지 않는다.

두 OBB가 겹치는 경우 교차 검사를 위한 연산의 수가 많아짐.대부분 검사 하기 전에 separating axis를 찾아서 알고리즘을 종료.

au, av, aw에 대한 교차 검사를 먼저 하는 것이 좋다.서로 수직이고, 가장 간단한 검사이기 때문.

OBB/OBB 교차 검사 전에 빠른 배제 검사를 해주는 것이 좋을 수 있다.

OBB를 둘러싸는 구는 OBB의 중심을 중심으로 하고, OBB의 변의 길이의반인 hu, hv, hw들로부터 계산한 반지름을 가진다.

충돌이 일어나지 않는 경우 이들 구를 이용한 구/구 교차 검사로 복잡한계산을 피할 수 있다.

||r h| |r h| |r h| |r h| r - tr|t Bw

Bu

Aw

Avyz 000211212111 +++> <식 13.43>

Page 11: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

21

13.13 시각 절두체 교차

계층적 시각 절두체 배제는 장면 그래프의 빠른 랜더링을 위해서필수적.

시각 절두체피라미드 모양의 4각 뿔을 near 평면과 far 평면으로 자른 모양으로유한한 영역을 가지게 된다.

하나의 다면체 이다.

장면 중 보여야 하는 부분을 정의한다.

22

13.13 시각 절두체 교차

Page 12: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

23

13.13 시각 절두체 교차

시각 절두체 사이 또는 시각 절두체와 일반적인 물체와의 교차 검사

BV/시각 절두체 문제를 점/공간 교차 검사문제로 변형하여 해결.BV에 상대적인 점 하나를 선택

BV를 시각 절두체와 겹치지 않도록 하면서 시각 절두체에 붙여서 움직임.

처음에 선택한 점이 움직인 자취가 새로운 공간을 형성.

BV를 시각 절두체에 붙여서 움직이기 때문에 BV에 상대적인 점이 새로운공간 내부에 속하게 되면 BV는 시각 절두체와 겹치거나, 시각절두체 내부에 있게 된다.

BV를 시각 절두체의 경계에 붙여서 시각 절두체 안쪽에서 움직이게 할 수있다.

원래 시각 절두체의 평면들과 평행한 평면들을 가지는 새로운 작은 시각절두체가 생긴다.

BV에 상대적인 점이 이 시각 절두체 내부에 속하면 BV는 원래 식ㄱ 절두체의 내부에 있다.

새로운 공간은 BV의 실제 위치와 상관 없다.

24

13.13.1 시각 절두체/구 교차

구의 반지름의 길이가 r이라 할 때시각 절두체에 붙어서 경계 안쪽과 바깥쪽을 움직여서 공간을 생성

점이 짙은 회색 부분 밖에 있으면 구는 시각 절두체 바깥에 있다.

점이 짙은 회색부분 안에 있으면 구는 시각 절두체 내부에 있다.

효율성을 위해서 근사화를 할 수도 있다.짙은 회색 영역이 확장해서 복잡한 계산이 필요한 둥근 구석을 없앤다.

Page 13: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

25

13.13.1 시각 절두체/구 교차

시각 절두체를 구성하는 평면들의 방정식에서 평면의 법선 벡터가시각 절두체의 바깥쪽을 향하고 있다고 가정.

시각 절두체의 6개의 면들에 대해 구의 중심점 까지의 거리를 구하는것으로 검사를 구현할 수 있다.

구의 중심과 평면 사이의 거리는 구의 중심의 좌표값들을 평면의 방정식에 대입함으로써 구할 수 있다.

어느 한 평면이라도 구의 중심까지의 거리가 r보다 크다면구는 시각 절두체와 만나지 않는다.

모든 평면들에 대해서 구의 중심점까지의 거리가 –r보다 작다면구는 시각 절두체 내부에 있다.

나머지 경우에는 구와 시각 절두체가 겹친다.

대부분의 시각 절두체는 시선 방향에 대해서 대칭적이다.왼쪽 평면은 오른쪽 평면을 시선 방향에 대해서 대칭 이동하면 구할 수 있다.

아래 평면과 위 평면에 대해서도 성립.

26

13.13.1 시각 절두체/구 교차

8분 공간(octant) 검사 방법대칭적인 시각 절두체에서 교차 검사하는 평면의 개수를 줄이기 위해서 사용.

Octree와 같이 시각절두체를 8개의 8분 공간으로 나눈다.

구의 중심이 들어 있는 공간에 속하는 세 개의 평면들에 대해서만 검사 하면 된다.

Page 14: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

27

13.13.2 시각 절두체/원통 교차

시각 절두체/구 교차 검사와 비슷한 방법으로 한다.원통을 선분처럼 생각하고 시각 절두체를 구의 반지름만큼 크게 한다.

원통의 축을 사용해서 각 시각 절두체 평면들이 커지는 범위를 결정.

원통의 축 방향과 시각 절두체 평면의 법선 벡터를 내적해서 원통의반지름에 곱한다.

평면이 바깥으로 움직이는 양.

확장된 시각 절두체 원통에 해당하는 선분을 구한 후에는 그 둘이 겹치는지만 검사하면 된다.

약간의 근사화를 해서 완전히 정확하지는 않다.틀린 포함만을 초래하기 때문에 수행 속도에만 영향을 준다.

시각 절두체에 겹치는 원통을 겹치지 않는다고 판단하지는 않는다.

28

13.13.3 시각 절두체/박스 교차

투영 방법이 직교 투영시각 절두체가 박스 모양

OBB/OBB 교차 검사로 해결할 수 있다.

일반적이 시각 절두체/박스 교차 검사간단한 제외/포함 검사가 있다.

OBB나 AABB를 시각 절두체의 6개의 평면에 대해서 검사를 한다는점에서 시각 절두체/구 검사와 비슷.

어떤 평면에 대해서 박스의 모든 점이 바깥에 존재하면 그 박스는 시각 절두체 바깥에 있다고 판단할 수 있다.

알고리즘은 박스를 6개의 시각 절두체 평면에 대해서 순서대로 검사한다.

박스가 하나의 평면에 대해서 바깥쪽에 있다면박스는 바깥에 있는 것. 검사는 끝난다.

박스가 모든 평면의 안쪽에 있다면시각 절두체 안에 있다.

나머지 경우에는시각 절두체의 경계와 겹친다고 판단.

Page 15: 교차검사방법들 - Hallymgraphics.hallym.ac.kr/teach/2008/acg/src/chap13-3.pdf · 2008. 9. 18. · ¿OBB/OBB 교차검사전에빠른배제검사를해주는것이좋을수있

29

13.13.3 시각 절두체/박스 교차

πi, i = 0 … 5는 6개의 시각 절두체 평면을 나타냄.

B는 AABB를 나타냄.

핵심은 평면/박스 교차 검사이다.

30

13.13.3 시각 절두체/박스 교차

시각 절두체/구 알고리즘과 마찬가지로, 이 검사에서도 완전히 바깥에있는 박스를 겹친다고 분류하는 경우가 있다.

SAT를 사용하면 이러한 문제가 없어진다.


Recommended