전체 글 291

Direct X - LOD (Level Of Detail)

LOD 메시 모델링 데이터의 정밀도를 단계별로 조정하는 기술 LOD는 크게 정적 LOD와 동적 LOD로 나눌 수 있다. 지형 처리에서 사용되는 방법은 대부분 동적 LOD이다. LOD가 필요한 이유 LOD기술은 속도와 질 사이의 타협속에서 생겨난 기술이다. 질이 너무 좋은 화면은 속도가 느리게 되고, 반면 속도에만 너무 치중하게되면 화면의 질이 떨어지는게 당연한 것! 질을 적게 떨어뜨리면서 속도도 빠른 렌더링 기술을 개발하는 과정에서 태어난 기술이 LOD라는 기법이다. 메시 하나를 표현하는데도 메시를 몇개로 분할하느냐에 따라 성능이 달라지는데, 카메라와 물체간의 거리를 측정하여 카메라와 가까운 거리에 있는 물체는 정밀한 메시를 사용하고, 거리가 멀어질 수록 낮은 단계의 메시를 사용하는 기법이 정적 LOD이..

Graphics/DirectX 2014.08.21

Direct X - 쿼드트리 컬링

쿼드트리 컬링 쿼드트리는 절두체 컬링과 결합되었을 때 그 위력을 발휘한다. 우선, 고등학교 2차원 평면에서의 사분면 개념으로 설명이 되어있다. 오른쪽 위 1사분면으로 시작해서 시계반대방향으로 2,3,4분면 앞으로 다룰 모든 절두체 판정은 경계구 방식이다 위 그림은 네개의 자식노드에 대한 경계구의 예제인데, 각 사분면의 중앙으로부터 가장 끝점까지의 거리를 반지름으로 하는 경계구를 사용해서 절두체 판정을 하는 것이다 절두체 컬링 과정 먼저 절두체 컬링을 하기 직전 단계의 그림을 보자 컬링을 하기 전, 상자가 절두체구 지형을 1사분면부터 4사분면으로 나눈 것 1사분면에 절두체가 없으니까 2사분면을 검사한다 2사분면에도 절두체가 없으니까 제외시키고 3사분면을 검사한다 3사분면에 절두체가 없으니 제외시킨다. 4사..

Graphics/DirectX 2014.08.16

Direct X - 쿼드트리

쿼드트리의 정의 사분트리 자식노드가 4개인 트리 쿼드트리는 공간을 4개의 자식노드로 재귀적 분할하는 방법이다. 한 공간을 1/4로 계속 분할한다. 하나였던 지형이 1/4로 분할, 2단계에서 다시 또 1/4로 분할, 3단계에서 또 1/4로 분할.. 이러다가 일정 크기 이하로 줄어들면 분할을 멈추는 것. 쿼드트리의 효과 쿼드트리를 사용하는 가장 큰 이유는 거대한 지형을 빠르게 검색할 수 있기 때문이다. 따라서, 큰 덩어리 단위로 필요없는 데이터를 제거함으로써, 3D엔진이 처리해야할 데이터량을 빠르게 줄일 수 있다. 이를 위해서 반드시 쿼드트리가 절두체 컬링과 결합되어야만 제 성능을 발휘할 수 있으므로, 요고 다음예제에서는 절두체 컬링 + 쿼드트리를 해보자 이전 지형맵의 코드에 비해 지형관리 클래스도 추가되고..

Graphics/DirectX 2014.08.14

Direct X - 절두체 컬링

실시간 3차원 그래픽에서, 가장 중요한 기술은 '보이지 않는 것들을 그리지 않기'라는 것 절두체 컬링은 바로 이런 기술 중 하나다 절두체의 정의 절두체 컬링이란 전체 3차원 월드에는 대단히 많은 폴리곤과 오브젝트가 있지만, 이들 중에서 실제로 카메라의 시야 범위에 포함되는 것들만 렌더링하고, 나머지 것들은 렌더링 하지 않는 기법을 말한다. 3D엔진 개발에 있어 가장 중요한 속도 증가 기법 중 하나다. 절두체를 이루는 6개의 평면 근평면 : 카메라와 수직하며 제일 가까운 곳의 시야 범위를 나타내는 평면 원평면 : 카메라와 수직하며 제일 먼 곳의 시야 범위를 나타내는 평면 좌평면 : 카메라의 좌측 시야 범위를 나타내는 평면 우평면 : 카메라의 우측 시야 범위를 나타내는 평면 상평면 : 카메라의 상단 시야 범..

Graphics/DirectX 2014.08.11

Direct X - 카메라

카메라 조작에 필요한 기능들 카메라 조작 기법에는 여러가지가 있으나, 여기서는 가장 개념적으로 간단한 카메라 조작을 해볼것이다. 카메라 조작의 주된 기능은 이동과 회전! 이 둘 중 이동을 먼저 생각해보면, 상하좌우전후 ㅇㅋ?, x, y, z축 이동이 있다. 이 때, 이동의 기준이 되는 x, y, z축은 모두 카메라 좌표계의 축이라는 것 요고만 주의하자 흔히, 전체 3D 월드 좌표계의 x, y, z축을 이동의 가준으로 삼아서 카메라가 제대로 이동하지 않는 경우가 있는데, 카메라 좌표계의 x, y, z축이 이동의 기준이라는것 명심하자! 요고는 회전에도 똑같이 적용되는 것으로, 카메라좌표계의 축을 기준으로 회전 이동 우선 카메라 좌표계를 구해보자 카메라행렬을 만들기 위해 세가지 값을 입력받아, 요 세가지 값은..

Graphics/DirectX 2014.08.04

