Skip to content

feat: WIP add MVT and PMTiles support#1440

Draft
AlaricBaraou wants to merge 4 commits intoNASA-AMMOS:masterfrom
AlaricBaraou:feature/mvt-clean
Draft

feat: WIP add MVT and PMTiles support#1440
AlaricBaraou wants to merge 4 commits intoNASA-AMMOS:masterfrom
AlaricBaraou:feature/mvt-clean

Conversation

@AlaricBaraou
Copy link
Contributor

This PR is a first attempt at introducing support for Mapbox Vector Tiles (MVT).
I explored two approaches, rendering either as native Three.js geometry or as rasterized textures.
This addresses the goals outlined in #982 and expands upon the initial work in #990.

This can be used as a start to build on top of / refine.

I have very little knowledge of MVT, most of this have been achieved by imitating the existing plugins and loaders and through LLM assistance.

While it seems to mostly work ( especially the rasterized approach )
It would be better to validate / review everything.

I'm more than happy to assist with that and will commit my own future improvements as I start to use this in my app.

Here is a video of the two added examples.

http://localhost:5173/three/mvt.html to debug loading a single tile and comparing it with the expected result.
http://localhost:5173/three/mvt_globe.html to test the projection of the tiles on a globe.

demoMVT.mp4

- Add PMTilesLoaderBase for core PMTiles archive handling
- Add PMTilesMeshPlugin for 3D mesh rendering from PMTiles
- Add PMTilesPlugin and PMTilesImageSource for texture rendering
- Refactor MVT rendering into composable parts:
  - VectorTileStyler: shared styling configuration
  - VectorTileCanvasRenderer: canvas/texture rendering
  - VectorTileMeshRenderer: 3D mesh rendering
  - VectorTileIterator: feature iteration utility
@AlaricBaraou AlaricBaraou changed the title feat: WIP add MVT support via MVTTilesMeshPlugin and MVTTilesPlugin feat: WIP add MVT and PMTiles support Jan 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant