NASA-AMMOS / NASA-AMMOS/3DTilesRendererJS
Investigate ability to "skip traversal"
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 2.5k
- Forks
- 416
- Avg merge
- 17h 52m
- Merged PRs (30d)
- 37
Description
https://cesium.com/blog/2017/05/05/skipping-levels-of-detail/
Related Cesium traversal: Cesium3DTilesetSkipTraversal.js
It seems as though children are skipped based on screen space error metrics in the same way they are in this project along with extra factors and options (see options):
baseScreenSpaceError (number): defines the screenspace error that we are guaranteed to load up to before performing skip traversal.immediatelyLoadDesiredLevelOfDetail (bool): only loads the highest level of detail required (would be best to allow for limiting an error or level "range", instead, to get this effect)loadSiblings (bool): whether to load all sibling tile data of visible tiles (ie outside the frustum)skipLevels: how many levels of tiles to blindly skip after the initial tiles that mean the base screen errorskipScreenSpaceErrorFactor: the option we already have (errorThreshold) - how many tiles to skip based on LoD
From looking at the code the load behavior here is fairly different. "REPLACE" tiles refine seems to immediately traverse to the next level when a child is visible and does not wait for all children to load to ensure visual coherence. There will likely be tile gaps and flashing if moving the camera too quickly? But if the skip threshold is set well enough it's possible that when the camera moves the tile error won't shift enough to cause issues.
Other
- "odd" or "every third" rendered levels can also be skipped to reduce the number of tiles to load.
- An "inflated" load frustum could be used to avoid having gaps on zoom out. eg two cameras overlapping - one with a smaller pixel ratio than the other causing a lower res tile to load just outside of view.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading Cesium3DTilesetSkipTraversal.js and the linked Cesium traversal documentation, then compare its options with this project's current traversal behavior. The investigation is complete when the feasibility, scope, and expected behavior of skip traversal are clearly established; the issue does not name a local implementation file or test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, three.js
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100