Model loading performance question

i have this model which is 140mb. what is the prefered way of loading big models like this.

option1. load the 140mb model file at once as a single model.

option2. cut the model into multiple small pieces like 10 14mb models. then load all the pieces and attach them to one single node.



which one of the two requires more loading memory? i think they use the same right?



which one of the two requires more loading time? i think option2 will take longer than option1 right?



thx in advance  :smiley:

As long as memory isn't an issue during loading you should load the whole model at one time.  I'm assuming you are talking about 140mb from a format like Collada, not from the .jme file format, right?



You really should first convert it to a .jme file before using it in your application.  That will increase the performance of loading it significantly and reduce the file size quite a bit as well since it's a binary format.

sry i forgot to maintion, i already converted into binary file format. and the size is the model binary file + all the texture binary files.



the model binary file itself is only 500k or so. but the textures r pretty big~ :smiley:



thx for the help~

IMO the "best" way of doing things for your scenario depends on how you are presenting your model.

Judging by the 140mb of textures i find it unlikely that everything of your model will be initially on screen, or if so, it will most probably be at a low mipmap level.



In the first case, with only a part of the model seen initially, I would go for dynamic loading of textures - load the parts of the model when they are about to appear on screen.

That way, the user sees something on her screen almost instantly, and can happily gaze at it while the system loads the textures for the parts of the model not yet visible.

That's the way I do it with the terrain in this demo: http://www.jmonkeyengine.com/jmeforum/index.php?topic=5641.0



If the model in fact is entirely on screen from the beginning, I would choose some kind of dynamic mipmap loading - think google earth for example.



However in both cases you add a whole new level of complexity (multithreading!) to your app which may not be what you want, so sorry if this doesn't help you at all :slight_smile:

thx.



and yes the entire model is used at the begainning. so i guess ill have to load it all at once. ill just do multithreading then since my game is using multithreading in several other parts anyways.

140mb of textures are enough to cover 30 screens at 1024*768/32bit color depth.

are you SURE you need that much on ONE model?



(screenshot plz)