Direct X - 지형 처리 기법

지형처리기법 지형처리기법은 높이맵, 쿼드트리, LOD로 구성되어있다, 이 기법들을 차근차근 알아보자 높이 맵 등고선에서는 높이값을 등고선의 색깔값으로 나타냈으나, 높이 맵은 높이값을 0~255사이의 명암값으로 나타낸 것이라고 할 수 있다. 먼저, 만들고자 하는 3차원 지형을 2차원 높이 정보만을 가진 높이 맵으로 만들고, 높이 맵 정보를 사용하여 3차원 지형으로 재구축하는것을 높이 맵 지형 처리 기법이라 한다. 높이 맵 생성 원리 높이 맵은 2차원 정보를 3차원 정점정보로 바꿈으로써 간단하게 구현할 수 있다. 일단 일반적으로 xy평면이라고 하는 공간은 3차원에서 xz 평면에 해당하므로 3차원 좌표 위에서의 편리한 계산을 위해서 xz 평면이라고 하겠당. 높이 맵의 핵심 원리는 2차원 좌표(x, z) 좌표에..

Graphics/DirectX 2014.07.31

Direct X - 스키닝

스키닝 스키닝은 말그대로 피부를 붙이는 것이다, 3차원 메시는 관절과 관절 사이가 사람과 달리 끊김 현상이 발생할 수 있는데, 이를 막는 기법을 스키닝이라구한다. '단일메시 + 가중치사용'의 방법이 가장 이상적인 형태로, A의 애니메이션 행렬 Ma와 B의 애니메이션 행렬 Mb가 각각 가중치 Wa와 Wb값에 의해 결합되어 최종값을 만드는 것을 알 수 있다. 메시를 애니메이션할 때 접합부위를 자연스럽게 이어붙이기 위한 기술들을 총칭하여 스키닝이라고 하며, 이러한 스키닝에는 다양한 기법들이 있으나, 일반적으로는 뼈대의 애니메이션 행렬이 메시의 정점에 얼마만큼의 가중치로 결합될 것인가 하는 것이 핵심요소라고 할 수 있다. 매트릭스 팔레트 매트릭스 팔레트 or 인덱스 매트릭스라고 하는 방식은 Direct 3D 8..

Graphics/DirectX 2014.07.30

Direct X - 애니메이션

3차원 메시들이 단순히 화면에 떠있기만 해서는 별로 쓸모가 없다. 이들이 상호작용하여 움직일 수 있어야 비로소 진정한 3D가 아닌가? 허허허 애니메이션 기법에는 여러가지가 있지만, 이번에는 가장 필요한 기법만 확실하게 알아두자 일반적으로 애니메이션 기법에는 다섯개가 있다. 1. 정점 애니메이션 2. 계층적 애니메이션 3. 뼈대 애니메이션 4. 스키닝 5. 역운동학 의미가 중복되는것도 있고, 실제 애니메이션과는 상관없는 것들도 있찌만, 대체로 위의 다섯가지가 애니메이션 관련 개발시에 많이 마주치게 되는 것들이다. 애니메이션 기법 중 가장 흔하면서 가장 강력한 기법인 키프레임 애니메이션 기법에 대해서만 알아보자. 키프레임 애니메이션 키프레임 애니메이션이란 전체 애니메이션 중에서 중요한 몇개의 프레임에 애니메..

Graphics/DirectX 2014.07.29

Direct X - 계층구조

계층구조 중요하다 일반적으로 3D프로그램을 제작하다보면, 인간이나 동물, 기계등의 애니메이션을 할 때가 대부분이다. 또한, 이러한 물체들의 공통점은 대부분이 관절체로 이루어져 있다는 것이다. 이러한 관절체의 가장 큰 특징은 부모-자식 관계를 갖는 계층구조로 이루어져 있다는 것이다. 이런 계층 구조를 어떻게 구현하는지 원리를 알아보도록허자 트리 일반적으로 계층구조는 자료구조중에서 트리로 구현 가능하다. 트리는 3D그래픽스에서 가장 애용되는 자료구조로 건물내부의 지형처리에 주로 애용되는 BSP트리(Binary Surface Partition tree, 2진트리;; 에이 이진트리아니냐), 거대 지형 처리에 사용되는 쿼드트리(4진트리), 거대 공간 처리에 사용되는 옥트리(8진트리)등이 있다. 계층구조 표현방법 ..

Graphics/DirectX 2014.07.28

Direct X - 법선맵핑

법선맵핑 텍스쳐의 텍셀(텍스쳐 엘리먼트 : 텍스쳐의 일부)에 RGB색깔값이 아닌 법선 벡터값이 들어있는 텍스쳐를 사용하여 특수하게 맵핑하는 기법이다. 이 텍스쳐의 법선벡터와 광원의 연산을 통해서 정점 단위의 조명이 아닌 픽셀 단위의 조명을 할 수 있도록 한다. 여기서는 픽셀별 조명 기법의 대표적인 예를 가지고 해보자 법선맵핑의 종류 법선벡터의 기준좌표계에 따라서 오브젝트 공간 법선 맵과 접선공간 법선 맵으로 나뉜다. 오브젝트 공간 법선 맵 : 법선벡터가 기준으로 삼는 좌표계가 맵이 생성되는 3D오브젝트의 공간 좌표계가 기준이 되는 맵이야, 오브젝트의 원점이 법선벡터의 원점이 되는거지, 가장 직관적이구 어지간한 하드웨어가 다 지원하는 것이다 접선공간 법선 맵 : 모든 법선 벡터를 각 정점의 접선공간으로 변..

Graphics/DirectX 2014.07.25