GPG1 – 4.4빠른 원통 - 절두체 교차 판정
2011/01/15Devrookie 엠에스박 ( 박민수 )
목차
시야 절두체 평면의 방정식 구 교차 판정 박스 교차 판정 원통 교차 판정Q & A
시야 절두체
시야 절두체
시야 절두체의 속성 초점 거리 종횡비 근단면 원단면
시야 절두체
초점 거리초점 거리 값을 기준으로 절두체를 규정 .
L = 1 / tan(fov/2)
시야 절두체
종횡비뷰포트의 높이를 너비로 나눈 값
초점 거리 위치에 있는 평면의 x, y 값을 구함1
A = height / width
시야 절두체
근단면 , 원단면가까운 평면과 먼 평면의 깊이 값
해당 사이의 볼륨 영역이 시야 절두체가 됨
N / L * 1
F / L * A
시야 절두체
초점 거리와 종횡비로 각 평면의 법선 구하기
근 단면 : (0, 0, 1)원 단면 : (0, 0, -1)왼쪽 : (f, 0, 1)오른쪽 : (-f, 0, 1)위쪽 : (0, -f, a)아래쪽 : (0, f, a)
그리고 각각 정규화 하면 됨 .
평면의 방정식
평면의 방정식
ax + by + cz + d = 0
평면의 방정식
평면의 방정식
평면 : (a, b, c, d)어떤 점 : (x, y, z)
ax + by + cz + d = 0 -> 평면 위에 있다 .
ax + by + cz + d > 0 -> 평면 앞에 있다 .
ax + by + cz + d < 0 -> 평면 뒤에 있다 .
구 교차 판정
구center 와 radius 로 표현된다 .
구 교차 판정
구 교차 판정
각 절두체 평면과 구의 중심점의 거리를 구하고
평면 밖에 있는가 없는 가를 판단하여 판정한다 .
구 교차 판정
구 교차 판정
평면의 방정식에 구의 중심점을 넣는다 .구의 반지름 만큼 평면 밖에 있어도 교차로
판정 .
ax + by + cz + d < -radius
면 평면에서 벋어난 것으로 판정하면 됨 .
박스 교차 판정
박스 교차 판정Min , Max 값으로 표현된다 .
박스 교차 판정
박스 교차 판정파이 -> 평면 0~5
n -> 평면의 법선벡터
B -> AABB 박스
원통 교차 판정
원통반지름과 양 끝 점으로 표현된다 .
원통 교차 판정
유효 반지름 구하기r’ = rsin@
원통 교차 판정
유효 반지름 구하기
r’ = rsin@
sin^2@ + cos^2@ = 1
R’ = r*sqrt(1-cos^2@)
cos@ = (P2-P1) dot N / ||(P2-P1)||
원통 교차 판정
알고리즘
P1, P2 가 모두 평면의 음의 방향에 있으면 외부에 있는 것을 판정
P1, P2 가 모두 평면의 양의 방향에 있으면 다음 평면에서 판정
P1, P2 중 하나는 음의 방향 하나는 양의 방향에 있으면 두 점을 있는 선분과 평면의 교점을 구해 음의 방향의 끝점으로 대체 후 다음 평면에서 판정
양 끝점이 모두 음의 방향에 있지 않으면 교차 한다고 판단한다 .
원통 교차 판정
선분과 평면의 교점 구하기
P = P1 + t(P2–P1) ( 0 < t < 1 )
t = d - P1 dot N / (P2-P1) dot N
판정의 최적화
판정의 최적화
계산이 간편한 근평면 , 원평면을 먼저 계산 .
마지막 평면까지 판정이 왔다면 평면과 두 점사이의 교점을 구할 필요가 없고 한 점이라도 양의 방향에 있다면 더 이상 구할 필요가 없다 .
Q&A
마무리
The End