• Like
10_무한 평면과 놀기
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

10_무한 평면과 놀기

  • 676 views
Published

무한 평면 이용한 기법들

무한 평면 이용한 기법들

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
676
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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