So right now, for example if i need an model 4 times, i load it 4 times.
But somehow i couldn't figure out how to copy a node.
And my other problem is:
jME is only displaying the objects in view of the camera, but it also displays the objects which are hidden behind another object.
So my walls are made out of Boxes, but all the objects behind a wall, which you can't see, are also displayed and so the framerate really goes down.
What can i do, so the objects behind a wall aren't displayed?
CloneImportExport can clone scenes so you wouldn't have to load the same file multiple times from disk.
It is probably even better to use SharedNodes instead. I think there are tests (read: demo classes with documented source code) for each in the jmetest packages.
For your other problem you could research and experiment with occlusion culling or binary space partitioning (bsp, as sen in quake) and portals/antiportals.
There is nothing like that built into jME now, but there is an occlusion culling solution made by Momoko_Fan (i think?) somewhere on the forum.
You can also use Display lists and VBOs with unanimated models, and you will want to look into level of detail for larger, open scenes. As far as these options and what hevee said, there is really not alot more to speed it up. But 30-40 FPS is pretty good, too. I think that is something JME is kind of abusing now, ways to speed it up. I am looking into ways to speed it up on the internet, so I can make patches to speed up JME.
Aha. GL_DYNAMIC_DRAW_ARB or GL_STREAM_DRAW_ARB. Found this in LWJGL. It is a way to speed up animated models, just like a VBO. JME needs to start using this.
I tried to do it with SharedNodes, but i got another problem now.
How can i apply different Translations and Rotations to a SharedNode.
For Example if i want to have an object at (0|0|0) and (5|5|5), how do i do it with a SharedNode?
Or do i have to use CloneImportExport?
Concerning the other problem, i gonna read a little about it and come back to you in case i have other problems:D
It's possible to have multiple sharedNodes with different Translations/Rotations?
SharedNodes/SharedMeshes were made to have different transforms… What's the point of drawing the exact same object at the same location multiple times?
For the OP: Use some kind of caching system that will load the model if necessary and then create clones of it using SharedNode/Mesh. Note that SharedNode/Mesh were meant to be used only for static models, for animated models you may have to use CloneImportExport.
For the second issue, use a portal system or BSP trees (there's a quake bsp loader available somewhere on the forum).