NASA-AMMOS / 3DTilesRendererJS

Renderer for 3D Tiles in Javascript using three.js
https://nasa-ammos.github.io/3DTilesRendererJS/example/bundle/mars.html
Apache License 2.0
1.63k stars 291 forks source link

Support .vctr tiles #814

Open xawill opened 1 month ago

xawill commented 1 month ago

Is your feature request related to a problem? Please describe.

I am trying to add this tileset which is supposed to display labels of places. (Limited) Docs of the tileset available here. However, the library throws an error:

TilesRenderer : Failed to load tile at url "X/Y/Z.vctr"

It looks like .vctr tiles are not (yet) implemented. Is that correct, or is there another issue somewhere (with the tileset, maybe?).

Describe the solution you'd like

If this is really a lack of support, I would be willing to contribute to the implementation, with your guidance. My proposal would be to do something similar to google maps 3D which displays name of places in "2.5D", the text being anchor at a 3D location but always facing the user for readability. I think three.js' CSS3DRenderer would be a great use of that.

Describe alternatives you've considered

NA

Additional context

NA

xawill commented 1 month ago

Example of a typical .vctr tile from this tileset: 31429.vctr.txt

gkjohnson commented 1 month ago

Hello! I'm not sure what a "vctr" file is. Is there a specification for it? Is this something custom from that data platform? The 3d tiles specification only allows for b3dm, i3dm, pnts, cmpt (all deprecated), and glTF tile contents. Any tile set providing tile content formats outside of those would technically be out-of-spec.

xawill commented 1 month ago

It is for Vector data. It looks like this vctr branch is not under active development anymore (see this PR), but still has some pretty complete definitions.

I guess the author of this tileset found this to be the only way to display labels in 3d-tiles similar to what google is doing. Or is there a possibility you know with standard 3d-tiles? If yes, let me know and I'll propose to change to the tileset owner.

In anycase, if this is out-of-spec, any chance for a plugin or whatever remote support? As said, I would implement it myself, if you agree having it integrated.

gkjohnson commented 1 month ago

Do you have an image of what this looks like? The in-progress definition looks like it just stores points, lines, and polyons, which can all be rendered in glTF so I'd think that format would be good enough.

Maybe @lilleyse has some insight into the motivation behind the "vctr" format?

@xawill either way I'd probably ask the owner of the data sets why they're using a non-standard format for their data.

lilleyse commented 1 month ago

The vctr format was created for storing 3D vector data but nowadays I would try to use glTF for this. I did some experiments a few years ago and saw pretty good results switching to glTF + EXT_structural_metadata + EXT_meshopt_compression.