가자 ! 3d 로 !!! 두번째 강좌

15
가가 ! 3D 가 !!! 가가가 가가 3 강 GPL3D 강 - 강강 - By Gp2k

Upload: maia

Post on 19-Jan-2016

59 views

Category:

Documents


0 download

DESCRIPTION

가자 ! 3D 로 !!! 두번째 강좌. 3 강 GPL3D 路 - 하제 - By Gp2k. GPL Pipe line. Camera Transform. World Transform. Fog State. Flipping. Rasterizier. 구성 컴포넌트. CGPL3D 화면의 출력과 프리미티브 들을 다룸 CCAMERA 카메라를 제어함 CGPL3D 에 종속적 CGMLOADER 맥스 익스포팅 파일 로드 (*.gm) 오브젝트 관련 매소드 제공. CGPL3D. Primitives Board - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 가자 ! 3D 로 !!! 두번째 강좌

가자 ! 3D 로 !!!두번째 강좌

3 강 GPL3D 路- 하제 -

By Gp2k

Page 2: 가자 ! 3D 로 !!! 두번째 강좌

GPL Pipe line

CameraTransform

WorldTransform

RasterizierFlipping

Fog State

Page 3: 가자 ! 3D 로 !!! 두번째 강좌

구성 컴포넌트

CGPL3D화면의 출력과 프리미티브 들을 다룸

CCAMERA카메라를 제어함CGPL3D 에 종속적

CGMLOADER맥스 익스포팅 파일 로드 (*.gm)

오브젝트 관련 매소드 제공

Page 4: 가자 ! 3D 로 !!! 두번째 강좌

CGPL3D

PrimitivesBoard

XZ 축에 수직으로 서있는 3D 판넬생성 : CreateBlankBoard()

BillBoard항상 카메라를 바라보는 3D 판넬Board 의 일종생성 : CreateAniBillboard(), CreateBillboardFromFile(), CreateBillboardFromTexture()

출력 : RenderBillboard(), RenderBillboardRot()

Page 5: 가자 ! 3D 로 !!! 두번째 강좌

CGPL3D

PrimitivesPlane

XZ 평면에 수평한 평면생성 : CreateBlankPlane(), CreateAniPlane(), CreatePlane()

출력 : RenderPlane()

2D Panel3D 와 무관하게 2D 로 찍는 판넬보통 인터페이스를 만들 때 사용생성 : Create2DPanel…()

출력 : Render2DPanel()

Page 6: 가자 ! 3D 로 !!! 두번째 강좌

CGPL3DMaterial and Texture

MaterialMaterial 의 타입을 설정현재 Default/Light 두 가지 모드만 적용SetMaterial()

Texture현재 사용될 텍스쳐 파일을 설정SetTexture()

Direct 3D InterfaceDirect 3D Device

m_pd3dDevice

Texture Output Interfacem_pd3dDevice

Page 7: 가자 ! 3D 로 !!! 두번째 강좌

CCAMERA카메라 이동

상대 좌표 이동MoveVec()

절대 좌표 이동Movexyz()

카메라 속성Zoom(), GetBillBoardMatrix(), SetDirection(), MoveHeadUpDown()

User InterfaceMoveToCenter()MousePos2XZPlane()

Page 8: 가자 ! 3D 로 !!! 두번째 강좌

CCAMERA

Visibility화면에 보이는지 여부를 판단

MakeFrust(), IsIn(), IsInSphere()

CGPL3D 와 연동GetCameraMatrix() 를 통해 연결

Page 9: 가자 ! 3D 로 !!! 두번째 강좌

CGMLOADER

GM 파일 만드는 법맥스에서 Export*.ase 로 저장ASE2GM 으로 변환

로딩LoadGM(), LoadGM_NoVB()

렌더링Render()

기타 LOD 구현 및 충돌 체크 등을 추가로 지원할 예정

Page 10: 가자 ! 3D 로 !!! 두번째 강좌

ALL IN ONE

CGPL3D 초기화DX 초기화

Cgpl3d = new CGPL3D(hWnd, 640, 480, TRUE);

Fog SettingCgpl3d->SetFog(30.0f, 80.0f, D3DCOLOR_XRGB(0,0,0));

CCAMERA 초기화스크롤 범위 기반 초기화

Cam = new CCAMERA(Cgpl3d, D3DXVECTOR3(-100,-100,-100), D3DXVECTOR3(100,100,100));

위치 선정Cam->Movexyz(0.0f,30.0f,-30.0f);Cam->SetDirection(D3DXVECTOR3(0.0f, -1.0f, 1.0f));

Page 11: 가자 ! 3D 로 !!! 두번째 강좌

ALL IN ONE

객체 생성Plane

ground = Cgpl3d->CreatePlane(100,100, makeRectFloat(0.0f, 0.0f, 1.0f, 1.0f), PLANE_CENTER_CENTER, "ground.tga");

BillBoardtree = Cgpl3d->CreateBillboardFromFile(15.0f, 15.0f, frect, "cactus.tga");

GMCObj = new CGMLOADER(Cgpl3d);

CObj->LoadGM("y1-4.GM");

Page 12: 가자 ! 3D 로 !!! 두번째 강좌

ALL IN ONE

출력프레임 고정

FRAME_LOCK(10); -> 한 프레임당 10ms 딜레이

카메라와 CGPL3D 바인딩Cgpl3d->SetViewMatrix(Cam);

그리기 시작Cgpl3d->BeginDraw();

재질 설정Cgpl3d->SetMaterial(MATERIAL_DEFAULT);

Page 13: 가자 ! 3D 로 !!! 두번째 강좌

ALL IN ONE

출력Plane

Cgpl3d->RenderPlane(&ground, D3DXVECTOR3(0.0f, 0.0f, 0.0f), 0);

BillboardCgpl3d->RenderBillboard(&tree, TreePosList[i], 0);

GMCObj->Render(&mat);

그리기 완료Cgpl3d->EndDraw();

Page 14: 가자 ! 3D 로 !!! 두번째 강좌

Make it real!!!

관성과 마찰을 적용좀 더 현실적인 Interaction부드러운 움직임

물체의 자유로운 이동을 위한 Tip임의의 각으로 이동

T = rotY(Θ)vecPos += T(||vDir||) * velocity

World Transform 에서 간단히 Translation 을 구현Mat_41 = x 좌표Mat_42 = y 좌표Mat_43 = z 좌표

Page 15: 가자 ! 3D 로 !!! 두번째 강좌

정치적 발언GPL3D 라이브러리에 대한 문서는 빠른 시일 내에 제공해 드릴 것을 약속드림 .

다음주부터 Fantastc 한 게임을 만들어 보아요 ~

GPL3D 가 lib 형태로 바뀌었습니다 .강력한 Abstraction Barrier 로 기술 유출을 방지할 수 있습니다 .( 할게 있나 -_-;)

배포하여 라이센스 받읍시다 ..~~~ 읔… -_- 퍽 ;;

새로 나온 GPL3D 라이브러리를 받아가셈 ~~~