무한평면과 놀기   김성익 noerror@softnette.com   2010/6/27   KASA발표
목차• 평면의 방정식 개요• 기본편 – 교차검사 – 슬라이딩, 반사 – 컬링에 응용• 응용편 –   볼록다각형(convex) –   클리핑 –   BSP(Binary Spatial Partitioning) –   CSG...
평면의 방정식 개요•   평면의 방정식 (Plane Equation)    –   a*x + b*y + c*z + d = 0    –   a*x + b*y + c*z = d’ (같은 공식 다른 표현)•   점과 평면과의...
교차검사• 유한라인(Segment)와 평면 방정식  – Segment 임의의 두 점을 연결하는 라인  – 점의 쓸기 검사(SweepTest)       • 시작점에서 임의의 위치로 이동  –   툴상에서 카메라이용   ...
컬링에 응용•   AABB(AxisAlignBoundingBox) vs 평면    – AABB 가 평면위에 있는 지, 평면 아래에 있는 지 검사        • 가장 가까운 위치 / 가장 먼위치 이용        • 가...
컨벡스•   볼록 도형 (Convex Polytope)    – 임의의 평면으로 이등분됨         • 분할된 두 다면체는 여전히 Convex !!    – N개의 점으로 표현가능    – N개의 평면으로 표현 가능...
클리핑(1)•   볼록한 평면도형을 평면으로 클리핑    – 볼록한 평면도형 (TriangleFan의 형태)    – N각형 (V1 -> V2 -> .. -> VN)    – 알고리즘       • 각 Edge를 순회하...
클리핑(2)•   폴리곤 뷰프러스텀 클리핑(View Frustum Clipping)    – 프러스텀의 6면에 대해서 클리핑 실시~    – 서덜랜드 호지먼(Hutherland-Hodgeman) 알고리즘
물리파괴•   Convex 무한 평면으로 자르기를 물리에 적용    –   각 폴리곤에 대해서 Split    –   평면위의 폴리곤과 아래의 폴리곤으로 구분    –   새로 생긴 Edge 정보를 이용 내부 채우기  ...
BSP•   BSP (Binary Spatial Partitioning)     – 씬매니징         • 객체를 최적으로 효과적으로 분할 가능 (옥트리, 쿼드트리, Kd 트리와 비교)     – BSP 메시모델
CSG에 응용(1)•   CSG (Constructive Solid Geometry)     –   속이 찬 볼록다면체(Convex Polyhedron)를 더하기 빼기 블린연산을 통해 메시정의     –   둠, 하프라...
CSG에 응용(2)•   두 컨벡스 다면체에 대해서 면 분할    –   컨벡스 = 평면 집합 = 각 평면에 대해서 Solid와 Solid 아님으로 나뉘는 BSP트리    –   A, B 연산시 A를 B의 각면에 대해서...
메시 파팅•   메시 파팅 (from 마비노기 영웅전 캐릭터 커스터마이징 시스템)    – 장착될 코스춤을 추가하기 전에 이전 메시의 일정 영역을 클리핑•   알고리즘 (그냥 나름의 추측임)    – 컨벡스로 정의된 자...
끝~
Upcoming SlideShare
Loading in …5
×

10_무한 평면과 놀기

1,216 views
1,019 views

Published on

무한 평면 이용한 기법들

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,216
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

