Skip to content
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

Express implicit tiling scheme in URI #569

Open
lilleyse opened this issue Nov 15, 2021 · 0 comments
Open

Express implicit tiling scheme in URI #569

lilleyse opened this issue Nov 15, 2021 · 0 comments

Comments

@lilleyse
Copy link
Contributor

lilleyse commented Nov 15, 2021

Originally posted by @kring in #92 (comment)

An idea I really like:

Implicit tiling in 3D Tiles should:

  1. allow new implicit tiling schemes to be defined, and
  2. not require that clients actually understand the implicit tiling scheme in order to work.

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:

{
    "asset": {
        "version": "1.0"
    },
    "geometricError": 563.8721715009725,
    "root": {
        "uri": "https://cesium.com/3dtiles/tilingschemes/quadtree?bbox=-180,-90,180,90&root=2,1&levels=12"
    }
}

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.

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

No branches or pull requests

1 participant