NASA-AMMOS / NASA-AMMOS/3DTilesRendererJS

MVT: Add support for annotations

Open
#1,600 2 comments 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

  • 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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.