NASA-AMMOS / NASA-AMMOS/3DTilesRendererJS

Investigate ability to "skip traversal"

Open
#480 1 comment 2 reactions 0 assignees View on GitHub

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 error
  • skipScreenSpaceErrorFactor: 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.