NASA-AMMOS / NASA-AMMOS/3DTilesRendererJS

TerrainRGB, Terrarium Plugins: Further Improvements

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

Related to #1690

Issues

  • The current implementation does not handle raycasting / levels so well or flexibly, resulting in skipped LoDs. Instead of trying to expand children into the hierarchy it would be best to create multiple sub-meshes per tile and run per-mesh bounding box checks to accelerate raycasting
  • Adjusting the height scale means every bounding box must be expanded. It would be best to do this as-needed or as-traversed, instead, with a kind of dirty check.
  • The height altitude should be in a consistent unit and / or scale relative to the scale of the stretched scale of the world around it (either consistent based on camera position or scaled based on locality)

Functionality / Perf

  • Core bounding-volume update infrastructure in the tiles renderer (grow-only bounds, animation, parent-child consistency, as-traversed dirty updates instead of full traversal on heightScale change)
  • Debug bound visualizations refreshing after heightScale changes (falls out of the above)
  • Improve accounting of downloaded DEM memory (currently double counted on sub meshes with shared items)
  • Avoid regenerating a mesh on raycast
  • Only update bounds when traversed or enable dynamic bound checking to avoid perf hit when updating height scale

Effects

  • Hillshade-style shading effect
  • Concavity map revisit (dynamically generated from DEM)

Other

  • SkirtedPlaneGeometry adoption in GeneratedSurfacePlugin
  • Increase skirt length?
  • Upstreaming the bump map chunk fixes to three.js
  • Frustum culling support (likely unnecessary unless users request it since it's disabled by default - requires updating bounds)

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 reading the TerrainRGB and Terrarium plugin implementation related to #1690, then trace the tiles renderer's raycasting, bounds-update, DEM memory, and heightScale paths. Review GeneratedSurfacePlugin and SkirtedPlaneGeometry as additional entry points. The issue needs one scoped improvement and explicit acceptance criteria before completion can be determined.

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
Active
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.