Hallo,
ich habe mir ein Irredit eine kleine Testwelt gebaut. Diese lade ich nun mit einer leicht modifizierten Version des Irrloader Beispiels (Tutorial 15 glaube ich)
Code:
#include "stdafx.h"
#include <irrlicht.h>
#include <iostream>
using namespace irr;
#pragma comment(lib, "Irrlicht.lib")
int main(int argc, char *argv[])
{
video::E_DRIVER_TYPE driverType;
driverType = video::EDT_OPENGL;
IrrlichtDevice* device =
createDevice(driverType, core::dimension2d<s32>(800, 600), 32);
if (device == 0)
return 1; // could not create selected driver.
//Mauscursor Off
device->getCursorControl()->setVisible(false);
//set caption
device->setWindowCaption(L"Load .irr file example");
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();
/* Now load our .irr file.
.irr files can store the whole scene graph including animators, materials
and particle systems. And there is also the possibility to store arbitrary
user data for every scene node in that file. To keep this
example simple, we are simply loading the scene here. See the documentation
at ISceneManager::loadScene and ISceneManager::saveScene for more information.
So to load and display a complicated huge scene, we only need a single call
to loadScene().
*/
// load the scene
//smgr->loadScene("../../media/example.irr");
printf(argv[1]);
smgr->loadScene(argv[1]);
/*
That was it already. Now add a camera and draw the scene
*/
// add a user controlled camera
smgr->addCameraSceneNodeFPS();
//Sydney einfügen
//node
scene::IAnimatedMesh* mesh = smgr->getMesh("meshes/sydney/sydney.md2");
scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh );
if (node)
{
node->setMaterialFlag(video::EMF_LIGHTING, false);
node->setFrameLoop(0, 310);
node->setMaterialTexture( 0, driver->getTexture("meshes/sydney/sydney.bmp") );
}
// and draw everything.
int lastFPS = -1;
while(device->run())
if (device->isWindowActive())
{
driver->beginScene(true, true, video::SColor(0,200,200,200));
smgr->drawAll();
driver->endScene();
int fps = driver->getFPS();
if (lastFPS != fps)
{
core::stringw str = L"Load Irrlicht File example - Irrlicht Engine [";
str += driver->getName();
str += "] FPS:";
str += fps;
device->setWindowCaption(str.c_str());
lastFPS = fps;
}
}
device->drop();
return 0;
}
Ich füge nach dem laden der irr Datei den Mesh Sydney ein.
Code:
//Sydney einfügen
//node
scene::IAnimatedMesh* mesh = smgr->getMesh("meshes/sydney/sydney.md2");
scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh );
Jetzt wollte ich fragen wie man die Kamera immer hinter dem Mesh positioniert, das sie den Mesh immer verfolgt wenn er sich bewegt?
Grüße, Florian