How to improve fps for big models

Hi guys,

I have started babylon.js for a while, there are so many amazing features that I love it so much. Only one thing make me headache is the fps is very low for big model cases.

building.rar (more than 90000 meshes)

I test this model in different 3D viewers, fps in babylon sandbox only about 2, while some viewer using three.js can achieve 30fps.

Does Babylon.js or Three.js perform better with more meshes? - Questions - Babylon.js (babylonjs.com)
In this thread also discussed the performance issue, it seems babylon can achieve the same perf as three with enough optimization.

https://doc.babylonjs.com/divingDeeper/scene/optimize_your_scene
I checked this doc to optimize the scene, but result is not better.

There must be some other tricks just like some three.js viewers do to achieve the fps, can anybody who are good at this to give your advices here?

First welcome!
I knows three.js little so I don’t know how it does, but there is too many draw calls in your scene, maybe you could try to merge your meshes which have the same material.
If you would like to use BJS to do the merge: Merging Meshes | Babylon.js Documentation

1 Like

Hello and welcome!

Here is the approach which may help, especially if you have a lot of same objects in your building - Thinnizator - automatic thin instances

(by the way, cannot open your model in any viewer)

1 Like

The fps is 2-3 for me in the Sandbox and in the 3js viewer (https://gltf-viewer.donmccurdy.com/).

Calling scene.freezeActiveMeshes(true) will help getting 3/4 more fps, but you have way too many meshes/draw calls (21000+ draw calls): the GPU rendering time for a frame is 130-140ms on my computer so the fps can’t be more than 7fps whatever the js code is doing.

@labris It can open in the babylon sandbox.

Thanks you guys’ suggestion, seems too many meshes is a bottleneck, only way is to merge(reduce) the meshes :smiley:

Seems this is not for my laptop :slight_smile:

2 Likes