-
Notifications
You must be signed in to change notification settings - Fork 469
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implicit tiling schemes #92
Comments
Could also be useful for #90. |
The tileset.json would have to specify the tile format - or each tile could say the formats of its children - and each tiling scheme may have some specific data like a bounding volume if it isn't global, e.g., {
"asset": { /* ... */ },
"tilingScheme": "quadtree",
"format": "b3dm",
"boundingVolume" : {
"region": [ /* ... */ ] // could default to global
}
}
|
This might have to get pushed post 1.0, but I would at least like to prototype beforehand since this is an important feature for global-scale datasets. @austinEng perhaps you can help with this once you are ramped up. |
This should probably be called implicit tiling scheme, not explicit tiling scheme. Renamed. |
For point clouds, also see https://github.com/connormanning/ept |
A few potential use cases / interoperability to consider
Implementation notes
|
Requested on the forum for figuring out which buildings are in a given area. |
Some of the potential schema ideas coming out of the implicit tiling brainstorm/prototyping: layerNames string array that supplies prefixes (or postfixes) to the base uri for fetching those layers of data. One set of traversal calculations and one availability for a bunch of different layers of data that pertain to the same context. |
Draft spec: #386 |
An idea I really like: Implicit tiling in 3D Tiles should:
This might sound impossible, but it's surprisingly easy to achieve with a small tweak. Rather than expressing implicit tiling as a special section in the tileset.json with a bunch of parameters that clients need to understand, instead allow the BVH to be loaded from an arbitrary external URI referenced in the tileset.json. Then, provide some standard external URLs can be used to express standard tiling schemes. So, a tileset.json might look like this:
So now a client that understands the quadtree implicit tiling scheme just notes the URI and knows what do; no need to actually request it. While a client that doesn't understand that particular implicit tiling scheme simply has to request the full 3D Tiles BVH available at that URI. By requesting and caching unfamiliar tiling schemes, clients can "learn" new implicit tiling schemes. Obviously lots of details to work out, particularly around the standard URIs. But I think this provides a really nice progressive enhancement approach. There's almost zero new mandatory spec for clients to deal with, but it still enables optimization - in an extensible way - by sophisticated clients. |
Implicit tiling is now an extension: https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling. Will open a new issue for #92 (comment) |
The general spatial data structure in tileset.json does not allow for random access, e.g., "give me tile x,y at level z" because the tiling scheme is not fixed; instead the data structure needs to be searched top-down.
If random access is needed, we could allow a tileset to advertise itself as using a particular typing scheme, e.g.,
The text was updated successfully, but these errors were encountered: