Microsoft PowerPoint - Week04_DirectX9 프로그래밍의 기초2.pptx

Similar documents
Microsoft PowerPoint - GameProgramming15-MeshII

Microsoft PowerPoint - Week03_DirectX9 프로그래밍의 기초.pptx

<4D F736F F F696E74202D B30395FBAEDB7BBB5F95FBDBAC5D9BDC7B9F6C6DB5FB1D7B8B2C0DA2E >

Microsoft PowerPoint - GameProgramming23-PixelShader.ppt

Microsoft PowerPoint - Class10_LOD와자료구조.pptx

KNK_C_05_Pointers_Arrays_structures_summary_v02

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

(Microsoft PowerPoint - \301\24608\260\255 - \261\244\277\370\260\372 \300\347\301\372)

PowerPoint 프레젠테이션

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - animation

Microsoft PowerPoint - lecture16-ch6

Microsoft PowerPoint - 04-Model Class.pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

Łø·ŸÕ=¤ ¬ ÇX±xÒ¸ 06 - Èpº– 1

(Microsoft PowerPoint - \301\24615\260\255 - \303\346\265\271\303\263\270\256)

Microsoft PowerPoint - Week04_Rendering Pipeline.pptx

Microsoft PowerPoint - 05geometry.ppt

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Microsoft PowerPoint - lecture15-ch6.ppt

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

Microsoft PowerPoint - Chapter_04.pptx

PowerPoint 프레젠테이션

data

디지털영상처리3

02장.배열과 클래스

슬라이드 1

Slide 1

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Chapter #01 Subject

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

PowerPoint Presentation

11장 포인터

(Microsoft PowerPoint - \301\24613\260\255 - oFusion \276\300 \261\270\274\272)

기초컴퓨터프로그래밍

Tcl의 문법

쉽게 풀어쓴 C 프로그래밍

Lab 3. 실습문제 (Single linked list)_해답.hwp

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

Microsoft Word - cg07-midterm.doc

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - 10terrain.ppt

API 매뉴얼

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx

슬라이드 1

Microsoft PowerPoint - chap10-함수의활용.pptx

10장. 구조체

<4D F736F F F696E74202D20C1A63037B0AD202D20B1A4BFF8B0FA20B1D7B8B2C0DA>

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

윤성우의 열혈 TCP/IP 소켓 프로그래밍

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft Word - cg12-midterm-answer

Microsoft PowerPoint - a10.ppt [호환 모드]

BMP 파일 처리

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

번에프린팅가능하다 하지만 대부분의보급형 차원프린터는대부분 센티미터를넘지않는프린팅볼륨을가지고있어서출력할객체의크기에제한을받는다 따라서차원프린터의활용도를높이고차원프린팅기술을다양한응용분야에적용하기위해서는 차원프린터가지원하는출력공간의크기보다큰물체를출력할필요가있다 일반사용자가산업

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap-11.pptx

UI TASK & KEY EVENT

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Microsoft PowerPoint - 07_(C_Programming)_(Korean)_Composite_Data_Types

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - chap12-고급기능.pptx

슬라이드 1

슬라이드 1

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/7) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 답 안지 공간이 부족할 경우, 답안지 뒷면에 기술 하고, 해당

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

11장 포인터

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

설계란 무엇인가?

디지털영상처리3

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

PowerPoint 프레젠테이션

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

금오공대 컴퓨터공학전공 강의자료

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

OCW_C언어 기초

PowerPoint Presentation

슬라이드 1

UI TASK & KEY EVENT

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

1장 윈도우 프로그래밍 들어가기

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

MATLAB for C/C++ Programmers

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Transcription:

DirectX9 프로그래밍의기초 2

목 차 파일포맷 ID3DXBuffer 사용하기 경계볼륨 애니메이션및게임실습 2

3D Modeler 3DS Max LightWave 3D Maya 메쉬데이터 기하정보 재질 애니메이션 애니메이션및게임실습 3

.X DirectX 에서사용하는파일포맷 파일처리함수를 DirectX 가제공 파일종류 ASCII Binary Binary Compressed 애니메이션및게임실습 4

파일포맷 사용자정의데이터형 X 파일은사용자에의해정의된템플릿에의해동작 템플릿은데이터개체가어떻게저장되어야하는지를정의 계층적관계 선택적멤버 : 템플릿이허용하는데이터타입들. 선택적멤버들은데이터개체의자식멤버로저장됨 자식멤버 : 다른데이터개체, 다른개체의참조, 이진데이터 애니메이션및게임실습 5

