NASA-AMMOS / NASA-AMMOS/3DTilesRendererJS
ImageOverlayPlugin: Improvements
Open
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 2.5k
- Forks
- 416
- Avg merge
- 17h 52m
- Merged PRs (30d)
- 37
Description
Performance & Preload
- Add an asynchronous option for tile splitting to avoid framerate hiccups. Either add to a priority queue or perform one iteration per frame.
- Instead of blocking on image loading we should display the best loaded parent tiles until the necessary ones are ready. Or cascade the parent tile loads downward.
- Afford a more intelligent selection of tile mapping layer to tiles (#1278)
- Can compute some implicit geometric error for the tiles.
- Calculate target overlay resolution based on the size of the bounds of the tile and associated image tile resolution rather than using a fixed 256x dimension texture.
Quality
- Add option for fading images in after they've loaded
- Add option for not showing a new layer until all images are loaded
- Add a custom priority queue function to ensure most relevant tiles are loaded ASAP
- Load images for "visible", "in frustum" and "used" tiles first.
- Consider drawing lower-res versions of tiles if high-res versions aren't present to enable more dynamic updates? Ideally we could update child tiles when parent LoDs load but this is more complex.
- Could be done in the "onTileVisible" callback such that if the data isn't loaded yet we can draw the next best complete data set.
- Add preload for tile when using planar projection. Requires projecting the bounds into the tiled image space.
- Add support for frustum transform frames
- eg when projecting a high res camera view
- TileSplitting: Detect if using quantized mesh and switch to QuantizedMesh clipper, instead?
- TileSplitting: Add support for mesh ranges, multi material.
Other
- Allow for mipmap generation option?
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 with ImageOverlayPlugin and its TileSplitting and onTileVisible paths. Separate the performance, loading, quality, projection, and mesh-support requests, then inspect how tile visibility and image loading currently work. Done would require a defined subset of these improvements with explicit behavior and coverage for the selected options.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, three.js
- Domain
- computer-graphics, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100