Graphics/DirectX 55

Direct 3D - *광원

광원을 알아보기 전에 우선 재질의 종류를 알아보자 재질이라는건 메시의 표면 상태를 말하는것이다 빛이 물체의 표면에서 반사되서 변화된 뒤 사람의 눈에 들어오기까지의 과정을 수학적으로 모델링 하기위해 사용되는 값인데... 일단 그냥 이런게 있다는것만 알아두자 광원 구조체(D3DLIGHT9)에 속해있다. 주변광(ambient) : 최저 평균 밝기를 말한다. 똑같은 양으로 모든 면에서 나오는 빛 확산광(diffuse) : 표면의 모든 점들에 균일하게 비춰지는 빛 반사광(specular) : 특정한 방향으로만 반사하는 빛. 광원의 위치와 카메라의 위치에 따라서 달라진다 방출광(emissive) : 메시 표면에서 자체적으로 방출되는 빛, 이 빛이 다른 메시에 영향을 주지는 못한다. 광원의 종류 D3D에서는 4가지 ..

Graphics/DirectX 2014.06.19

Direct X - *행렬

이걸 보기전에 꼭꼭꼭꼭!! 반드시반드시반드시 이 게시판에 있는 Direct X - 6강 좌표계 세가지를 이해해야한다. 월드, 뷰, 프로젝션 좌표계에 대한 선행학습이 필요합니다. 간단하게보자 월드좌표계 로컬 좌표계는 원점을 공유한다. 이걸 월드 좌표계로 변환하여 출력해야 원점에 겹치지 않고 메시들이 출력될 수 있다. 로컬좌표계 -> 월드좌표계는 행렬변환이다,, 이걸 변환행렬이라고 하는데, 변환행렬은 모든 물체마다 고유하게 하나 씩 존재한다 3차원 공간에 100개의 물체를 그리려면 100개의 변환행렬이 필요한 것. 뷰 좌표계 (카메라 변환) 월드좌표계를 카메라를 기준점으로 한 좌표계로 변환하는 과정이 바로 뷰 좌표계이다. 두개의 함수만 기억해두자 카메라 변환행렬 계산 D3DXMatrixLookAtLH(&ma..

Graphics/DirectX 2014.06.19

Direct X - *정점

정점, 버틱스, Vertex ㅇㅋ? /// Direct3D9를 사용하기 위한 헤더 #include /**----------------------------------------------------------------------------- * 전역변수 *------------------------------------------------------------------------------ */ LPDIRECT3D9 g_pD3D = NULL; /// D3D 디바이스를 생성할 D3D객체변수 LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; /// 렌더링에 사용될 D3D디바이스 LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; /// 정점을 보관할 정점 버퍼 /**..

Graphics/DirectX 2014.06.19

Direct X - *디바이스 생성

디바이스 생성을 해보겠다. 기본이지만 가장 중요한 디바이스 객체다. 이것이 바로 DX라고 해도 과언이 아니다. /**----------------------------------------------------------------------------- * \brief 디바이스 생성 * 파일: CreateDevice.cpp * * 설명: D3D 디바이스를 생성하고, 이를 사용해서 화면을 지우는 방법에 대해서 * 공부하게 된다. * **----------------------------------------------------------------------------- */ /// Direct3D9를 사용하기 위한 헤더 #include /**---------------------------------..

Graphics/DirectX 2014.06.19

Direct X - 최초 세팅 작업

다이렉트X SDK를 다운받아 설치했다는 가정을 하고 시작하겠다. 3D 프로그래밍부터는 C#이 아닌 C++ 위주다. Microsoft DirectX SDK (August 2007)이 C# 2008에서 지원하는 마지막 DX이다. 이후로는 XNA다. 새 프로젝트를 만든다. 그냥 빈프로젝트를 만든다 파일 -> 새로만들기 -> 프로젝트 프로젝트 이름을 적절하게 눌러주고 확인! 프로젝트가 생성되면, cpp파일을 만들어줘야 한다. 뭐 경우에 따라서, 헤더파일을 만들 수도 있고, 폼을 만들 수도 있을거다. 어쨋든 여기서는 솔루션 탐색기 오른쪽클릭 -> 추가 -> 새 항목 적절한 이름을 입력하고 고고싱 자 이 정도는 기본이다 이제 라이브러리와 인클루드 폴더를 포함시켜야한다. 이걸 하지 않으면 DX의 헤더와 라이브러리를 ..

Graphics/DirectX 2014.06.19

Direct X - 기초용어와 이론

3차원 좌표계 D3D는 왼손 좌표계를 사용한다 이런거 어떻게 이해하면 되는거냐 왼손바닥이 하늘을 보게 편 상태에서 네 손가락을 90도로 접으면 끗 네 손가락이 Y축 X는 손바닥, Z는 엄지 이렇게 생각하면 이해가 빠를겁니다 벡터 "일반적으로 기압과 속력처럼 하나의 값으로 표기 가능한 숫자들을 스칼라 라고 하며, 가속도나 속도처럼 크기와 방향을 동시에 표현해야만 정확히 표현해야만 정확히 표현할 수 있는 수치를 벡터라고 한다" 2차원 평면상에서 원점 O를 기준으로 점 p(x,y)를 향하는 벡터 OP를 나타낸겁니다 3차원 공간상에서 원점 O를 기준으로 점 q(x, y, z)를 향하는 벡터 OQ를 나타낸겁니다 실제로 벡터는 3차원 그래픽상에서 은면제거나 음영에 주로 사용되며, 물리적인 연산이 필요한 곳의 직선과..

Graphics/DirectX 2014.06.19

Direct X - 19. 모델의 이동, 회전, 확대, 축소

using System; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; using System.Windows.Forms; using System.Drawing; namespace MDXSample { /// /// 메인 샘플 클래스 /// public partial class MainSample : IDisposable { /// /// 정점 버퍼 /// private VertexBuffer _xyzLineBuffer = null; private Vector3 _scale = new Vector3(1.0f, 1.0f, 1.0f); private Vector3 _trans = Vector3.Empty; private float _rotate = 0..

Graphics/DirectX 2014.06.09

Direct X - 18. 모델 확대와 축소

이 모델 확대와 축소를 이용하면,, 폭발하는듯한 애니메이션을 만드는데 응용이 가능하다 using System; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; using System.Windows.Forms; using System.Drawing; namespace MDXSample { /// /// 메인 샘플 클래스 /// public partial class MainSample : IDisposable { /// /// 정점 버퍼 /// /// private VertexBuffer _xyzLineBuffer = null; private Vector3 _scale = new Vector3(1.0f, 1.0f, 1.0f); public bool I..

Graphics/DirectX 2014.06.09

Direct X - 17. 키보드와 마우스를 이용한 모델 이동

이것역시 크게 다를건 없다 기억이 안나면 키보드처리하는 9강을 참고하자,, using System; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; using System.Windows.Forms; using System.Drawing; namespace MDXSample { /// /// 메인 샘플 클래스 /// public partial class MainSample : IDisposable { /// /// 정점 버퍼 /// /// private Vector3 _trans = Vector3.Empty; public bool InitializeApplication(MainForm topLevelForm) { // 폼의 참조를 보관 유지 this..

Graphics/DirectX 2014.06.09

Direct X - 16. X, Y, Z 좌표 그려넣기

정말별거없다 X, Y, Z좌표에 선하나긋는 것 using System; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; using System.Windows.Forms; using System.Drawing; namespace MDXSample { /// /// 메인 샘플 클래스 /// public partial class MainSample : IDisposable { /// /// 정점 버퍼 /// private VertexBuffer _xyzLineBuffer = null; public bool InitializeApplication(MainForm topLevelForm) { // 폼의 참조를 보관 유지 this._form = topLeve..

Graphics/DirectX 2014.06.09