강의 내용 : 카메라 DirectX 9 을 이용한 게임 개발 기본 코스. 목 차 카메라 요구사항 구현.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

Billboard copyright
수학을 통해 배우는 IT 과학의 세계 전북대: 한상언 교수.
목차 Contents 무선인터넷용 비밀번호 설정방법 Windows 7 Windows 8 Windows XP MAC OS.
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
OpenCV 안드로이드 연동 환경설정 OpenCV-Android 를 다운 받습니다.
대림대학교 2017년도 1학기 강의 왕보현 순서도와 스크래치 5주차 대림대학교 2017년도 1학기 강의 왕보현
2장 렌더링 파이프라인 목표 Direct3D에서 3D 물체를 표현하는 방법을 배운다. 가상카메라를 모델링하는 방법을 배운다.
순차, 조건, 반복 이점숙 같은 문제 다르게 해결하기 순차, 조건, 반복 이점숙
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
최윤정 Java 프로그래밍 클래스 상속 최윤정
3차시: 인터랙티브 콘텐츠 만들기 소요시간: 45분 준비물 홀로그램 키트 스마트폰 SPL3D 편집기 저작툴.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 9 장 구조체와 공용체.
수치해석 6장 예제문제 환경공학과 천대길.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
openGL Project 제안서 - 해상 전투
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
12장 유연한 카메라 클래스 만들기 한성대학교 멀티미디어공학과 게임 프로그래밍-I 강의노트
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
상관함수 correlation function
프로그래밍 랩 – 7주 리스트.
픽킹 문시몬.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
어서와 C언어는 처음이지 제14장.
벡터의 공간 이문현.
OPENGL Project 계획서 (알카포네의 다이어트)
영상처리 실습 인공지능연구실.
24장. 파일 입출력.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
2D게임 프로그래밍 1차 발표 자료 정재훈.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
USN(Ubiquitous Sensor Network)
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
인터넷응용프로그래밍 JavaScript(Intro).
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2D Game Programming Project 1
8장. spss statistics 20의 데이터 변환
인체 대 탐험 3D GAME ENGINE 게임 공학과 이성진.
P 등속 직선 운동 생각열기 – 자동차를 타고 고속도로를 달릴 때, 속력계 바늘이 일정한 눈금을 가리키며 움직이지 않을 때가 있다. 이 때 자동차의 속력은 어떠할까? ( 속력이 일정하다 .)
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Fitting / Matrix / Excel
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
12. 상속 : 고급.
객체기반 SW설계 팀활동지 4.
01 로그의 정의 ⑴ 일 때, 양수 에 대하여 을 만족시키는 실수 는 오직 하나 존재한다. 이때 를
Real time Interaction HyoungSeok Kim
서울대학교 컴퓨터공학부 김명수 행렬과 2차원 변환 서울대학교 컴퓨터공학부 김명수
구조체 (Structure).
Flow Diagram IV While.
컴퓨터 구성요소와 사용 컴퓨터 문서 작업 인터넷 활용
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
3차 발표: 양궁 게임 학번: , 이름: 조형윤, 박지훈.
1. 접선의 방정식 2010년 설악산.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
9 브라우저 객체 모델.
2D 게임프로그래밍 프로젝트 - Air Clear 심석용.
OpenGL 프로젝트 「링 통과하기」 게임&멀티미디어 이인석.
2D Game Programming 1차 발표 배강산.
김덕용 게임 엔진론 Project 2차발표.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
수치해석 ch3 환경공학과 김지숙.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
: 3차원에서 입자의 운동 방정식 제일 간단한 경우는 위치만의 함수 : 시간, 위치, 위치의 시간미분 의 함수
7 생성자 함수.
6 객체.
BoardGame 보드게임 따라가기.
Presentation transcript:

강의 내용 : 카메라 DirectX 9 을 이용한 게임 개발 기본 코스

목 차 카메라 요구사항 구현

카메라의 이동

Matrix 월드 행렬 – 화면세상 속에 물체를 위치시킴 – g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld ); 뷰 - 행렬 – 관찰자의 위치와 방향을 설정 – g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView ); 프로젝션 행렬 – 렌즈의 특성의 설정 – g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );

