15. LoadIrrFile
Posted 2007/09/15 22:11 by 수달2006년 8월 6일 부로 1.1 버전과 irrEdit 0.3이 공개되었다.
이중 irrEdit은 씬노드를 만드는 툴로써 일종의 맵툴이라 할 수 있다.
물론 게임툴이라고 불릴 정도의 레벨 디자인이 가능한 툴은 아니고, 여러 그래픽 자원을 배치 할 수 있는 정도이다.
하지만 원래부터 IRRLICHT엔진은 그래픽 엔진임을 생각해야 한다.
고맙게도 이번 버전은 irrEdit의 전용 포맷인 *.irr에 대한 것이다.
irrEdit에 대한 좀 더 심도 있는 연구가 필요할 것 같다.
--------------------------------------------------------------------------------------
IRRLICHT 1.1버전부터 XML에 기반을 둔 *.irr 파일의 모든 그래픽스를 저장하고 읽을 수 있게 되었다. http://irredit.irrlicht3d.org를 참조하는 것이 좋겠다. 단순하게만 말하자면 *.irr를 만드는 irrEdit은 월드와 파티클 툴로써 사용할 수 있을 것이다. 이번 예제에서는 *.irr파일 다루는 법을 알려준다.
자, 시작해 보자. 일단 윈도를 설정하고 엔진 장치를 만들자.
#include <irrlicht.h>
#include <iostream>
using namespace irr;
#pragma comment(lib, "Irrlicht.lib")
int main()
{
드라이버 타입을 묻는다.
video::E_DRIVER_TYPE driverType;
printf("Please select the driver you want for this example:\n"\
" (a) Direct3D 9.0c\n (b) Direct3D 8.1\n (c) OpenGL 1.5\n"\
" (d) Software Renderer\n (e) Apfelbaum Software Renderer\n"\
" (f) NullDevice\n (otherKey) exit\n\n");
char i;
std::cin >> i;
switch(i)
{
case 'a': driverType = video::EDT_DIRECT3D9;break;
case 'b': driverType = video::EDT_DIRECT3D8;break;
case 'c': driverType = video::EDT_OPENGL; break;
case 'd': driverType = video::EDT_SOFTWARE; break;
case 'e': driverType = video::EDT_SOFTWARE2;break;
case 'f': driverType = video::EDT_NULL; break;
default: return 1;
}
장치를 만들고 실패시 종료한다.
IrrlichtDevice* device =
createDevice(driverType, core::dimension2d<s32>(640, 480));
if (device == 0)
return 1;
device->setWindowCaption(L"Load .irr file example");
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();
자 이제 *.irr를 읽어보자. *.irr파일은 애니메이터, 재질, 파티클을 포함하는 모든 씬 그래프(역자 주 : 아마도 씬 노드를 비롯한 엔진의 모든 그래픽 지원을 이르는 말 같다.)를 저장할 수 있다. 또한 파일 속의 각각의 씬 노드에 대해 임의의 사용자 데이터를 추가할 수도 있다. 예제를 단순하게 하기 위해 모든 것을 다 말하진 않겠고, 이에 대해서 ISceneManager::loadScene와 ISceneManager::saveScene을 문서(Irrlicht.chm)에서 찾아보길 바란다. 자, 여기서는 단지 loadScene()을 부르기만 하면 된다.
smgr->loadScene("../../media/example.irr");
준비가 다 되었다. 카메라를 더하고 씬을 그려보자.
smgr->addCameraSceneNodeFPS();
while(device->run())
if (device->isWindowActive())
{
driver->beginScene(true, true, video::SColor(0,200,200,200));
smgr->drawAll();
driver->endScene();
}
device->drop();
return 0;
}
쉽지 않은가?
----------------------------------------------------------------------------------------
irrEdit과 *.irr가 얼마나 중대한 기점인지 느껴진다. 지금까지 작은 연습 프로젝트 하나 하려고 해도 직접 수작업을 해줬는데, 이제는 많은 부분을 툴에 넘겨 줄 수 있게 되었다. 실제 내가 참여중인 모종의 아마추어 프로젝트에서 요구된 애니메이션 월드, 파티클 시스템 등이 다 해결 될 것 같다. irrEdit이 아니었다면 이런 작업 툴 만드는데만 6개월은 넘게 걸렸을 것이다.
점점 더 멋진 엔진으로 발전하고 있는 IRRLICHT엔진과 개발자에게 감사한다.
'기본 카테고리' 카테고리의 다른 글
irrEdit 는 (0) | 2009.03.19 |
---|---|
일리히트 엔진 시작하기 (0) | 2009.03.19 |
Irricht엔진튜토리얼 14. Win32Window (0) | 2009.03.19 |
Irricht엔진튜토리얼 13. RenderToTexture (+06.08.04) (0) | 2009.03.19 |
Irricht엔진튜토리얼 12. TerrainRendering (0) | 2009.03.19 |