SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
무한평면과 놀기
   김성익 noerror@softnette.com
   2010/6/27
   KASA발표
목차
• 평면의 방정식 개요
• 기본편
 – 교차검사
 – 슬라이딩, 반사
 – 컬링에 응용
• 응용편
 –   볼록다각형(convex)
 –   클리핑
 –   BSP(Binary Spatial Partitioning)
 –   CSG(Constructive Solid Geometry)에 응용
 –   메시 파팅에 응용
평면의 방정식 개요
•   평면의 방정식 (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)
교차검사
• 유한라인(Segment)와 평면 방정식
  – Segment 임의의 두 점을 연결하는 라인
  – 점의 쓸기 검사(SweepTest)
       • 시작점에서 임의의 위치로 이동




  –   툴상에서 카메라이용
       •   카메라위치, 피킹 벡터, 바닥평면을 이용 화면의 피킹한 월드위치
       •   카메라의 방향, 픽킹 위치를 이용, 카메라를 바라보는 평면의 방정식을 구해서 드래그처리
컬링에 응용
•   AABB(AxisAlignBoundingBox) vs 평면
    – AABB 가 평면위에 있는 지, 평면 아래에 있는 지 검사
        • 가장 가까운 위치 / 가장 먼위치 이용




        • 가장 가까운 위치가 평면 위에 있으면 AABB는 평면 위에 있다
            – 뷰프러스텀 컬링에 사용
        • 가장 먼 위치가 평면 아래에 있으면 AABB는 평면 아래에 있다
            – 어클루젼 컬링에 사용




•   구(Sphere) Vs 평면
컨벡스
•   볼록 도형 (Convex Polytope)
    – 임의의 평면으로 이등분됨
         • 분할된 두 다면체는 여전히 Convex !!
    – N개의 점으로 표현가능
    – N개의 평면으로 표현 가능
         • 반복적인 평면과의 연산으로 표현 가능
    – 대표적인 볼록 다면체
         • 절두체 (프러스텀 Frustum)
         • 박스 (Box)
    – 물리처리 기본단위
         • Convex이면서 단순화된 형태 Box
     – 컨벡스의 반대 : 오목 (Concave)
•   평면상의 컨벡스 도형
    –   폴리곤 (Polygon)
    –   가장 작은 단위 도형(Unit Shape) = 삼각형 (triangle)
    –   폴리곤 = 삼각형의 집합으로 표현 가능
    –   레스터라이제이션(Rasterization)
