NASA-AMMOS / NASA-AMMOS/3DTilesRendererJS
MVT: Add support for annotations
Open
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 2.5k
- Forks
- 416
- Avg merge
- 17h 52m
- Merged PRs (30d)
- 37
Description
- Create a dedicate MVT Annotations plugin that takes an overlay instance (usable via ImageOverlayPlugin)
- Track annotations (road names, locations) with a "locking" mechanism that prioritizes data from the higher LoD annotations.
- Each annotation will have a unique ID constructed for the content + quantized location
- The plugin will use tile visibility to determine which tile content is visible and track the potential annotations across the scene.
- Users can provide a "sort" callback that can be used to sort visual priority of annotations (default set to vertical positioning)
- Road names candidate locations are determined ahead of time.
- Screen space occupation grid (granularity TBD, possibly determined by annotation size) is used to detect and prevent "clashing" of annotations.
- Positioning / settling of annotations is done with raycasting spread over multiple frames.
- Text is done with a text glyph atlas and reference counting to determine whether the space is free. To start we can use a canvas set to the target resolution (no SDF) and instancing via custom shader.
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 reviewing ImageOverlayPlugin and the issue's requirements for MVT annotation tracking, tile visibility, prioritization, and screen-space collision handling. Identify the existing overlay and rendering entry points before proposing the plugin design. Done means a usable annotation plugin supports unique IDs, LoD locking, sorting, collision avoidance, and multi-frame positioning with rendered text.
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
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100