Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow for breadth-first Cesium3dTiles traversal #12377

Open
jo-chemla opened this issue Dec 17, 2024 · 0 comments
Open

Allow for breadth-first Cesium3dTiles traversal #12377

jo-chemla opened this issue Dec 17, 2024 · 0 comments

Comments

@jo-chemla
Copy link

jo-chemla commented Dec 17, 2024

Feature

Hi there,
The currently implemented tile refining strategies for Cesium3dTilesets seem to rely only on a depth-first approach as shown in the Cesium3DTilesetBaseTraversal class. Given a low maximumScreenSpaceError eg 1px, such a depth-first strategy results in a long time spent loading tiles deep into the hierarchy, eventually up to the leaf level - or the first level of the hierarchy whose geometricError matches the desired screenSpaceError - before going up one level, loading the siblings, and recursively going up in the tree etc.

It would make sense, for both tiled pointclouds and tiled meshes, to load tiles breadth-first. This would result in a faster loading of the rough overview of the tileset. We have some pnts tilesets for which tiles have a very small extent covered, and using a 1px error makes that tile loading children deep in the hierarchy before siblings very apparent. Note this is my interpretation of the issue and this could come from somewhere else. Reference thread from NASA-AMMOS/3DTilesRendererJS

EDIT: The priority metric used to sort between tiles to download and evaluate is actually way more complex than just depth-first vs breadth-first. At the moment, depthDigits are the last differentiating bits if all other properties between two tiles were equal among the below. Not exactly sure why it seems like in our case that really only the level in the hierarchy is used to load tiles, which result in that depth-first look.

// Priority number format: preloadFlightDigits(1) | foveatedDeferDigits(1) | foveatedDigits(4) | preloadProgressiveResolutionDigits(1) | preferredSortingDigits(4) . depthDigits(the decimal digits)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant