How to spawn Tiles for Cesium3DTileset object inside a radius only?

@Kevin_Ring
We have multiple objects of Cesium3DTileset Object and we want to load tiles for these object, around a radius from the Pawn.

Is possible to do something like this?

Where are you calculating the distance for each tile from camera and providing the correct LOD?
In theory we just want after a certain radius, just don’t load the tile at all.

The LOD selection happens in cesium-native in Tileset.cpp:

There’s no built-in way to only load tiles within a certain radius. By modifying the code, you could achieve this either by customizing the fogDensityTable in TilesetOptions.h or by implementing a custom ITileExcluder and providing it in the excluders property on TilesetOptions.

It might be helpful to start with why you only want to load tiles in a certain radius, though. It will cause severe geometry popping as the camera moves around.

Kevin

@Kevin_Ring the reason is that we’re in a mobile android compute constrained environment and so the out of the box solution doesn’t work, especially when there’s several links that represent different parts of a geography. What we need is a situation where as the pawn proceeds, we want to control the loading and unloading of tiles better. Please see the lower pic attached and hopefully this will be more clear? We also attached a second picture with a red/blue hand drawn arrow showing how the default system works which is far too much information relative to what our hardware can support.
Since we have multiple TileSets we want to control the radius of the area that is shown. In the 3rd pic with the yellow drawings, we show a representation of how we understand you are creating the LODs. On the top right it where we hand wrote “Lowest LOD” and “Loading Radius”, where 0 is highest detail and 4 is lowest, we would like to keep your LOD calculations, but control how much distance for each LOD is used. Can you explain to us where the functions are so that we can inspect and adapt to our needs? We want to control the distance of each section so it’s much smaller, say 0 highest LOD would be reduced to 30 meters (vs what appears currently like 200-500 meters, which crashes our systems).

Hi @carlrealvr,

I suspect that won’t help as much as you think it will. Distant tiles use a very low LOD, which means there are very few of them. Eliminating them completely will only reduce the total geometry/texture load by a small amount. The vast majority of tiles will be within your radius, anyway.

But you mentioned you’re getting the highest LOD too far out in the distance. If that’s the case, the solution is easy: increase the “Maximum Screen Space Error” property. The default is 16. Doubling it to 32 will approximately double the distance at which the “highest LOD” appears and result in loading about 1/4 of the tiles it was loading at 16.

Kevin

2 Likes

Thanks @Kevin_Ring great call on that last comment. Much appreciated!

Did you solve it? I have the same need