having errors with 3ds level

If you are a new Irrlicht Engine user, and have a newbie-question, this is the forum for you. You may also post general programming questions here.
Post Reply
a_haouchar
Posts: 97
Joined: Sat Oct 14, 2006 10:51 am
Location: Australia,melbourne

having errors with 3ds level

Post by a_haouchar »

here is the level zipped up,its pretty slow to view since their is alot to load.
http://rapidshare.com/files/4581805/New ... r.zip.html

(here is the problem) In irrlicht 1.1 it trys to load it the game but it hangs and freezes? is it tooo much for irrlicht to handle. IM using 3ds max becuase with irredit06, the format doesn't work with irrlicht 1.1.
here is the code:

#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;


video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();

device->getFileSystem()->addZipFileArchive("c:/users/Haouchars/desktop/AOD2/level.3ds");


scene::IAnimatedMesh* mesh = smgr->getMesh("c:/users/Haouchars/desktop/AOD2/level.");
scene::ISceneNode* node = 0;

if (mesh)
node = smgr->addOctTreeSceneNode(mesh->getMesh(0));


if (node)
node->setPosition(core::vector3df(-1300,-144,-1249));


smgr->addCameraSceneNodeFPS();



device->getCursorControl()->setVisible(false);


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"Irrlicht Engine - Quake 3 Map example [";
str += driver->getName();
str += "] FPS:";
str += fps;

device->setWindowCaption(str.c_str());
lastFPS = fps;
}
}


device->drop();

return 0;
}


its just the quake3map.with my level code in it

here is a short a better rendered animation with IRRLICHT logo:)
http://video.google.com.au/videoplay?do ... 6&hl=en-AU
sorry its too fast but im still fixing it. please play it twice or three times to get a better view of it:)
luckymutt
Posts: 453
Joined: Sun Mar 06, 2005 11:56 pm
Location: C-Ville

Post by luckymutt »

Wow. you have 236,583 polys you are trying to load from a single *.3ds file.
Yeah, that's your problem.
I believe there is a limit of something like 65k polys for a single *.3ds mesh.
One thing you can do is save out portions of the mesh seperately and load them individually.

Also, your modeling can be optimized MUCH more to bring the poly count down, without affecting the quality.
For example, surrounding the hill (volcano?) you have 3 planes that make up the ground and each of those planes consist of 338 polys. Since all those polys are level, you can make those planes with only TWO polys, and have the same result in-game.

There is a thing that looks like a silo, that is five segments high, this can be only one segment high and give you the same quality while saving you over 150 polys.

All of the tree(?) objects could prolly be made more efficient, depending on their use in the game.
The terrain underneath these could also be done with much fewer polys and bump mapping or normal mapping to keep it looking good.

Also, what are all of the dummy objects being used for?
I have never tried anything that required dummy objects in Irrlicht before, so I am not sure if Irr knows what to do with them.
Join us in the Irrlicht chatroom:
[url]irc://irc.freenode.net/irrlicht[/url]

I love deadlines. I like the whooshing sound they make as they fly by. -D.Adams
hybrid
Admin
Posts: 14143
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany
Contact:

Post by hybrid »

But the polys can also be split into different mesh buffers by assigning different materials. That way you only have a limit of 65k poly per material.
And be careful with optimizing too much. The face shading with very large faces is quite ugly, it's often useful to have some subfaces for the correct visual appearance.
a_haouchar
Posts: 97
Joined: Sat Oct 14, 2006 10:51 am
Location: Australia,melbourne

Post by a_haouchar »

thanks alot, sorry about the weird trees lol im still not finished, THANKS ALOT AGAIN!:):):):):):)

yes its a volcano

wow their is alot of work to be done. Really need help trying to learn how to optimize better:)

edit: i just deleted the trees and made one of the planes flat and i tried to load it in irrlicht but now this comes up.
Image

edit: i just deleted everything and created a box and it crashed!
luckymutt
Posts: 453
Joined: Sun Mar 06, 2005 11:56 pm
Location: C-Ville

Post by luckymutt »

a_haouchar wrote: edit: i just deleted the trees and made one of the planes flat and i tried to load it in irrlicht but now this comes up.
Image
Is the mesh loading?
That looks like the "normal" message when something successfully loads in Irrlicht.
Is it giving a problem?
Also, it is usually a good idea to use relative paths (../../path/mesh.3ds) instead of absolute paths when loading your stuff.
a_haouchar wrote: edit: i just deleted everything and created a box and it crashed!
What is the code?
I am gonna guess it was an incorrect path.
Join us in the Irrlicht chatroom:
[url]irc://irc.freenode.net/irrlicht[/url]

I love deadlines. I like the whooshing sound they make as they fly by. -D.Adams
Post Reply