Graphics 87

Direct 3D - *텍스쳐

텍스쳐 텍스쳐는 쉽게말해 단조로운 폴리곤에 옷을 입히는것 우리 아니지 내가 여태까지 재미없게 무지개색 삼각형이나 검은색 원통을 띄운게 다지만, 이젠 아닙니다 텍스쳐 좌표계 텍스쳐에는 텍스쳐를 제어하기위해서 텍스쳐만의 전용 좌표계가 존재한다 그게 2차원 u,v 좌표계다(s,t좌표계도 있는데, 그건 OpenGL에서 쓰는것이다) u, v 좌표계는 C#으로 3D할 때 했었다, 텍스쳐 부분을 참고하세요 모든 텍스쳐 좌표계는 기본적으로 0.0 ~ 1.0 사이의 실수값을 갖게되고, 이 값의 범위를 넘어서는 경우에 대해서 특별한 처리를 해 줄 수있다. 텍스쳐를 사용하기 위한 준비 1. IDirect3DTexture9 인터페이스 선언 2. 텍스쳐 좌표를 갖는 정점 선언 3. 텍스쳐 생성(일반적으로 파일을 로드하여 생성하..

Graphics/DirectX 2014.06.19

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

ASE Vertex 추가

텍스쳐가 제대로 나오지 않았던 이유는 버텍스 하나에 UV를 여러개 매핑했기 때문이었다. 1. ASE파일의 이해 먼저 규칙을 정해야 합니다... 하나의 점은 하나의 UV좌표를 가진다는 조건입니다. 그럼 점의 수보다 UV수가 많을꺼에요.. 다시 말해서 UV수 만큼 점의 수를 늘려야 겠죠.. 방법은 "TFaces"를 보면 알꺼에여.. UV을 사용한 면의 구성입니다. "FACE_LIST"부분은 점의 면의 구성이죠.. 그럼 이 두가지를 잘 보시면 감이 오실겁니다 자 예를 들어 볼게요 *MESH_VERTEX_LIST { *MESH_VERTEX 0 -22.7053 20.2651 1.4493 *MESH_VERTEX 1 25.6039 20.2651 1.4493 *MESH_VERTEX 2 -22.7053 20.2651 5..

Graphics/3D MAX 2014.06.09

ASE 파일 (ASCII Scene Export)

내가 3D MAX까지 하게될줄은 꿈에도 생각 못했다. 럭셔리한집이네요 그래서 이걸 ASE파일로 저장했다 왜 ASE로 하냐면, 텍스트형태로 저장된 3D 파일이다. 그래서 이걸 가지구 OpenGL ES에서 읽어서 사용할 예정입니다. *3DSMAX_ASCIIEXPORT 200 *COMMENT "AsciiExport 버전 2.00 - Sun Sep 11 15:42:21 2011" *SCENE { *SCENE_FILENAME "house.max" *SCENE_FIRSTFRAME 0 *SCENE_LASTFRAME 100 *SCENE_FRAMESPEED 30 *SCENE_TICKSPERFRAME 160 *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000 *SCENE_AMBIENT_STA..

Graphics/3D MAX 2014.06.09