CesiumGS / 3d-tiles

Specification for streaming massive heterogeneous 3D geospatial datasets :earth_americas:
2.11k stars 467 forks source link

Handling content overlapping the tile boundaries in implicit tiling #582

Open sanjeetsuhag opened 2 years ago

sanjeetsuhag commented 2 years ago

The 3DTILES_implicit_tiling extension enforces tile subdivision through a quadtree or octree, and there is no overlap in "sibling" tiles. However, for a tileset, the content may intersect with one of these boundaries. How should that be handled?

jerstlouis commented 2 years ago

If the content can be split up in nodes, one approach might be to include the geometry in only one of the tile (e.g. where its centre of mass lies), and then reference the sibling tile and the particular node(s) spilling into the current tile.

This way a client knows they need to render only this part of a neighboring tile if that full tile is not also rendered. An idea we first came up with in OGC Testbed 13 and also described in our GNOSIS Map Tiles draft specification.

It was originally thought of for points vector tiles referencing individual models, but I think the approach works as well if you can refernce individual nodes within a glTF model for an entire tile batching models.

Another advantage of having a glTF node structure in the batched 3D models of the tile would be to adjust the height of models based on the DEM in use, or the current LoD of that DEM.

UniquePanda commented 4 months ago

Just adding a use case here: When generating a tileset out of vector data (e.g. shapefiles) it is usually not desireable to split up that data at bounding box boundaries. It's doable and surely way easier than splitting a 3D model, but it doesn't really make sense from a user's point of view (because one vector geometry represents one "thing that I want to see" + reducing the vector geometry for higher LODs often makes no sense, so you end up with content only in the leaf tiles anyways).

I can see that explicitly defining overlaps between tiles is kinda against the "philosophy" of using implicit tiling. Still it would be very nice to have this option available, maybe as an extension to the 3DTiles 1.1 spec?