NASA-AMMOS / NASA-AMMOS/3DTilesRendererJS
TerrainRGB, Terrarium Plugins: Further Improvements
Open
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
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 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