Microsoft PowerPoint - Week04_Rendering Pipeline.pptx

Similar documents
Microsoft PowerPoint - GameProgramming16-Camera.ppt

<4D F736F F F696E74202D20C1A63134B0AD202D20BBE7BFF8BCF6BFCD20C8B8C0FC>

슬라이드 1

<4D F736F F F696E74202D B30395FBAEDB7BBB5F95FBDBAC5D9BDC7B9F6C6DB5FB1D7B8B2C0DA2E >

슬라이드 1

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

슬라이드 1

Microsoft Word - cg07-midterm.doc

Microsoft Word - cg12-midterm-answer

Open GL

PowerPoint 프레젠테이션

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

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산 (제 2 장. 복소수 기초)

Microsoft PowerPoint - lecture11-ch5.ppt [호환 모드]

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

Microsoft PowerPoint - lecture11-ch5.ppt [호환 모드]

단국대학교멀티미디어공학그래픽스프로그래밍중간고사 (2011 년봄학기 ) 2011 년 4 월 26 일학과학번이름 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤

4.1 힘의모멘트 스칼라공식 4.1 힘의모멘트 스칼라공식 모멘트크기 (resultant moment) 2

Microsoft PowerPoint - chap02.ppt

슬라이드 1

Microsoft PowerPoint - statics_vector_and_matrix(노트).ppt

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/8) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 있는 변환 행렬은 일반적으로 어떤 좌표계 에서 어떤 좌표계로의

Microsoft PowerPoint - ch02-1.ppt

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

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

Microsoft PowerPoint - LA_ch6_1 [호환 모드]

Microsoft PowerPoint - lecture12-ch5.ppt

data

문제지 제시문 2 보이지 않는 영역에 대한 정보를 얻기 위하여 관측된 다른 정보를 분석하여 역으로 미 관측 영역 에 대한 정보를 얻을 수 있다. 가령 주어진 영역에 장애물이 있는 경우 한 끝 점에서 출발하여 다른 끝 점에 도달하는 최단 경로의 개수를 분석하여 장애물의

(Microsoft PowerPoint - CNVZNGWAIYSE.ppt [\310\243\310\257 \270\360\265\345])

Microsoft Word - game08-midterm.doc

Microsoft PowerPoint - lecture12-ch5

Kalman Filter 로 IMU 와 GPS 결합 지구자전효과와중력모델을고려하지않은 INS 설계 KITECH 양광웅작성 관성항법시스템 (INS, Inertial Navigation System) 은 vehicle의초기위치로부터자이로와가속도센서의각속도와가속도를적분하여현

<4D F736F F D20BECBB1E220BDACBFEE20BAA4C5CD2C20C1C2C7A5B0E82C20C1C2C7A5BAAFC8AFC7E0B7C4>

Microsoft PowerPoint - 1학기 11주.ppt [호환 모드]

Microsoft PowerPoint - lecture3-ch2.ppt [호환 모드]

벡터(0.6)-----.hwp

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

LIDAR와 영상 Data Fusion에 의한 건물 자동추출


Çмú´ëȸ¿Ï¼º

2012³â8¿ùÈ£˙ȸš

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.

슬라이드 1

£01¦4Àå-2

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ

PART

Part Part

<4E505F415AB1DBB7CEB9FABAF1C1EEC7C3B7A35FBEE0B0FC E687770>

슬라이드 1

PSFZWLOTGJYU.hwp

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - GameProgramming23-PixelShader.ppt

Microsoft PowerPoint - 13prac.pptx

<4D F736F F F696E74202D20C1A63130B0AD202D20C1F6C7FCB0FA20C7CFB4C3C0C720B7BBB4F5B8B5>

슬라이드 1

작용소의 행렬표현과 그 응용