10_무한 평면과 놀기

  1. 1. 무한평면과 놀기 김성익 noerror@softnette.com 2010/6/27 KASA발표
  2. 2. 목차• 평면의 방정식 개요• 기본편 – 교차검사 – 슬라이딩, 반사 – 컬링에 응용• 응용편 – 볼록다각형(convex) – 클리핑 – BSP(Binary Spatial Partitioning) – CSG(Constructive Solid Geometry)에 응용 – 메시 파팅에 응용
  3. 3. 평면의 방정식 개요• 평면의 방정식 (Plane Equation) – a*x + b*y + c*z + d = 0 – a*x + b*y + c*z = d’ (같은 공식 다른 표현)• 점과 평면과의 거리 (Point to Plane) – Distance(V) = a*Vx + b*Vy + c*Vz + d – 즉 • a*Vx + b*Vy + c*Vz + d > 0 : V는 평면보다 위에 있다 • a*Vx + b*Vy + c*Vz + d = 0 : V는 평면위에 있다 • a*Vx + b*Vy + c*Vz + d < 0 : V는 평면보다 아래에 있다• 구성요소 – 노멀방향 N = (a, b, c)• 평면의 방정식 구하기 – 평면의 방향과 평면위의 임의의 점 (VN, VP) = [VN,-Vn·Vp] – 평면위의 임의의 점 3개 (V1, V2, V3) = N:(V2-V1) x (V3-V1), [N, N·V1]• 기타연산 – 뒤집기 – 정규화(Normalize)
  4. 4. 교차검사• 유한라인(Segment)와 평면 방정식 – Segment 임의의 두 점을 연결하는 라인 – 점의 쓸기 검사(SweepTest) • 시작점에서 임의의 위치로 이동 – 툴상에서 카메라이용 • 카메라위치, 피킹 벡터, 바닥평면을 이용 화면의 피킹한 월드위치 • 카메라의 방향, 픽킹 위치를 이용, 카메라를 바라보는 평면의 방정식을 구해서 드래그처리
  5. 5. 컬링에 응용• AABB(AxisAlignBoundingBox) vs 평면 – AABB 가 평면위에 있는 지, 평면 아래에 있는 지 검사 • 가장 가까운 위치 / 가장 먼위치 이용 • 가장 가까운 위치가 평면 위에 있으면 AABB는 평면 위에 있다 – 뷰프러스텀 컬링에 사용 • 가장 먼 위치가 평면 아래에 있으면 AABB는 평면 아래에 있다 – 어클루젼 컬링에 사용• 구(Sphere) Vs 평면
  6. 6. 컨벡스• 볼록 도형 (Convex Polytope) – 임의의 평면으로 이등분됨 • 분할된 두 다면체는 여전히 Convex !! – N개의 점으로 표현가능 – N개의 평면으로 표현 가능 • 반복적인 평면과의 연산으로 표현 가능 – 대표적인 볼록 다면체 • 절두체 (프러스텀 Frustum) • 박스 (Box) – 물리처리 기본단위 • Convex이면서 단순화된 형태 Box – 컨벡스의 반대 : 오목 (Concave)• 평면상의 컨벡스 도형 – 폴리곤 (Polygon) – 가장 작은 단위 도형(Unit Shape) = 삼각형 (triangle) – 폴리곤 = 삼각형의 집합으로 표현 가능 – 레스터라이제이션(Rasterization)
  7. 7. 클리핑(1)• 볼록한 평면도형을 평면으로 클리핑 – 볼록한 평면도형 (TriangleFan의 형태) – N각형 (V1 -> V2 -> .. -> VN) – 알고리즘 • 각 Edge를 순회하면서 테스트 – VN-1 과 VN이 평면에 충돌하면 충돌 버텍스추가 – VN이 평면위에 있으면 버텍스 추가 • 예) 그림 – [4->0] -> 0 -> [0->1] -> 1 -> [1->2] A -> 2 -> [2->3] -> 3 -> [3->4] B -> 4
  8. 8. 클리핑(2)• 폴리곤 뷰프러스텀 클리핑(View Frustum Clipping) – 프러스텀의 6면에 대해서 클리핑 실시~ – 서덜랜드 호지먼(Hutherland-Hodgeman) 알고리즘
  9. 9. 물리파괴• Convex 무한 평면으로 자르기를 물리에 적용 – 각 폴리곤에 대해서 Split – 평면위의 폴리곤과 아래의 폴리곤으로 구분 – 새로 생긴 Edge 정보를 이용 내부 채우기 – 메시는 Convex가 아닐 수 있으나 물리 모델은 무조건 Convex • 물리엔진에는 버텍스 리스트만 올리면 OK • 메시 모델이 Convex가 아닌 경우 분할된 Edge로 채울 면 만들때 주의 필요 – 미리 분할하는 파괴랑은 다른 매력~ (E32010 메탈기어솔리드) – 테스트예 http://www.youtube.com/watch?v=Tt0WNPeqd70
  10. 10. BSP• BSP (Binary Spatial Partitioning) – 씬매니징 • 객체를 최적으로 효과적으로 분할 가능 (옥트리, 쿼드트리, Kd 트리와 비교) – BSP 메시모델
  11. 11. CSG에 응용(1)• CSG (Constructive Solid Geometry) – 속이 찬 볼록다면체(Convex Polyhedron)를 더하기 빼기 블린연산을 통해 메시정의 – 둠, 하프라이프, 언리얼등에서 레벨 디자인에 사용되고 있음 • 빠른 레벨 제작과 테스트
  12. 12. CSG에 응용(2)• 두 컨벡스 다면체에 대해서 면 분할 – 컨벡스 = 평면 집합 = 각 평면에 대해서 Solid와 Solid 아님으로 나뉘는 BSP트리 – A, B 연산시 A를 B의 각면에 대해서 분할 (분할시 완전 위의 면와 평면에 있거나 아래에 있 는 그룹으로 나누고 평면에 있거나 아래에 있는 면들은 다음 면으로 순차적으로 분할) – 최종적으로 (A-B)와 (A&B) 의 그룹이 남음 – 이 정보를 이용하여 블린연산
  13. 13. 메시 파팅• 메시 파팅 (from 마비노기 영웅전 캐릭터 커스터마이징 시스템) – 장착될 코스춤을 추가하기 전에 이전 메시의 일정 영역을 클리핑• 알고리즘 (그냥 나름의 추측임) – 컨벡스로 정의된 자를 영역을 준비한다. – 메시의 간단한 계층 구조를 통해 컨벡스에 포함 안될 메시를 미리 제외시킨다 – 서더랜드호지먼 방식처럼 미리 버텍스에 대해서 각 평면의 Up/Down 체크해서 비트로 저장해둔다 • 이 단계에서 비트 연산으로 포함 안될 face들을 추가로 추려낼 수 있음 (페이스안의 버 텍스 모두 임의의 평면 위에 존재) • 클리핑할 필요없도 없이 제외되는 face들도 추려낼 수 있음 (펜이스 안의 버텍스 모든 평면의 아래에 존재) – 각 평면에 대해서 순차적으로 분할 작업
  14. 14. 끝~

×