NASA-AMMOS / NASA-AMMOS/3DTilesRendererJS

ImageOverlayPlugin: Improvements

Open
#1,206 0 comments 1 reaction 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

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

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 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.