View Matrix 의 목적 World 좌표계의 한 정점 p(x,y,z) 가 있다 점 p 의 관찰자 ( 카메라 ) 기준 좌표는 (x’,y’,z’) 라 하 자. (x’, y’, z’, 1) = V (x, y, z, 1) 이 되는 4x4 행렬 V 를 View Matrix 라고 한다. View Matrix 를 구했다면 View 변환이 행렬 곱셈 한번으로 종료되므로 매우 좋다. 사용자로부터 입력을 받아 View Matrix 를 계산해 야 한다. – 계산해주는 DX 함수가 존재한다. – D3DXMatrixLookAtLH

View & Projection D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec ); – D3DTS_VIEW vFromPt : 카메라 위치 vLookatPt : 카메라가 보는 지점 vUpVec : 카메라 업 벡터 D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, f ); – D3DTS_PROJECTION fovy, zn, zf fovy 는 Y 축 방향의 Field of View. 이번 시간에는 View 만 다룬다.

카메라 관리 클래스의 필요성 View Matrix 를 구하려면 다음의 정보가 필요 – 카메라 위치, 카메라가 보는 지점, 업벡터 일상적인 카메라 움직임을 구현할 때 복잡함 – 카메라가 주인공을 응시하며 회전한다면 추가 자료를 포함하여 카메라 클래스 관리 – 회전, 평행이동 등의 일상 변화에 대응 Camera.h 의 변수 부분을 확인 – Eye, LookAt, Up ( 기본 변수 ) – vView, vCross ( 추가 변수, 기본 변수에서 계산 ) – matView ( 결과 저장 변수 )

카메라 카메라 좌표계의 축을 산출하는 방법 – vLookAt, vEye, vUp 이 주어진다고 가정 – vView 와 vCross 를 구한다. 문제 – 카메라가 앞으로 전진한다. – vLoookAt, vEye, vUp 은 어떻게 변화되는가 ?

카메라 카메라 좌표계의 축을 산출하는 방법 /// 카메라 좌표계의 Z 축방향으로 dist 만큼 전진한다.( 후진은 -dist 를 넣으면 된 다.) D3DXMATRIXA16* ZCamera::MoveLocalZ( float dist ) { D3DXVECTOR3 vNewEye = m_vEye; D3DXVECTOR3 vNewDst = m_vLookat; D3DXVECTOR3 vMove; D3DXVec3Normalize( &vMove, &m_vView ); vMove *= dist; vNewEye += vMove; vNewDst += vMove; // 질문 : 왜 보는 지점도 움직여야 할까 ? return SetView( &vNewEye, &vNewDst, &m_vUp ); }

카메라 카메라 좌표계의 회전행렬 유도 방법 문제. 카메라가 vUp ( 키 방향 ) 을 중심으로 회전 – vLoookAt, vEye, vUp 은 어떻게 변화되는가 ?

카메라 카메라 좌표계의 회전행렬 유도 방법 /// 카메라 좌표계의 Y 축으로 angle 만큼 회전한다. D3DXMATRIXA16* ZCamera::RotateLocalY( float angle ) { D3DXMATRIXA16 matRot; D3DXMatrixRotationAxis( &matRot, &m_vUp, angle ); D3DXVECTOR3 vNewDst; D3DXVec3TransformCoord( &vNewDst, &m_vView, &matRot ); // view * rot 로 새로운 dst vector 를 구한다. vNewDst += m_vEye; // 실제 dst position = eye Position + dst vector return SetView( &m_vEye, &vNewDst, &m_vUp ); }

카메라 클래스 사용방법 전역객체의 포인터를 선언 ZCamera* g_pCamera = NULL; // Camera 클래스 WinMain() 함수에서 객체를 생성 g_pCamera = new ZCamera; 초기화는 다음과 같이 한번만 해준다. g_pCamera->SetView( &vEyePt, &vLookatPt, &vUpVec ); 마우스 또는 키보드 입력이 있으면 g_pCamera 의 함수를 부른다. – g_pCamera->MoveLocalZ(1); 렌더링 수행 전에 카메라의 행렬을 얻어 DirectX 에 전달한다. – g_pd3dDevice->SetTransform( D3DTS_VIEW, g_pCamera - >GetViewMatrix( ));

실습 현재 코드를 수정하여 – 좌 / 우 화살표가 눌리면 옆걸음 ( 게걸음 ) 을 하도록 – Q/E 키가 눌리면 고개를 좌우로 기울이는 효과 (vView 중심축으로 회전 ) – 그 외 여러 효과 구현 호랑이 등에 타고 가는 카메라