UE 5.3 Cesium optimization for perfect flythrough?

I will try to write this as simple as possible.

Configuration:
-GPU 3090 MSI
-CPU AMD Ryzen 9 5950X
-64 RAM

I want to build an application in UE5 which will consist only of BP cameras that are moving around to show different parts of the city.

The application is working perfectly without Cesium and with Cesium it is dropping below 15fps when there is a camera transition (which is a huge problem).
I am not crossing countries with this camera transition, just different parts of the neighborhood, which means that I am not crossing more than 10x10km probably.

I am using Ceisum ion i guess and google photorealistic 3d tiles to project world in my map and cut off few parts that are ugly, such as rivers with Cesium Cartographic Polygon.

I’ve changed some settings but i still can’t get it to work perfectly, for example

Level of detail:

-Maximum Screen Space error 28-32 (preferably even lower to have more details)
-Apply Dpi scaling YES

Tile Loading:

-Prelorad Ancestors True
-Preloda Siblings True
-Forbid Holes True
-Maximum Simultaneous Tile Loads 300
-Maximum Cached Bytes 1506870120 (15GB)
-Loading Descendant Limit 300

Rendering:

Use Lod Transitions True
Lod Transition Length 0,001
Ignore KHR_materials_unlti TRUE

And it is still not good.

Can someone please walk me through this process to optimaze it?

Best,

Hi @Mr_good_cat, welcome to the community!

Balancing performance with render quality is tricky, for sure. But I notice a few settings that may be contributing to the problem:

First, setting the Maximum Simultaneous Tile Loads to 300 is quite high. That means the application will have 300 tile loading processes at the same time in the background, which will definitely impact the application’s framerate. You’ll probably want to reduce this number to below 100, and even then that may be a bit high – it is 5 times the suggested default value. You should also change Loading Descendant Limit to the same value so that the two settings are in sync.

Next, I notice that you’re using Use Lod Transitions, but with a Length of 0.001 seconds, which is quite small. The LOD transitions are a visual effect that causes dithering between LOD changes, intended to be a smoother transition. However, your transitions will happen so quickly that it’s probably not worth enabling this setting. I would consider disabling it in this case.

Your other settings look fine otherwise. I think with these tweaks, you could afford to set Maximum Screen Space Error to a lower number and have more detail. Let us know how it goes! :smile:

Hello @janine thank you for getting back to me in such a short notice.

I did what you suggested, it did boost the performance, i will test it a bit to make sure that everything is working fine and that it is always loaded.

But i have another question, why is it working perfectly fine in my viewport at max level of detail without any problem but it needs to load when i start the game?

Best,
Djordje

@Mr_good_cat are you by any chance using a Level Sequence to control your animations? If so, you may be running into this issue:

why is it working perfectly fine in my viewport at max level of detail without any problem but it needs to load when i start the game?

Keep in mind that “max level of detail” for Google Photorealistic 3D Tiles is likely a multi-petabyte dataset. Even if your view happens to be the identical in the Editor and when you start your game, we don’t try to preserve already-loaded tiles between the two because that would add complexity and would make the Play-in-Editor experience less reflective of the experience in a built game.

Hello Kevin,

Thank you also for stepping in!

I do not have a level sequence, I am preparing everything to be packaged. But it is not in desired quality so I am trying to figure out if someone has already tried something similar and have they found best parameters for optimization.

Is there an option to restrict an area from being rendered and in that way optimize the project?

Best,

I suggest you go back to the default settings. It looks like you’ve changed a bunch of them, in ways that are likely to drastically hurt performance. In addition to the ones Janine already mentioned, setting Maximum Cached Bytes to 15 GB is going to blow out your GPU memory, start swapping textures in and out of RAM, and generally make your performance awful.

There’s no way to restrict the area being rendered. It wouldn’t help much, anyway. All the rendering load is up close; the tiles in the distance are low resolution and there are few of them. Keep in mind that a full resolution 10km x 10km area with Google Photorealistic 3D Tiles is easily tens, quite possibly hundreds of gigabytes of data.