You should use "level of distance". There is an automatic way that tries to reduce triangle count with an algorithm but theres also the cleaner way of defining separate models for certain distances. Look at AreaClodMesh for automatic and DiscreteLodNode/DistanceSwitchModel for separate models.
I guess the model is not animated and such? then you can lock() it. Take a look at the various lock() and lock*() methods in Spatial.
Considering your object count, especially lockBranch on your rootNode should give you a HUGE boost. Level of detail is not necessary at these triangle counts, its the object count (updating them, not the rendering) that keeps your fps down (answers 2.).
how do you apply backface culling? it should be like that:
while i'm still working on "level of distance" method, i've tried the triks that dhdd suggested; unfortunately the "lockBranch()" method did not give the boost you expected :( (calling the lock() method AND the lockBranch() method has the same result (in terms of fps) of calling the lock() method alone).
i checked the cullState usage and it seems right; but still i don't see any changes neither in the fps number neither in the number of tris while it's active. is this right?
here's the code:
public class PerformanceTest extends SimpleGame
Maybe the problem is the materials… I had some issues when importing models that have transparent windows or something like that… Maybe some of the models material properties are converted into something very comutation intensive on the jme side.
Your problem is here. More meshes means less performance, especially on modern video cards. Merge all of these into several meshes in your modeling tool, there's no reason you would need that many if you're only using 5 textures.
i'm afraid but i can't, cause in my application i need to RayPick every component (like window, walls..etc) separately :(
You can merge all meshes, then determine, based on the triangle index, to which mesh it originally belonged. Why don't you try merging the meshes, and see what it does to performance? Then you'll know for sure where the problem is.
anyway, i still don't get the backface culling function; shouldn't i expect to see the Avg.Tris value falling drastically when i activate it? (since more or less half of the triangles are backfaces)
Your video card is more than capable handling that many triangles, so the issue isn't there. The bottleneck is due to the video card having to restart for each mesh you're trying to draw.