Graphics/DirectX 55

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

Direct 3D - 빌보드

빌보드의 가장 큰 특징은 카메라가 어느뱡향에서 바라보아도 항상 카메라의 정면을 향하고 있다는 것이다. 빌보드가 적용된 메시는 항상 카메라를 향하고 있다...... 원리 항상 카메라를 향하도록 하는 행렬을 만들면 되는 것! 간단하게 생각해보면, 카마레 변환 행렬의 성분 중에서 회전행렬부분만 역변환하면 빌보드 행렬을 구할 수 있는 것이다. Y축이 고정된 빌보드를 만들어보자 그럼 Y축 회전행렬의 역행렬을 구하면 된다 우선 Y축 회전행렬만 보자 Y축 회전 행렬 [cos세타 0 -sin세타 0 ] [ 0 1 0 0 ] [sin세타 0 cos세타 0 ] [ 0 0 0 1 ] 이 Y축 회전 행렬의 역행렬을 구하면 된다. 이게 원리의 전부다. 역행렬은 D3DXMatrixInverse 함수로 구현가능하다 구현 이제 카메..

Graphics/DirectX 2014.07.24

Direct 3D - 라이트 맵핑

사각형의 벽면을 그럴듯한 텍스쳐를 사용해 실제 벽면인것처럼 보이게 하고싶다 그런데, 모든 벽면이 동일한 밝기로 되어있으면 현실감이 떨어진다 그래서 광원이 있는곳은 밝고 광원이 없는곳은 어둡게 보이도록 하면 훨씬 실감나는 벽면이 될것이라는 가정하에 진행한다 그런데 여기서 포인트는 실제 광원을 생성해서 비추는게 아니라, 광원이 빛을 비추는 모양의 텍스쳐를 생성해서 텍스쳐와 함께 합성해주는 기법이 라이트 맵핑 기법의 원리 요고 두개를 합칠 것이다.. 왼쪽은 좀 작죠? 이걸 D3DTOP_MODULATE연산을 사용해서 합성했다 최근에는 GPU의 성능향상으로 라이트맵핑보다는 실시간 광원을 사용하는게 보편적이니.. 그냥 보고넘어가자 #include #include /**--------------------------..

Graphics/DirectX 2014.07.23

Direct 3D - 텍스쳐

이번에는,, 텍스쳐를 사용하는데 있어서 필요한 전반적인 지식을 알려드릴겁니다. 텍스쳐를 잘 활용하는 능력은 화려한 3D 그래픽을 표현하는데 있어 가장 중요합니다. 최근에는 절차적 텍스쳐(procedural texture)를 사용하는 새로운 추세가 생겼습니다.. 텍스쳐 좌표계 텍스쳐는 1, 2, 3, 4차원 좌표계를 가질 수 있는데, 일반적으로는 2차원 텍스쳐를 사용하게 된다. 3차원 환경 맵핑도 사실은 3차원 좌표계가 아니라 2차원 좌표계를 사용한다. Direct 3D의 텍스쳐 좌표계 2차원 텍스쳐 이미지를 3차원 공간의 폴리곤에 입히기 위해 변환하는데 기준이 되는 좌표계, 그냥 uv좌표라고 불리운다. uv좌표계가 0.0부터 1.0사이의 값을 갖는 텍스쳐 좌표계라면 실제로 이미지의 크기에 따른 좌표계는 ..

Graphics/DirectX 2014.07.21