클리핑(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
클리핑(2)
•   폴리곤 뷰프러스텀 클리핑(View Frustum Clipping)
    – 프러스텀의 6면에 대해서 클리핑 실시~
    – 서덜랜드 호지먼(Hutherland-Hodgeman) 알고리즘
물리파괴
•   Convex 무한 평면으로 자르기를 물리에 적용
    –   각 폴리곤에 대해서 Split
    –   평면위의 폴리곤과 아래의 폴리곤으로 구분
    –   새로 생긴 Edge 정보를 이용 내부 채우기
    –   메시는 Convex가 아닐 수 있으나 물리 모델은 무조건 Convex
         • 물리엔진에는 버텍스 리스트만 올리면 OK
         • 메시 모델이 Convex가 아닌 경우 분할된 Edge로 채울 면
           만들때 주의 필요




    –   미리 분할하는 파괴랑은 다른 매력~ (E32010 메탈기어솔리드)
    –                 테스트예
                        http://www.youtube.com/watch?v=Tt0WNPeqd70
BSP
•   BSP (Binary Spatial Partitioning)
     – 씬매니징
         • 객체를 최적으로 효과적으로 분할 가능 (옥트리, 쿼드트리, Kd 트리와 비교)




     – BSP 메시모델
CSG에 응용(1)
•   CSG (Constructive Solid Geometry)
     –   속이 찬 볼록다면체(Convex Polyhedron)를 더하기 빼기 블린연산을 통해 메시정의




     –   둠, 하프라이프, 언리얼등에서 레벨 디자인에 사용되고 있음
          •   빠른 레벨 제작과 테스트
CSG에 응용(2)
•   두 컨벡스 다면체에 대해서 면 분할
    –   컨벡스 = 평면 집합 = 각 평면에 대해서 Solid와 Solid 아님으로 나뉘는 BSP트리
    –   A, B 연산시 A를 B의 각면에 대해서 분할 (분할시 완전 위의 면와 평면에 있거나 아래에 있
        는 그룹으로 나누고 평면에 있거나 아래에 있는 면들은 다음 면으로 순차적으로 분할)
    –   최종적으로 (A-B)와 (A&B) 의 그룹이 남음




    –   이 정보를 이용하여 블린연산
메시 파팅
•   메시 파팅 (from 마비노기 영웅전 캐릭터 커스터마이징 시스템)
    – 장착될 코스춤을 추가하기 전에 이전 메시의 일정 영역을 클리핑
•   알고리즘 (그냥 나름의 추측임)
    – 컨벡스로 정의된 자를 영역을 준비한다.
    – 메시의 간단한 계층 구조를 통해 컨벡스에 포함 안될 메시를 미리 제외시킨다
    – 서더랜드호지먼 방식처럼 미리 버텍스에 대해서 각 평면의 Up/Down 체크해서
      비트로 저장해둔다
       • 이 단계에서 비트 연산으로 포함 안될 face들을 추가로 추려낼 수 있음 (페이스안의 버
         텍스 모두 임의의 평면 위에 존재)
       • 클리핑할 필요없도 없이 제외되는 face들도 추려낼 수 있음 (펜이스 안의 버텍스 모든
         평면의 아래에 존재)
    – 각 평면에 대해서 순차적으로 분할 작업
끝~

Weitere ähnliche Inhalte

Was ist angesagt?

[Gpg1권 박민수] 4.4 빠른 원통 절두체 교차 판정
[Gpg1권 박민수] 4.4 빠른 원통 절두체 교차 판정[Gpg1권 박민수] 4.4 빠른 원통 절두체 교차 판정
[Gpg1권 박민수] 4.4 빠른 원통 절두체 교차 판정MoonLightMS
 
GameMath-Chapter 03 변환
GameMath-Chapter 03 변환GameMath-Chapter 03 변환
GameMath-Chapter 03 변환Mark Choi
 
3D Graphics Transform
3D Graphics Transform3D Graphics Transform
3D Graphics Transform문익 장
 
CNN(Convolutional Neural Nets) backpropagation
CNN(Convolutional Neural Nets) backpropagationCNN(Convolutional Neural Nets) backpropagation
CNN(Convolutional Neural Nets) backpropagationJooyoul Lee
 
컴퓨터 그래픽스 2015-2019년 기말시험
컴퓨터 그래픽스 2015-2019년 기말시험컴퓨터 그래픽스 2015-2019년 기말시험
컴퓨터 그래픽스 2015-2019년 기말시험Lee Sang-Ho
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠동환 김
 
Rendering realistic Ice objects
Rendering realistic Ice objectsRendering realistic Ice objects
Rendering realistic Ice objectsyong gyun im
 
Dijkstra algorithm
Dijkstra algorithmDijkstra algorithm
Dijkstra algorithmminhee An
 
GeoGebra Model : GC2015X-A201515016
GeoGebra Model : GC2015X-A201515016GeoGebra Model : GC2015X-A201515016
GeoGebra Model : GC2015X-A201515016Taehwan Kim
 
Gpg 벡터와 평면 충돌 기법
Gpg 벡터와 평면 충돌 기법Gpg 벡터와 평면 충돌 기법
Gpg 벡터와 평면 충돌 기법종규 우
 
Ray-triangle intersection
Ray-triangle intersectionRay-triangle intersection
Ray-triangle intersection동환 김
 
Data Structure 2
Data Structure 2Data Structure 2
Data Structure 2yonsei
 
유니티 고급 과정 -3-
유니티 고급 과정 -3-유니티 고급 과정 -3-
유니티 고급 과정 -3-Kiyoung Moon
 
Line sweep algorithms
Line sweep algorithmsLine sweep algorithms
Line sweep algorithmsskku_npc
 

Was ist angesagt? (16)

[Gpg1권 박민수] 4.4 빠른 원통 절두체 교차 판정
[Gpg1권 박민수] 4.4 빠른 원통 절두체 교차 판정[Gpg1권 박민수] 4.4 빠른 원통 절두체 교차 판정
[Gpg1권 박민수] 4.4 빠른 원통 절두체 교차 판정
 
GameMath-Chapter 03 변환
GameMath-Chapter 03 변환GameMath-Chapter 03 변환
GameMath-Chapter 03 변환
 
쿼터니언
쿼터니언쿼터니언
쿼터니언
 
3D Graphics Transform
3D Graphics Transform3D Graphics Transform
3D Graphics Transform
 
CNN(Convolutional Neural Nets) backpropagation
CNN(Convolutional Neural Nets) backpropagationCNN(Convolutional Neural Nets) backpropagation
CNN(Convolutional Neural Nets) backpropagation
 
Picking
PickingPicking
Picking
 
컴퓨터 그래픽스 2015-2019년 기말시험
컴퓨터 그래픽스 2015-2019년 기말시험컴퓨터 그래픽스 2015-2019년 기말시험
컴퓨터 그래픽스 2015-2019년 기말시험
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠
 
Rendering realistic Ice objects
Rendering realistic Ice objectsRendering realistic Ice objects
Rendering realistic Ice objects
 
Dijkstra algorithm
Dijkstra algorithmDijkstra algorithm
Dijkstra algorithm
 
GeoGebra Model : GC2015X-A201515016
GeoGebra Model : GC2015X-A201515016GeoGebra Model : GC2015X-A201515016
GeoGebra Model : GC2015X-A201515016
 
Gpg 벡터와 평면 충돌 기법
Gpg 벡터와 평면 충돌 기법Gpg 벡터와 평면 충돌 기법
Gpg 벡터와 평면 충돌 기법
 
Ray-triangle intersection
Ray-triangle intersectionRay-triangle intersection
Ray-triangle intersection
 
Data Structure 2
Data Structure 2Data Structure 2
Data Structure 2
 
유니티 고급 과정 -3-
유니티 고급 과정 -3-유니티 고급 과정 -3-
유니티 고급 과정 -3-
 
Line sweep algorithms
Line sweep algorithmsLine sweep algorithms
Line sweep algorithms
 

Ähnlich wie 10_무한 평면과 놀기

Voxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseVoxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseYEONG-CHEON YOU
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법강 민우
 
Real-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel modelReal-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel modelJaeyun Lee
 
Visualizing data using t-SNE
Visualizing data using t-SNEVisualizing data using t-SNE
Visualizing data using t-SNE홍배 김
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)QooJuice
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018devCAT Studio, NEXON
 

Ähnlich wie 10_무한 평면과 놀기 (6)

Voxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseVoxel based game_optimazation_relelase
Voxel based game_optimazation_relelase
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
 
Real-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel modelReal-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel model
 
Visualizing data using t-SNE
Visualizing data using t-SNEVisualizing data using t-SNE
Visualizing data using t-SNE
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
 

Mehr von noerror

15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlasnoerror
 
11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용noerror
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집noerror
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법noerror
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문noerror
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템noerror
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법noerror
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법noerror
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드noerror
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기noerror
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강noerror
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개noerror
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문noerror
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개noerror
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editornoerror
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개noerror
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁noerror
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)noerror
 

Mehr von noerror (20)

15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlas
 
11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editor
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)
 

10_무한 평면과 놀기

  • 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. 끝~