Download - 가자 ! 3D 로 !!! 두번째 강좌
가자 ! 3D 로 !!!두번째 강좌
3 강 GPL3D 路- 하제 -
By Gp2k
GPL Pipe line
CameraTransform
WorldTransform
RasterizierFlipping
Fog State
구성 컴포넌트
CGPL3D화면의 출력과 프리미티브 들을 다룸
CCAMERA카메라를 제어함CGPL3D 에 종속적
CGMLOADER맥스 익스포팅 파일 로드 (*.gm)
오브젝트 관련 매소드 제공
CGPL3D
PrimitivesBoard
XZ 축에 수직으로 서있는 3D 판넬생성 : CreateBlankBoard()
BillBoard항상 카메라를 바라보는 3D 판넬Board 의 일종생성 : CreateAniBillboard(), CreateBillboardFromFile(), CreateBillboardFromTexture()
출력 : RenderBillboard(), RenderBillboardRot()
CGPL3D
PrimitivesPlane
XZ 평면에 수평한 평면생성 : CreateBlankPlane(), CreateAniPlane(), CreatePlane()
출력 : RenderPlane()
2D Panel3D 와 무관하게 2D 로 찍는 판넬보통 인터페이스를 만들 때 사용생성 : Create2DPanel…()
출력 : Render2DPanel()
CGPL3DMaterial and Texture
MaterialMaterial 의 타입을 설정현재 Default/Light 두 가지 모드만 적용SetMaterial()
Texture현재 사용될 텍스쳐 파일을 설정SetTexture()
Direct 3D InterfaceDirect 3D Device
m_pd3dDevice
Texture Output Interfacem_pd3dDevice
CCAMERA카메라 이동
상대 좌표 이동MoveVec()
절대 좌표 이동Movexyz()
카메라 속성Zoom(), GetBillBoardMatrix(), SetDirection(), MoveHeadUpDown()
User InterfaceMoveToCenter()MousePos2XZPlane()
CCAMERA
Visibility화면에 보이는지 여부를 판단
MakeFrust(), IsIn(), IsInSphere()
CGPL3D 와 연동GetCameraMatrix() 를 통해 연결
CGMLOADER
GM 파일 만드는 법맥스에서 Export*.ase 로 저장ASE2GM 으로 변환
로딩LoadGM(), LoadGM_NoVB()
렌더링Render()
기타 LOD 구현 및 충돌 체크 등을 추가로 지원할 예정
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));
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");
ALL IN ONE
출력프레임 고정
FRAME_LOCK(10); -> 한 프레임당 10ms 딜레이
카메라와 CGPL3D 바인딩Cgpl3d->SetViewMatrix(Cam);
그리기 시작Cgpl3d->BeginDraw();
재질 설정Cgpl3d->SetMaterial(MATERIAL_DEFAULT);
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();
Make it real!!!
관성과 마찰을 적용좀 더 현실적인 Interaction부드러운 움직임
물체의 자유로운 이동을 위한 Tip임의의 각으로 이동
T = rotY(Θ)vecPos += T(||vDir||) * velocity
World Transform 에서 간단히 Translation 을 구현Mat_41 = x 좌표Mat_42 = y 좌표Mat_43 = z 좌표
정치적 발언GPL3D 라이브러리에 대한 문서는 빠른 시일 내에 제공해 드릴 것을 약속드림 .
다음주부터 Fantastc 한 게임을 만들어 보아요 ~
GPL3D 가 lib 형태로 바뀌었습니다 .강력한 Abstraction Barrier 로 기술 유출을 방지할 수 있습니다 .( 할게 있나 -_-;)
배포하여 라이센스 받읍시다 ..~~~ 읔… -_- 퍽 ;;
새로 나온 GPL3D 라이브러리를 받아가셈 ~~~