square.x 애니메이션및게임실습 6

헤더 xof 0303txt 0032 파일의시작 : xof 버전 : 03.03 파일포맷 : txt, bin, tzip, bzip 부동소수점데이터타입 : 0032, 0064 애니메이션및게임실습 7

메시 Mesh Square { 정점의수정점정보면의수면정보메시재질리스트 } Mesh Square { 8; // 정점의수 1.0; 1.0; 0.0;, // vertice 0-1.0; 1.0; 0.0;, // vertice 1-1.0;-1.0; 0.0;, // vertice 2 10 1.0;-1.0; 10 00 0.0; // vertice 3 1.0; 1.0; 0.0;, // vertice 4 1.0;-1.0; 0.0;, // vertice 5-1.0;-1.0; ; 0.0;, // vertice 6-1.0; 1.0; 0.0;; // vertice 7 4; // 면의수 3;0,1,2;, // triangle #1 3023 3;0,2,3;, //ti triangle #2 3;4,5,6;, // triangle #3 3;4,6,7;; // triangle #4 } 애니메이션및게임실습 8

메시재질리스트 MeshMaterialList 는매시개체의자식개체로서메시개체의일부로동작 재질의개수, 면의개수, 재질 MeshMaterialList { 1; // one material 4; // one face 0, // face #0 use material #0 0, // face #1 use material #0 0, // face #2 use material #0 0;; // face #3 use material #0 } 애니메이션및게임실습 9

재질 재질의색, 힘, 반사광색상, 발광색상 Material { // material #0 00;10;05;10;; 0.0;1.0;0.5;1.0;; // face color 0.0; // power 0.0;0.0;0.0;; // specular color 0.0;0.0;0.0;; // emissive color } 애니메이션및게임실습 10

square2.x 애니메이션및게임실습 11

VertexDuplicationIndices 메시한개당하나씩생성 메시내의어떤정점들이중복되는지에대한정보 매끄러운부분혹은재질경계에서발생 메시단순화프로그램에서사용 애니메이션및게임실습 12

법선벡터 MeshNormals { 8; 0.000000;0.000000;1.000000;, 0.000000;0.000000;1.000000;, 0.000000;0.000000;1.000000;, 0.000000;0.000000;1.000000;, 0.000000;0.000000;-1.000000;, 0.000000;0.000000;-1.000000;, 0.000000;0.000000;-1.000000;, 000000;0 000000;-1 000000; 0.000000;0.000000;-1.000000;; 4; 3;0,1,2;, 3;0,2,3;, 3;4,5,6;, 3;4,6,7;; } 애니메이션및게임실습 13

텍스처 Material 개체의멤버로 TextureFilename 개체생성 Material GreenMat { 0.0;1.0;0.0;1.0;; 0.0; 0.0;0.0;0.0;; 0.0;0.0;0.0;; } TextureFilename { "wall.bmp"; } 애니메이션및게임실습 14

텍스처좌표매핑 MeshTextureCoords { MeshTextureCoords { 8; // 4 texture coords 4; 1.0; 1.0;, // coord 0 1.0; 0.0;, // coord 1 0.0; 0.0;, // coord 2 0.0; 1.0;; // coord 3 1.0; 1.0;, // coord 0 1.0; 0.0;, // coord 1 0.0; 0.0;, // coord 2 0.0; 1.0;; // coord 3 1.0; 1.0;, // coords 4 } } 1.0;-1.0;, 1.0;, // coords 5-1.0;-1.0;, // coords 6-1.0; 1.0;; // coords 7 MeshTextureCoords { 4; 1.0; 1.0;, // coord 0-1.0; 0.0;, // coord 1-1.0; -1.0;, // coord 2 1.0; -1.0;; // coord 3 } 애니메이션및게임실습 15

square3.x 애니메이션및게임실습 16

boidy.x 애니메이션및게임실습 17

boidy.x 애니메이션및게임실습 18

변환행렬 프레임 : 물체의각부분을별개로움직이게하려면모델을여러개의프레임으로구분 전차 : 포 상하좌우, 바퀴, 궤도 Frame SQUARE_Root { FrameTransformMatrix { 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000;; } } 애니메이션및게임실습 19

AnimationSet Positionkey 0:scaling 1 : rotation 2 : translation 4 : matrix 애니메이션및게임실습 20

AnimationSet AnimationSetMoveX{ Animation{ AnimationKey{ 4;//Positionkeys 5;//5keys 0;16;10000000 0;16;1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.1,0.0,0.0,1.0;;,,, 80;16;1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 02000010;; 0.2,0.0,0.0,1.0;;, 애니메이션및게임실습 21

AnimationSet } } 160;16;1.0,0.0,0.0,0.0, 00100000 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.3,0.0,0.0,1.0;;, 240;16;1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.2,0.0,0.0,1.0;;, 320;16;1.0,0.0,0.0,0.0, 0 000000 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.1,0.0,0.0,1.0;;, } {SQUARE_Root} 애니메이션및게임실습 22

square4.x 애니메이션및게임실습 23

ID3DXBuffer 연속적인메모리블록에데이터를저장하기위해이용하는범용데이터구조체 LPVOID GetBufferPointer() : 데이터의시작포인터 DWORD GetBufferSize() : 버퍼크기 데이터형변환 DWORD* info = (DWORD*)adjacencyInfo->GetBufferPointer(); () D3DXMATERIAL* mtrl = (D3DXMATERIAL*)mtrlBuffer->GetBufferPointer(); adjacencyinfo->release(); mtrlbuffer->release(); 애니메이션및게임실습 24

ID3DXBuffer HRESULT D3DXCreateBuffer ( DWORD NumBytes, LPD3DXBUFFER *ppbuffer ); // 버퍼의크기 // 생성된버퍼 ID3DXBuffer* buffer = 0; D3DXCreateBuffer(4*sizeof(int), &buffer); 애니메이션및게임실습 25

Load HRESULT D3DXLoadMeshFromX ( LPCSTR pfilename, // 명 DWORD Options, // 생성플래그 LPDIRECT3DDEVICE9 pdevice, // 메쉬연결장치 LPD3DXBUFFER **ppadjacency, // 메쉬접근정보 LPD3DXBUFFER **ppmaterials, // 메쉬재질정보 LPD3DXBUFFER **ppeffectinstances, // 이펙트개체 : 0 PDWORD pnummaterials, // 메쉬의재질수 LPD3DXMESH *ppmesh // 메쉬 ) 애니메이션및게임실습 26

재질 텍스처데이터의파일명소유 typedef struct D3DXMATERIAL { D3DMATERIAL9 MatD3D; LPSTR ptexturefilename; } // 재질구조체 // 텍스처파일명 애니메이션및게임실습 27

정점법선생성 조명을위해정점법선생성필요 HRESULT D3DXComputeNormals ( LPD3DXBASEMESH pmesh, const DWORD *padjaceny ) // 메쉬 // 인접정보 법선평균이용 인접정보를이용하여중복정점제거 인접정보부재시중복정점도같이계산 정점포맷 : D3DFVF_NORMAL 애니메이션및게임실습 28

정점법선생성 // 메쉬가정점포맷으로 D3DFVF_NORMAL을가지고있는가? if(!(pmesh->getfvf() GtFVF() & D3DFVF_NORMAL)) { // 새메쉬를복제하고포맷으로 D3DFVF_NORMAL 추가 ID3DXMesh* ptempmesh p = 0; pmesh->clonemeshfvf( D3DXMESH_MANAGED, pmesh->getfvf() D3DFVF_NORMAL, Device, &ptempmesh); // 법선계산 D3DXComputeNormals(pTempMesh, p 0); } pmesh->release(); pmesh = ptempmesh; // 기존메쉬제거 // 새메쉬저장 애니메이션및게임실습 29

예제 애니메이션및게임실습 30

경계볼륨 경계볼륨 원기둥, 타원면, 마름모꼴, 캡슐형 구, 상자 애니메이션및게임실습 31

경계볼륨 경계볼륨 가시성테스트 메쉬의경계볼륨이보이지않는다면메쉬역시보이지않음 충돌테스트 미사일과메쉬의경계볼륨간의충돌검출 애니메이션및게임실습 32

경계볼륨 경계볼륨 HRESULT D3DXComputeBoundingSphere( LPD3DXVECTOR3 pfirstposition, iti // 정점배열의첫번째정점 DWORD NumVertices, // 정점의수 DWORD dwstride, // 정점저장크기 D3DXVECTOR3* pcenter, // 경계구체의중심 FLOAT* pradius // 경계구체의반지름 ); HRESULT D3DXComputeBoundingBox( LPD3DXVECTOR3 pfirstposition, DWORD NumVertices, DWORD dwstride, D3DXVECTOR3* pmin, D3DXVECTOR3* pmax ); // 정점배열의첫번째정점 // 정점의수 // 정점저장크기 // 최소점 // 최대점 애니메이션및게임실습 33

경계볼륨 예제 애니메이션및게임실습 34

Question? 애니메이션및게임실습 35