Graphics/DirectX 55

Direct X - 15. 모델 데이터 불러오기 (.x 파일)

모델데이터를 불러와보자 X파일은 다각형의 정점데이터나, 면의 데이터 등을 정리해둔 파일 이제는 모델데이터를 코드로 만드는게 아니라, X파일로부터 불러들이는 작업을 할 것이다 다각형이 복잡하다면 통상 X파일을 읽어서 하는게 일반적인데... (2011.02.19) - X파일 외에도 Obj, 3ds, stl 등 다양한 포맷이 사용됩니다 (2014.06.09) using System; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; using System.Windows.Forms; using System.Drawing; namespace MDXSample { /// /// 메인 샘플 클래스 /// public partial class MainSample ..

Graphics/DirectX 2014.06.09

Direct X - 14. 조명효과 사용하기

3D 물체에 조명을 쏘는 것! 우선 우리 조명에 대해서 알고 들어갑시다 라이트(조명)는 메테리얼, 라이트, 법선이 있다 메테리얼 메테리얼은, 물질의 색깔이다, 기본적으로 개개의 3D모델마다 메테리얼의 파라미터를 보관 유지해주고 있다, 하지만, 메테리얼은 라이트와 함께 쓰지 않는다면 의미가 없다 어쨋든 라이트를 쓸려면 메테리얼을 꼬옥 써야한다는 것. 메테리얼의 색은 정점의 색과는 다르다 메테리얼에는 여러개의 파라미터가 있어서 물질의 질감표현에 다양한 변화를 줄 수 있다 Material 구조체 Diffuse : 물질의 기본색 Ambient : 앰비언트 받았을 때의 색(라이트가 맞지 않아도 보인다) Specular : 경면 반사광(자동차의 광택같이 강하게 보인다) SpecularSharpness : 반사의 날..

Graphics/DirectX 2014.06.09

Direct X - 13. IndexBuffer를 이용한 상자 만들기

인덱스버퍼를 사용해서 육면체를 만든다 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 _vertexBuffer = null; private IndexBuffer _IndexBuffer = null; private static Int16[] _vertexIndices = new Int16[] { 2, 0, ..

Graphics/DirectX 2014.06.09

Direct X - 12. 마우스로 카메라 시점 움직이기

카메라를 움직이는 부분의 공식이나 방법은 11강과 같고,, 단지 키보드에서 마우스만을 사용한다는 점이 바뀌었다 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 _vertexBuffer = null; private Texture _texture = null; private float _lensPosTheta..

Graphics/DirectX 2014.06.09

Direct X - 11. 키보드로 3D 카메라 시점 움직이기

키보드로 3D 이미지의 카메라 시점을 변경해보자 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 _vertexBuffer = null; private Texture _texture = null; private float _lensPosTheta = 270.0f; private float _lensPosPh..

Graphics/DirectX 2014.06.08

Direct X - 10. 키보드 입력

키보드 입력은 Direct Input을 사용하는게 좋지만 간단하게 C# API로 해보자 using System; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; using System.Windows.Forms; using System.Drawing; namespace MDXSample { /// /// 메인 샘플 클래스 /// public partial class MainSample : IDisposable { private bool[] _keys = new bool[256]; public bool InitializeApplication(MainForm topLevelForm) { // 폼의 참조를 보관 유지 this._form = topLevel..

Graphics/DirectX 2014.06.08

Direct X - 9. 텍스쳐 넣기 (그림넣기)

이번에는 다각형 안에 이미지를 넣어보자3D에서는 이것을 바로 텍스쳐(Texture)라고 불러요, 이미지 파일을 읽어 작성한다. 게임에서는 필수적으로 사용되고, 보다 리얼한 모델을 구현하는데 초점을 맞춘다.   DirectX 3D의 텍스쳐에 대해서 간단하게 알아보자이 텍스쳐를 다각형에 붙이려면 정점 데이터에 UV좌표를 주지 않으면 안됩니다.UV좌표와는 정점의 어느 부분과 재질감의 어느 부분과 맞출까?를 나타내는 거다 UV좌표 - 모든 이미지에 동일!  이번 실습에 쓰이는 다각형은 사각형이니까 이 UV좌표를 그대로 쓰면 되겠다! 그럼 소스를 보자 using System;using Microsoft.DirectX;using Microsoft.DirectX.Direct3D;using System.Windows...

Graphics/DirectX 2014.06.08

Direct X - 8. 3D 사각형 출력

사각형은 자주 사용하니까 연습을 해두는게 좋다고한다.하지만 이 DirectX 에서는 그렇지 않다.꼭지점이 여섯개인 도형이다, 무슨말이냐삼각형 두개를 합친겁니다. 그렇다구 정점 수를 여섯개로 하느냐? 그건 또 아닙니다.4강에서 했던 메서드 PrimitiveType.TriangleStrip 이것으로 하면 4개의 정점만으로 삼각형 두개를 붙인 효과, 즉 사각형을 만들어내는 효과를 낼 수 있지요  정점의 인덱스는 위 그림과 같은데, 항상 정해져 있는거니까 이 차례는 신경써야합니다, 그렇지 않으면 모양이 흐트러진다 using System;using Microsoft.DirectX;using Microsoft.DirectX.Direct3D;using System.Windows.Forms;using System.Dr..

Graphics/DirectX 2014.06.08

Direct X - 7. 3D 공간에 3D 삼각형 출력

실행했을때에는 4, 5강과 같은 똑같은 모양의 삼각형이 보이지만,사실은 3차원공간에 서있는 삼각형이다^^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 _vertexBuffer = null; public bool Init..

Graphics/DirectX 2014.06.01

Direct X - 6. 좌표 변화 세가지 (월드, 뷰, 투영)

3D에 관해 필요한 간단한 지식 알고가자.우리의 모니터는 2차원 평면이기 때문에 X, Y의 2차원 정보밖에 가질 수 없음그렇다면, 그렇다면 어떻게 2차원 평면에 3차원 공간을 옮길 수 있는 것이냐?3차원의 정보를 2차원으로 변형하기 때문에 가능2차원의 화면상에서 3차원의 공간으로 인식하게 변환하고 있는데, 이것을 바로 좌표변환이라고 불러DirectX 프로그래밍에서는 이 좌표변화를 세가지로 분류되는데, 월드좌표변화, 뷰 좌표변화, 투영 좌표변화 그럼 이 세가지에 대해서 알아보자.OpenGL과 공통으로 알고 가야 할 지식들이다  - OpenGL이 오른손 좌표계를 쓴다는 것 외에 다른 개념들은 동일  월드좌표변화위와 같은 상자가 있다고 치자, 중심점은 (0, 0, 0)이 상자를 이동시키거나 회전시키고 싶으면 ..

Graphics/DirectX 2014.06.01