What is the best workflow for 3DTiles?


for an airport I want to add about 30 custom buildings. I guess I will have to upload each of them to CESIUM Ion, they get converted to 3DTiles, then I need to place & scale the individual 3DTiles correctly based on the satellite image. And then I will create in Unreal one Cesium3DTileset per building.

Or is there a way to combine all these correctly placed buildings into one 3DTileset so I only need to add one Cesium3DTileset for all my airport buildings in Unreal? Wouldn’t that be better for performance?

BTW, thanks for the great tutorials you did so far!


Hello @Lildreas ,

This will depend on the formats and expected usage of these assets. Are these hand-placed Unreal assets (foliage, models, characters, etc.) or are they photogrammetry surveys / large-scale datasets?

From what it sounds like, our georeferenced sublevels framework may be of interest to you. This is a way to place different Unreal sublevels, each filled with typical Unreal assets, across the world. In playmode, as you approach any one of the specific sublevels, it dynamically loads in with all the expected Unreal assets. In your case, you may wish to have a different sublevel represent each of your airports.

On the other hand, if your building assets are large datasets that would particularly benefit from Cesium’s efficient LOD-based streaming, we encourage you to try both approaches you mentioned, i.e., using a single large tileset vs ~30 smaller ones. The advantage of a single large 3d tiles dataset will be potentially better streaming-performance and optimization. Additionally, it may be difficult to manually position 30 custom buildings in Cesium Ion (this is to georeference them properly before they are imported to Unreal). We currently do not have a great way to import 3D tiles datasets as non-georeferenced models that can be conveniently moved and placed within the Unreal editor.

I think your best bet is the first approach (georeferenced sublevels), but feel free to elaborate on your use-case and constraints if these options do not work well!