You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add skipLevels and skipScreenSpaceErrorFactor #1614
When loadAncestors is enabled, the renderer continuously loads parent ancestor tiles as backups so that there is content to display while high-precision child tiles are being loaded. The current logic adds all ancestor tiles containing content to the download queue, which can result in a large number of unnecessary downloads when there are many intermediate layers. However, if loadAncestors is disabled, there can be a long visual gap before the high-precision child tiles finish loading, during which no suitable fallback content is available to display.
Therefore, a compromise is needed: allowing the renderer to skip certain intermediate levels while still loading some ancestor fallback tiles. This can provide a smoother visual transition while reducing loading time and memory usage.
Currently, if current level is 1 and target level is 6, with loadAncestors = true, the current loading logic is 1->2->3->4->5->6, with loadAncestors = false, it would be 1->6
If set skipLevels = 1, the loading logic will be 1->3->5->6
Can you explain which tile sets you're seeing this with? One of the issues I've seen with tile sets like Google Photorealistic tiles is that a lot of the delay is related to internal "tileset json" references that need to load before the "leaf" geometry nodes are encountered and can actually load.
Understanding where the delay is coming from would generallybe helpful. Is the download queue getting full? Does increasing the size help? Or the parse queue? Or does this only happen when moving the camera around a lot, meaning cancelling active downloads may help (see #1609)?
I'd specifically like to avoid adding dozens of options that require the user to be familiar with the underlying traversal algorithm to understand and configure. More options also makes the traversal algorithm more brittle and difficult to test, which I'd also like to avoid.
Sorry, I am using my company’s internal tilesets, which I am not allowed to share. They are all very large tilesets, usually multiple gigabytes in size. In my tests, most of the time is actually spent on downloading. If we had a setting that allowed us to skip part of the LOD hierarchy, it would be faster to reach the desired LOD.
For example, with an over 150M-splat tileset, which is an 11 GB Gaussian Splat tileset, the current 3d-tiles-renderer loading strategy requires downloading around 1 GB in a certain view before reaching the desired LOD. However, if level skipping were allowed, that amount could be reduced to less than 800 MB.
Sorry, I am using my company’s internal tilesets, which I am not allowed to share.
I understand that some data may be proprietary but if you'd like to collaborate with public projects it would be best to produce a representative model that's shareable publicly. There are many places where things can be improved both within the project and generally within data sets so I'm not keen on jumping to the first solution that sounds appealing without making sure it's well understood.
A simple "skip levels" traversal implementation as you've described would wind up loading more tiles in order to keep gaps filled as the camera turns. I haven't dived into it extensively but my understanding is that Cesium's implementation is significantly more complex than what's been presented so I'm not super interested in discussing this before other more simple solutions have been explored.
Activity
gkjohnson commentedon May 28, 2026
Can you explain which tile sets you're seeing this with? One of the issues I've seen with tile sets like Google Photorealistic tiles is that a lot of the delay is related to internal "tileset json" references that need to load before the "leaf" geometry nodes are encountered and can actually load.
Understanding where the delay is coming from would generallybe helpful. Is the download queue getting full? Does increasing the size help? Or the parse queue? Or does this only happen when moving the camera around a lot, meaning cancelling active downloads may help (see #1609)?
I'd specifically like to avoid adding dozens of options that require the user to be familiar with the underlying traversal algorithm to understand and configure. More options also makes the traversal algorithm more brittle and difficult to test, which I'd also like to avoid.
WilliamLiu-1997 commentedon May 28, 2026
Sorry, I am using my company’s internal tilesets, which I am not allowed to share. They are all very large tilesets, usually multiple gigabytes in size. In my tests, most of the time is actually spent on downloading. If we had a setting that allowed us to skip part of the LOD hierarchy, it would be faster to reach the desired LOD.
For example, with an over 150M-splat tileset, which is an 11 GB Gaussian Splat tileset, the current 3d-tiles-renderer loading strategy requires downloading around 1 GB in a certain view before reaching the desired LOD. However, if level skipping were allowed, that amount could be reduced to less than 800 MB.
gkjohnson commentedon Jun 9, 2026
I understand that some data may be proprietary but if you'd like to collaborate with public projects it would be best to produce a representative model that's shareable publicly. There are many places where things can be improved both within the project and generally within data sets so I'm not keen on jumping to the first solution that sounds appealing without making sure it's well understood.
A simple "skip levels" traversal implementation as you've described would wind up loading more tiles in order to keep gaps filled as the camera turns. I haven't dived into it extensively but my understanding is that Cesium's implementation is significantly more complex than what's been presented so I'm not super interested in discussing this before other more simple solutions have been explored.