STATICS Page: 7-1 Tel: (02) Fax: (02) Instructor: Nam-Hoi, Park Date: / / Ch.7 트러스 (Truss) * 트러스의분류 트러스 ( 차원 ): 1. 평면트러스 (planar tru

<4D F736F F F696E74202D203428B8E9C0FB20B9D720C3BCC0FBC0FBBAD0292E BC8A3C8AF20B8F0B5E55D>

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

K&R2 Reference Manual 번역본

초4-1쌩큐기본(정답)본지

Microsoft PowerPoint 힘의과학-Week12-Chapter10(배포용) [호환 모드]

PowerPoint 프레젠테이션

Microsoft PowerPoint - MDA 2008Fall Ch2 Matrix.pptx

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

Microsoft Word - cg07-final.doc

Microsoft PowerPoint - lecture15-ch6.ppt

01이국세_ok.hwp

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

디지털영상처리3

Microsoft PowerPoint - XD Laser Interferometer.ppt

PowerPoint Presentation

chap 5: Trees

Microsoft PowerPoint - IP11.pptx

Microsoft PowerPoint - lecture4-ch2.ppt

Microsoft PowerPoint - lecture19-ch8.ppt

슬라이드 1

chap8.PDF

Microsoft PowerPoint - ch07 - 포인터 pm0415

PowerPoint Presentation

통신이론 2 장주파수해석 성공회대학교 정보통신공학과 1

<B4EBC7D0BCF6C7D02DBBEFB0A2C7D4BCF62E687770>

소성해석

Microsoft PowerPoint - lecture16-ch6

12¿ù 1~30

슬라이드 1

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

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

서피스셰이더프로그램 셰이더개발을쉽게! Thursday, April 12, 12

1 peaieslvfp3 1. 두점사이의거리 수직선위의두점사이의거리를구할수있다. 좌표평면위의두점사이의거리를구할수있다. 수직선위의두점사이의거리 todrkrgo qhqtlek 오른쪽그림은충무로역을중심으로한서울시지하철 3`호선노선도의일부분이다. 충무로역을` 0, 을지로 3`

untitled

<진동의 정의>

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

Microsoft PowerPoint - GameProgramming15-MeshII

고 학년도 9월고수학 1 전국연합학력평가영역문제지 1 1 제 2 교시 수학영역 5 지선다형 3. 두다항식, 에대하여 는? [ 점 ] 1. 의값은? ( 단, ) [ 점 ] 다항식 이 로인수분해될때, 의값은? ( 단,,

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Transcription:

Rendering Pipeline

목 차 Rendering Pipeline 월드변환 뷰변환 후면추려내기 클리핑 투영변환 뷰포트변환 래스터라이즈 카메라제어 카메라디자인 카메라구현 뷰행렬계산 임의의축으로회전 Pitch, Yaw, Roll 걷기, 옆걸음질, 날기 애니메이션및게임실습 2

렌더링파이프라인 월드변환 뷰변환 로컬스페이스월드스페이스뷰스페이스후면추려내기조명 뷰포트변환 투영변환 래스터라이즈 뷰포트 투영 클리핑 애니메이션및게임실습 3

월드변환 로컬스페이스 -> 월드스페이스 위치, 크기, 방위를포함하는각물체간의관계를정의 z z z y y y 애니메이션및게임실습 4

월드변환 변환의연속 = 1 1 1 y y yz yy y z y y y L L L S S S R R R R R R R R R T T T W W W 1 1 1 1 1 1 z z zz zy z z z L S R R R T W 월드좌표계평행이동회전확대축소로컬좌표계좌표계좌표계애니메이션및게임실습 5

월드변환 변환의연속 변환의설정 D3DXMATRIX mattrans, matrotx, matroty; matworld = mattrans * matrotx * matroty; D3DXMATRIX *D3DXMatriMultiply ( D3DXMATRIX* pout, CONST D3DXMATRIX* pm1, CONST D3DXMATRIX* pm2 ) m_pd3ddevice->settransform(d3dts_world, &m_matworld); m_pd3ddevice->settransform(d3dts_view, &m_matview); m_pd3ddevice->settransform(d3dts_projection, &m_matprojection); 애니메이션및게임실습 6

월드변환 행렬의곱은교환법칙이성립하지않음. z z 회전 -> 이동 이동 -> 회전 애니메이션및게임실습 7

월드변환 크기변환 S S S = y S z D3DXMATRIX *D3DXMatriScaling ( D3DXMATRIX *pout, FLOAT s, FLOAT sy, FLOAT sz ) 애니메이션및게임실습 8

월드변환 이동 T 1 1 = 1 T Ty Tz 1 D3DXMATRIX *D3DXMatriTranslation ( D3DXMATRIX *pout, FLOAT, FLOAT y, FLOAT z ) 애니메이션및게임실습 9

월드변환 축에의한회전 R R y D3DXMATRIX *D3DXMatriRotationX 1 ( D3DXMATRIX *pout, cosθ sinθ FLOAT angle ) ( θ ) = sinθ cosθ cosθ sinθ ( θ ) = 1 sinθ cosθ cosθ sinθ ( θ ) = sinθ cosθ 1 R ( z D3DXMATRIX *D3DXMatriRotationY ( D3DXMATRIX *pout, FLOAT angle ) D3DXMATRIX *D3DXMatriRotationZ ) D3DXMATRIX *pout, FLOAT angle 애니메이션및게임실습 1

월드변환 임의의축을중심으로하는회전 D3DXMATRIX *D3DXMatriRotationAis ( D3DXMATRIX *pout, CONST D3DXVECTOR3 *pv, FLOAT Angle ) 애니메이션및게임실습 11

월드변환 Eample D3DXMATRIX cubeworldmatri; D3DXMatriTranslation(&cubeWorldMatri, i bw ldm i -3.f, 3f 2.f, 2f 6.f); 6f) D3DXMATRIX sphereworldmatri; D3DXMatriTranslation(&sphereWorldMatri, 5.f,.f, -2.f); Device->SetTransform(D3DTS_WORLD, &cubeworldmatri); drawcube(); Device->SetTransform(D3DTS_WORLD, &sphereworldmatri); drawsphere(); 애니메이션및게임실습 12

월드변환 예제 : 회전및이동 애니메이션및게임실습 13

월드변환 방위벡터 시선벡터 : 물체가향하고있는방향, z축 상향벡터 : 물체의 y축, 뒤집힘방지 우향벡터 : 물체의뒤집힘방지, 회전 상향 (Up) 시선 (Look) 우향 (Right) 애니메이션및게임실습 14

월드변환 오일러각에의한회전 y yaw pitch D3DXMATRIX *D3DXMatriRotationYawPitchRoll ( D3DXMATRIX *pout, FLOAT yaw, FLOAT pitch, FLOAT roll ) z roll 애니메이션및게임실습 15

월드변환 회전 D3DXMATRIX *D3DXVec3TransformCoord ( D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm ) // 상향벡터중심회전 D3DXVec3TransformCoord(&vLook, &vlook, &matyaw); D3DXVec3TransformCoord(&vRight, &vright, &matyaw); // 우향벡터중심회전 D3DXVec3TransformCoord(&vLook, &vlook, &matpitch); D3DXVec3TransformCoord(&vUp, &vup, &matpitch); // 시선벡터중심회전 D3DXVec3TransformCoord(&vRight, &vright, &matroll); D3DXVec3TransformCoord(&vUp, &vup, &matroll); 애니메이션및게임실습 16

월드변환 벡터의정규화 시선벡터정규화 우향벡터 : 시선벡터와상향벡터의외적 우향벡터정규화 상향벡터 : 시선벡터와우향벡터의외적 상향벡터정규화 D3DXVec3Normalize(&vLook, &vlook); D3DXVec3Cross(&vRight, &vup, &vlook); D3DXVec3Normalize(&vRight, &vright); D3DXVec3Cross(&vUp, &vlook, &vright); D3DXVec3Normalize(&vUp, &vup); 애니메이션및게임실습 17

월드변환 벡터의정규화 D3DXVECTOR3 *D3DXVec3Normalize ( D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *v ) 벡터의외적 D3DXVECTOR3* D3DXVec3Cross3C ( D3DXVECTOR3* pout, CONST D3DXVECTOR3* v1, CONST D3DXVECTOR3* v2 ) 애니메이션및게임실습 18

월드변환 예제 : 오일러각에의한회전 애니메이션및게임실습 19

월드변환 오일러각에의한회전 항상현시점에서의모델좌표계를기준으로회전 회전의결과좌표축방향이바뀐다는점에유의 처음 z 축기준회전결과모델좌표계의, y 축방향이이전과는달라짐 회전을적용하는순서가중요함. 교환법칙이성립하지않음 애니메이션및게임실습 2

월드변환 단점 1. 복합변환의결과를예측하기어려움. 오리엔테이션을보간하기위해서오일러각자체를보간 오일러각 (1, 2, 3) 에의해회전하고회전결과를기준으로 (4, 5, 6) 에의해회전하면, 원래물체를 (5, 7, 9) 에의해회전한것과는다름. 첫번째회전결과좌표축방향이변해버리기때문 애니메이션및게임실습 21

월드변환 단점 2. 김벌락 (Gimbal Lock) 현상 축기준으로그림에표시된방향으로일정각도를회전. 이어서 z 축을기준으로 9 도회전하면 축과 y 축이나란해짐 현재상태에서 y 축을기준으로회전을가하면이전에 축기준으로이미회전한각도에영향을미침. 회전결과, y, z 축이독립성을잃을수있음 애니메이션및게임실습 22

월드변환 단점 3: 오리엔테이션이변하는경로가유일하지않음 y 축을기준 18 도회전 z 축을기준으로 18 도회전 + 축을기준으로 18 도회전 회전각을직접적으로보간해서는오리엔테이션이변하는경로를예측하기어려움. 애니메이션및게임실습 23

월드변환 회전축과회전각을사용 : 회전축은단위벡터로나타냄 애니메이션및게임실습 24

월드변환 사원수 (Quaternion) William Rowan Hamilton : 1843, 복소수의확장 Ken Shoemake : 1985, SIGGRAPH 이용 골격체애니메이션 (Skeletal Animation) 역기구학 (Inverse Kinematics) 3D 물리학 장점 행렬보다적은공간차지 보간 (Interpolation) 에좋음 애니메이션및게임실습 25

월드변환 사원수 (Quaternion) 축 - 각표현을수학적으로개선 축관련변수 3 개와회전각관련변수 1 개를하나의 4 차원변수로 w = 스칼라부 (Scalar Part) 또는실수부 (Real Part) v = 벡터부 (Vector Part) 또는허수부 (Imaginary Part) 단위 4 원수 : 벡터의길이 ( 노름, Norm) = 1 단위사원수 (Unit Quaternion) 만이회전에사용됨. 애니메이션및게임실습 26

월드변환 사원수 (Quaternion) 축각표현과의관계 애니메이션및게임실습 27

월드변환 사원수연산 단위사원수노름값은 1 이므로공액사원수자체가역사원수 애니메이션및게임실습 28

월드변환 사원수 (Quaternion) 애니메이션및게임실습 29

월드변환 사원수 (Quaternion) 공액곱셈 (Conjugate Product) 사원수 q를사용하여실제로회전을가하는작업 원점으로부터물체위의점 p를향한벡터 P P 앞쪽에 q 를곱하고뒤쪽에 q 의공액사원수를곱하여계산 P는 3차원벡터. 이를사원수로만들려면스칼라부분인 w를 으로 애니메이션및게임실습 3

월드변환 사원수에의한보간 사원수 q 1,q 2 에의해연속적으로회전하였다면그결과는원래의물체에대해사원수 q 1 *q 2 으로회전한것과동일 예: 사원수 q 에의해회전하고그결과를다시에의해회전 애니메이션및게임실습 31

월드변환 4차원가상원구 (Hypersphere) p 사원수 q는물체위치가아니라물체오리엔테이션을의미 물체오리엔테이션의보간 원구면을따라가면서사원수를선택 오일러각에의해보간할경우그림 (a) 와유사. 오리엔테이션의변화가매우부자연스러움. 애니메이션및게임실습 32

월드변환 러프 (LERP: Linear interpolation) 애니메이션및게임실습 33

월드변환 슬러프 (SLERP: Spherical Linear interpolation) LERP 의경우오리엔테이션이바뀌는속력이변화함 중심각 θ 를일정하게증가시키면서보간 애니메이션및게임실습 34

월드변환 사원수의보간 중복성 완전히동일한회전을의미함. 원구표면을따라가면서최단경로를택했을때가장자연스러움 그림의경우 q2 을선택 벡터내적에의해선택가능 애니메이션및게임실습 35

월드변환 사원수를이용한회전 D3DQUATERNION *D3DXQuaternionRotationYawPitchRoll ( D3DXQUATERNION *pout, FLOAT yaw, FLOAT pitch, FLOAT roll ) D3DXMATRIX *D3DXMatriRotationQuaternion ( D3DXMATRIX *pout, CONST D3DXQUATERNION *pq ) 애니메이션및게임실습 36

월드변환 예제 : 사원수 애니메이션및게임실습 37

뷰변환 뷰변환 장면에서관찰자의위치와방향기술 모니터를통한장면 열기준 카메라모델 기본모델 회전불가능, 일반적인경우 정교한카메라모델 회전가능, 비행시뮬레이터, 스페이스슈터 애니메이션및게임실습 38

뷰변환 기본모델 상향 (Up) 시선 (Look) D3DXMATRIX *D3DXMatriLookAtLH( D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup ) 우향 (Right) D3DVECTOR3 position(5.f, 3.f, 1.f); D3DVECTOR3 targetpoint(.f,.f,.f); D3DVECTOR3 worldup(.f, 1.f,.f); D3DXMATRIX V; D3DXMatriLookAtLH(&V, &position, &targetpoint, &worldup); Device->SetTransform(D3DTS_VIEW, &V); 애니메이션및게임실습 39

뷰변환 예제 : 카메라회전 애니메이션및게임실습 4

후면추려내기 Backface Culling 후면 전면 관찰점 관찰점 SetRenderState(D3DRS _ CULLMODE, value); D3DCULL_NONE : culling 미사용 D3DCULL_CW : 시계방향두르기 D3DCULL_CCW CCW : 반시계방향두르기 애니메이션및게임실습 41

후면추려내기 예제 : 후면추려내기 애니메이션및게임실습 42

클리핑 시야볼륨외부의기하물체추리기 완전한내부 완전한외부 부분적내부 +Z 내부 외부 교차 +X 애니메이션및게임실습 43

투영변환 원근투영변환 left top bottom znear zfar right 애니메이션및게임실습 44

투영변환 원근투영변환 +Z f D3DXMATRIX *D3DXMatriPerspectiveFovLH ( D3DXMATRIX *pout, FLOAT fovy, // 시야각 FLOAT Aspect, // 종횡비 FOV FLOAT zn, // 가까운사각형까지의거리 n FLOAT zf // 먼사각형까지의거리 ) +X D3DXMATRIX proj; D3DXMatriPerspectiveFovLH(&proj, PI*.5f, (float)width/(float)height, 1.f, 1.f); Device->SetTrasnform(D3DTS SetTrasnform(D3DTS_PROJECTION, &proj); 애니메이션및게임실습 45

뷰포트변환 뷰포트변환 최종적으로각픽셀에매핑되는방법 윈도우의크기, 해상도 typedef struct _D3DVIEWPORT9 { DWORD ; DWORD y; DWORD width; DWORD height; float minz; float maz; } D3DVIEWPORT9;,y width height 애니메이션및게임실습 46

뷰포트변환 뷰포트변환 뷰포트리셋 HRESULT GetViewport(D3DVIEWPORT9 *pviewport); 뷰포트설정 HRESULT SetViewport(D3DVIEWPORT9 t(d3dviewport9 *pviewport); D3DVIEWPORT9 vp = {,, 64, 48,, 1}; Device->SetViewport(&vp); 애니메이션및게임실습 47

뷰포트변환 예제 : 뷰포트변환 애니메이션및게임실습 48

래스터라이즈 래스터라이즈 2D 삼각형 픽셀칼라계산 깊이버퍼계산 Overdrawing 애니메이션및게임실습 49

카메라제어 카메라제어 D3DXMatriLookAtLH 를이용한변환 고정된위치에카메라이동시유용 사용자입력에반응하여카메라이동시불편 1 인칭시점게임에유용한카메라제어기술 애니메이션및게임실습 5

카메라디자인 카메라벡터 위치벡터 : P 방위벡터 (Orientation Vector) 우향벡터 : R 상향벡터 : U 전방벡터 : L 정직교 (orthonormal) U P L R 애니메이션및게임실습 51

카메라디자인 카메라동작 우향벡터를기준으로회전 (pitch) 상향벡터를기준으로회전 (yaw) 전방벡터를기준으로회전 (roll) 우향벡터방향으로이동하기 상향벡터방향으로날기 전방벡터방향으로이동하기 class Camera 애니메이션및게임실습 52

카메라구현 뷰행렬계산하기 ) ( ) ( ) ( ) ( l l l l u u u u r r r r p p p p = = = = 위치우향상향전방 ),, ( ),,, ( ),,, ( ),,, ( z y z y z y z y l l l l u u u u r r r r p p p p = = = = A B C B C C D A C A D D 애니메이션및게임실습 53 월드스페이스내의물체와카메라시점을원점으로이동 z- 축과정렬되도록시점회전

카메라구현 뷰행렬계산하기 V : 변환행렬 pv=(): (,,) 행렬 V 는카메라를원점으로이동 rv = (1,,) : 행렬 V는우향벡터를월드 축과정렬 uv = (,1,) : 행렬 V는상향벡터를월드 y축과정렬 lv = (,,1) : 행렬 V는전방벡터를월드 z축과정렬 V 행렬구하기 카메라의위치를원점으로이동하는이동파트 카메라벡터를월드의축과정렬하는회전파트 애니메이션및게임실습 54

카메라구현 이동 -p 1 1 = 1 1 1 z y p p p T z y p p p 애니메이션및게임실습 55

카메라구현 회전 우향 : 월드의 상향 : 월드의 y 전방 : 월드의 z 위조건을만족하는 A 행렬 애니메이션및게임실습 56

카메라구현 회전 ra = a a 1 2 [ r,, ] ry rz a1 a11 a12 = [ 1,, ] a a a a ua =, y z 1 11 a12 a 2 a21 a22 2 a 21 1 2 [ u u, u ] a a = [, 1, ] a a 22 la = a a 1 2 [ l,, ] ly lz a1 a11 a12 = [,, 1] a 2 a 21 a a 22 애니메이션및게임실습 57

카메라구현 회전 1 = = 1 1 1 22 21 2 12 11 1 2 1 a a a a a a a a a l l l u u u r r r BA z y z y z y 22 21 2 z y I BB BA = = 1 = = = y y y T l u r l u r A B B 1 z z z y y y l u r l u 애니메이션및게임실습 58

카메라구현 이동과회전조합 void Camera::getViewMatri() l u r l u r 1 V l l u r l u r l u r l u r TA z z z y y y z z z y y y = = = 1 1 1 1 1 l p u p r p p p p z y 1 1 1 애니메이션및게임실습 59

카메라구현 임의의축으로회전하기 D3DXMATRIX *D3DXMatriRotationAis( D3DXMATRIX *pout, // 회전행렬 CONST D3DXVECTOR3 *pv, // 회전기준축 FLOAT Angle // 회전각도 ( 라디안 ) ) D3DXMATRIX R; D3DXVECTOR3 ais(.77f,.77f,.f); D3DXMatriRotationAis(&R, &ais, D3DX_PI/2.f); 애니메이션및게임실습 6

카메라구현 Pitch void Camera::pitch(float angle) { D3DXMATRIX T; D3DXMatriRotationAis(&T, &_right, angle); } // _right를기준으로 _up과 _look을회전 D3DXVec3TransformCoord(&_up, &_up, &T); D3DXVec3TransformCoord(&_look, &_look, &T); 애니메이션및게임실습 61

카메라구현 Yaw void Camera::yaw(float angle) { D3DXMATRIX T; // 지상의물체에대해서는월드 y를기준으로회전 if(_cameratype == LANDOBJECT) D3DXMatriRotationY(&T, angle); // 비행물체에대해서는원래의상향벡터를기준으로로회전 if(_cameratype == AIRCRAFT) D3DXMatriRotationAis(&T, &_up, angle); } D3DXVec3TransformCoord(&_right &_right, &T); D3DXVec3TransformCoord(&_look, &_look, &T); 애니메이션및게임실습 62

카메라구현 Roll void Camera::roll(float angle) { // 비행타입일경우에만회전 if(_cameratype == AIRCRAFT) { D3DXMATRIX T; D3DXMatriRotationAis(&T, &_look, angle); } } D3DXVec3TransformCoord(&_right &_right, &T); D3DXVec3TransformCoord(&_up, &_up, &T); 애니메이션및게임실습 63

카메라구현 걷기 void Camera::walk(float units) { } if(units==) return; // 지상의물체는 z 평면으로움직임을제한 if(_cameratype==ladobject) { D3DXVECTOR3 dir; D3DXVec3Cross(&dir, &_right, &WORLD_UP); _pos += D3DXVECTOR3(dir.,.f, dir.z) * units; } if(_cameratype == AIRCRAFT) _pos += _look*units; 애니메이션및게임실습 64

카메라구현 옆걸음질 void Camera::strafe(float units) { // 지상의물체는 z 평면으로움직임제한 if(_cameratype == LANDOBJECT) _pos += D3DXVECTOR3(_right., f.f, _right.z) * units; if(_cameratype == AIRCRAFT) _pos += _right * units; } 애니메이션및게임실습 65

카메라구현 날기 void Camera::fly(float units) { } // 비행물체에만적용 if(_cameratype == AIRCRAFT) _pos += _up * units; 애니메이션및게임실습 66

카메라 예제 애니메이션및게임실습 67

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