NASA-AMMOS / NASA-AMMOS/3DTilesRendererJS

Plugins: Make dynamically-expanding plugins resilient to "loadAncestors"

Open
#1,582 1 comment 0 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

Right now some plugins will dynamically expand their children when loading geometry and delete the children when disposing the tile. However this means that the loaders don't behave as expected when the optimized "loadAncestors" setting is set to false since children aren't available until the parents are processed.

Somehow we need to know that an unloaded tile can "expand" further as well as afford unloading. Using a mechanism similar to "external tilesets" may work? Eg automatically insert an "external" node that will instantiate 3-4 layers of nodes. Then disposal should "just work" as it does with external tile sets.

The affected plugins:

  • ImageFormatPlugins (deprecated)
  • GeneratedSurfacePlugin
  • QuantizedMeshPlugin

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 tracing tile loading and disposal for ImageFormatPlugins, GeneratedSurfacePlugin, and QuantizedMeshPlugin, focusing on behavior when loadAncestors is false. Compare their dynamic child expansion with the external-tileset mechanism suggested in the issue. Done means affected plugins can expand unloaded tiles and unload their generated children correctly under that setting.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, three.js
Domain
computer-graphics
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.