Jmonkey limitations

Hello everyone,



I am currently looking for a 3D engine to run models in real time. The model i have is fairly huge, around 1TB in size (Hundreds of thousands of polygons, i forget the exact size). Would Jmonkey be able to use a model of this size granted the hardware can support it? (I do have access to a server farm). Also are there any other limitations I should be aware of? (texture size, any problems using 3Ds max 9, etc)



If anyone has played the game Grand Theft auto 4, this is basically the texture/polygon complexity that I am looking for. I've done about an hour or so worth of research on this topic before I posted, but I couldn't really find anything.





Thanks a lot, Andy

The last test I have made with TriangleCount gave me 2Mio Triangles with 30Fps on a DualCore. But in my Oppinion, this does't matter so much in Jmonkey. Because You can use FrustumCulling, that only Objects in CameraPort are assigned to the GPU.



And Jmonkey has also Continous LOD implemented, which is quite good.



The Only technical Limitation I know, is the limited Size of Textures with 1024x1024, but this will be probably changed in next time

Excellent! I'll be sure to give Jmonkey a try, it looks like a nice piece of software. Oh and thanks for the quick reply…

.:emp...hellg:. said:

The last test I have made with TriangleCount gave me 2Mio Triangles with 30Fps on a DualCore. But in my Oppinion, this does't matter so much in Jmonkey. Because You can use FrustumCulling, that only Objects in CameraPort are assigned to the GPU.

And Jmonkey has also Continous LOD implemented, which is quite good.

The Only technical Limitation I know, is the limited Size of Textures with 1024x1024, but this will be probably changed in next time


The only texture size limitation in jME is that of your videocard.

You're very right though, how much triangles you can have in your scene depends very much on the techniques you're gonna use to reduce how many have to be rendered.

Of course there is only one engine right now that can handle the enourmous size and complexity of online worlds with as much amount of detail as GTA4. And that's the engine they used for GTA4.
llama said:

The only texture size limitation in jME is that of your videocard.


good to know this, I always thougt there was something hardcoded in LWJGL or so  ;)

It will not be the rendering that will limit you. Possibly you will need to think of a way for compressing those data, and also dinamicaly loading those data from disk. You will actualy run into problems with that.



What you mean by "server farm"? Whatever you want to render, must be loaded on one mashine. You cannot distribute real-time rendering to a server-farm, like you can do with not real-time ray-tracers.

I think you simply won't be able to load 1TB of data in 32 bit address space. And if I'm not mistaken there is no 64 bit version of lwjgl to date.

So I guess regardless of the hardware you are using, you will always be restricted to the 4GB maximum memory that 32 bit addressing implies.

But I don't really know anything about how 64 bit OSs deal with 32 bit binaries, and would love to be corrected if I am talking rubbish here.

1TB seems extreme to me, even 1GB is extreme! Most the detail geometry in games generally gets baked into the model's texture so you can actually use it in game as a lower poly model…



I would guess that you would be better loading such a giant object in sections rather than as a continuous data block… This way you have multiple chunks… Some of which get written to cache rather than physical memory. Chances are that even if you load such a data size in one go Java will run out of memory… It is very picky about the allowable amount of memory it will prepare for use… On xp32 with -3GB option its still pretty weak… about 1.3gb?



I dont think multiple servers will help very much, as either you model each model on a single process and composite the different bitmap layers on a different cpu for every frame, or you give every model to every process and render frames on each cpu. Both are going to involve lots of pushing bandwidth-bulky hi-res images around the cluster. Personally I dont think jme is suited for this task… But the technology is there to load models and render a snapshot of an invisible frame to a buffer… Which may be all you need for such a project.

Can we build a test case for this

Hey guys, I thought I would just chime back and clarify some things.



Yeah I agree, loading this huge model all a once wouldn't be practical. For the curious, it is a model of the city I live in. The company I now work for created it (I am not a modeler) and they are interested in using it for different things… I'm still doing research over this stuff and what not, (I am also not a veteran game developer either).



Well so far ive taken a look at many different engines/SDKs/etc and so far Jmonkey is the ONLY one that actually runs, much less is able to load some 3ds max models half way. Other open source and commercial engines have failed pretty bad… So Jmonkey is a prime candidate so far! Great job Devs… 8)

My designer and me tried to load a complete map at once. It works good with JME. The map has maximal 50000 Triangles, but I think, there is no big difference to a one Million Triangles File.



My Designer gives object specific Names, for Example all tree Plants he names "Plant". I have written a Method which makes out of all PlantNodes a Billboard. The next step will be, he names all static obeject "Static", and all dynamic objects, You guess: "Dynamic" :lol:



Now I can make out of them already Physical objects with JMEPhysics. My designer told me, he can give all Objects in 3DMax Comments. I didnt test it yet, but I'm sure, these Comments will be exported in Collada too. So he can give them PhysicMaterial names.



Also my interfaces like "usable" or "pickable" can be used and transformed it the correct Objects. As Next (when I have switched to JME2.0), I will export all this stuff as .jme, so the next loading will be quite faster.