About viewerRequestVolume & LODs

Hi All,

we have a large 3D dataset - 3D textured city - and want to display it in Cesium.

We have a pipeline which split the dataset in tiles.

We are able to convert each tile to several LODs in GLTF. For now, as geometries are quite simple, the level of detail only affect texture resolution. So each LOD for a tile cover the same area.

Now we are trying to generate a tileset.json file which fit the following rules :

  • When the observer is far from the city nothing is displayed,

  • When the observer goes closer, the first LOD for the nearest tiles isloaded,

  • If he goes event closer, a more precise LOD is loaded, etc…

If we understood well how viewerRequestVolume, it seems this is something we can use to achieve this effect.

The idea is to define concentric, sphere-based viewerRequestVolumes, with larger sphere for lower LOD. The most included one for the more precise LOD (geometricError=0, refine=REPLACE).

Is it the right way to implement texture-LODs based on viewerRequestVolume property ?

Any help/hints appreciated.


You don’t necessarily need to use viewer request volumes for that effect. As long as tiles have suitable geometric errors they should automatically get loaded when the camera gets closer.

So if you had a tileset with 3 levels of detail of a building, the root tile (low LOD) would have a geometric error of say 100, its child (medium LOD) would have a geometric error of say 50, and that one’s child (high LOD) would have a geometric error of 0.

You can do it with viewer request volumes too, and your method sounds doable, but using geometric error is simpler.