Hello,
We’re developing an internal tool for Sintetic Dataset generation for the aeronautical industry and during our testing we identified a few technical issues with the Cesium renderer in Unreal. We’re using the Photorealistic Map Tiles and we’re having the following issues:
1- Tiles are rendered with low resolution even in close proximity
2- Tiles aren’t being loaded even though the forbid holes flag is on
3- Using the event OnTileSet Loaded to pause the simulation while waiting for the loading doesn’t avoid this issue
4- After about 3 hours of simulation, the tiles stop rendering completely
Any idea what the issues are? How can we further diagnose the issues here?
Thank you
This may only fix issue 1, but select your tileset asset in the outliner, under Level of Detail, lower the Maximum Screen Space Error value, by default its set to 16, I usually use around 8 or 4, the lower the higher resolution it will be, Adjusting the tile loading settings may help resolve issues 2-4 but I’m not sure
Hey @jdteixeira, welcome to the forum.
Thanks for the detailed report. This looks like a few separate behaviors:
-
Low resolution tiles near camera:
@RS1RS92 is correct on this, lowering Maximum Screen Space Error is the right direction. For synthetic data generation, values like 4 or 2 can help, with the tradeoff of more tile requests and higher memory/network load.
-
Missing tiles and Forbid Holes:
Forbid Holes only affects rendering behavior. It does not force additional tiles to load if there aren’t any there, not saying that that is necessarily the case.
-
Waiting for full readiness:
OnTilesetLoaded means the root is loaded, not that all visible LOD tiles are finished. For capture pipelines, I think check whether IsLoading returns false before frame capture, and monitor stats while running to confirm the request queue is actually draining.
-
Stops rendering after long runs:
The 3-hour failure pattern sounds like a resource-pressure issue (memory, queue saturation, or long-running request churn), not just a one-off tile miss.
If you can share these details, we may be able to help futher:
- Unreal version
- Cesium for Unreal version
- Camera movement pattern (speed, jumps, scripted path shape)
- Whether tiles eventually fill if camera pauses
- If you can also provide a minimal reproducible project or short scripted repro path, that would help a lot. Preferably using the Cesium for Unreal Samples repo as a base. I understand it may not be feasible to share your data here though, you can always share by DM if you like.
Cheers!
Hi. Thank you for the help. Unfortunately I can’t really share stuff here, but we’ve made some progress. The tile loading issues were mostly solved by combining the ontileset loaded with a loadprogress =100 branch to validate tiles loaded. The long term usage bottleneck is still an issue that we don’t know if it’s system realted or just throttling from the API, as tiles don’t load on the editor either until a system restart. So I don’t know if it’s a memory issue or a token limit issue. Is there a way I can log stuff to diagnose this?
Hey @jdteixeira,
Glad the OnTilesetLoaded + load progress check helped!
For the long-running stop, you can check out your Cesium ion dashboard, it will show usage metrics, and you can filter by token as well. If you’re hitting rate limits, this could be reflected here. You can also DM me your accounts email and I will check if there’s anything we can see regarding rate limits.
For logging in Unreal, filter the Output Log by LogCesium. Potentially failed tile requests will show up there and tell you whether it’s an auth issue or something else.
If the Output Log shows no errors and tiles just stop loading, it’s more likely resource pressure (memory or GPU). Checking system memory and GPU memory usage around the time of the failure would help narrow it down.
What does the Output Log show around the time tiles stop loading?
Ok, so for debugging, I left an overnight session running generating a dataset of 5000 images. Starting at 20:00, it ran fine until 00:03, and that was when tiles stopped being loaded. On Ion, my token usage was at 2 sessions for that day. The Unreal Log shows the following:
[2026.06.12-00.04.29:379][612]LogCesium: Error: [2026-06-12 01:04:29.380] [error] [TilesetJsonLoader.cpp:1076] Received status code 400 for tile content https://tile.googleapis.com/v1/3dtiles/datasets/CgIYAQ/files/AJVsH2ygiNkSA-4rm8r74ACjZ_ciNhjH0cl1Py4wQMJF_3SpW5WkvacqKzqDJa5ptOYzK6_7l10bIoOFvYshgYBhjWGMF5LmaT1jDqQk1B_yWztc2ONp5qoQpfQeTWSGcBJXZb1jvObGAr6BFMqY9qXeLX5FVxhbMXyZS4tVaUr_ErGi5FbhqvyLRMpQ.glb?
This then repeats to other tiles. I’ve also left HWInfo logging resource usage on the machine and this is the overall result for that period.
Around 00:00–00:06:
| Metric |
Observation |
| Network download |
Only +1 MB total; one tick appears at 00:03:02.706 |
| RAM load |
47.5–48.1% |
| RAM available |
Minimum 16,956 MB |
| Pagefile |
2.5% |
| GPU memory usage |
62.8–65.5% |
| GPU memory available |
Minimum 4,241 MB |
| GPU memory allocated |
Max 8,047 MB |
| CPU usage |
11.6–19.5% |
| GPU core load |
41–54% |
| Disk activity |
Max 1.9% |
| Thermal/power limit flags |
No GPU thermal/power limit, no CPU throttling |
From what I gathered from other reported issues, the google API sssion token expired?