Tiles loaded indicator and why so slow in Unreal

The time for terrain tiles to load is variable. Our clients in Europe and Middle East complain of 3-20s and sometimes the tiles never load. A ‘tiles loaded’ event exists in JS but is not exposed in blueprints. Could this be done?
In the meantime we are doing the hacky thing of scraping the output logs for these messages:

    LogCesium: Loading tileset for asset ID 1
    LogCesium: Loading tileset for asset ID 1 done
    LogCesium: Loading tileset for asset ID 96188
    LogCesium: Loading tileset for asset ID 96188 done

We assume asset ID 1 done means the base tiles and 96188 is for OSM data.

What is the reason for the slow loading in these regions?

The corrollary to this question is if there is anything we can do to ensure more reliable startup and to understand the cesium log messages. I see sqllite errors sometimes and have to restart Unreal to clear them, for example. Anything we can do to make it most likely to load and play quickly without errors?

Our clients in Europe and Middle East complain of 3-20s and sometimes the tiles never load.

Can you be more specific about what exactly is taking 3-20s? Cesium World Terrain and Cesium OSM Buildings are both served from CloudFront (AWS CDN), so they should be very fast from most places in the world. It’s important, though, to keep sight of the fact that Cesium for Unreal is streaming portions of a dataset that is likely over a petabyte. A decent network connection is essential.

We assume asset ID 1 done means the base tiles and 96188 is for OSM data.

Yes, but “done” here only means that the initial tileset.json is loaded, not that every tile is loaded.

In Cesium for Unreal v1.16.0, we added an OnTilesetLoaded event and a GetLoadProgress method to Cesium3DTileset. Both are accessible from Blueprints. It may also be helpful to enable Log Selection Stats on the Tileset (under the Cesium → Debug section), and then take a look at the messages in the Output Log.

is anything we can do to ensure more reliable startup and to understand the cesium log messages. I see sqllite errors sometimes and have to restart Unreal to clear them, for example.

Searching this forum and the GitHub issues list for the error you’re seeing is a great place to start. For example, SQLite errors have been discussed recently: database is locked · Issue #939 · CesiumGS/cesium-unreal · GitHub. And if that comes up empty, posting (as you’ve just done)! We have an FAQ that may help in some cases: Unreal FAQ – Cesium.

Also, if you want to dive deep, Cesium for Unreal is entirely open source, so you can also take a look yourself: GitHub - CesiumGS/cesium-unreal: Bringing the 3D geospatial ecosystem to Unreal Engine

Hope that helps!
Kevin

Just realize I didn’t respond same day. The update containing the new nodes was exactly what we were looking for. I’ve deployed a version that shows load progress and final load event and waiting for non-US testers to send some feedback. Thanks.

1 Like