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

Support of Implicit Tiling #608

Open
AnthonyGlt opened this issue Jul 11, 2024 · 5 comments
Open

Support of Implicit Tiling #608

AnthonyGlt opened this issue Jul 11, 2024 · 5 comments
Labels
enhancement New feature or request
Milestone

Comments

@AnthonyGlt
Copy link
Contributor

Implicit Tiling

I wish to implement the support of Implicit Tiling (introduced in 3D Tiles 1.1). It has been discussed in different issues but is there already a plan or ideas how to do it ?

I've seen that in Cesium, the implicit tiling is directly managed from Cesium3DTileset, which is kind of the equivalent of TilesRendererBase here. Do you think I should do a similar implementation ?

I've also noticed the recent addition of plugins, will it be a better idea to implement a ImplicitTilingPlugin with the necessary hooks ?
What is your take on this topic ?

Do you have any tips/warnings to help me in this new implicit tiling support in 3DTilesRendererJS ?

I'll first begin by the parsing of the .subtree files.

Thank you

@AnthonyGlt AnthonyGlt added the enhancement New feature or request label Jul 11, 2024
@gkjohnson gkjohnson added this to the v0.3.36 milestone Jul 14, 2024
@gkjohnson
Copy link
Contributor

gkjohnson commented Jul 14, 2024

Hello! A contribution to support implicit tiling would be great - there hasn't been thought put into this feature yet, though, so your help here would be appreciated. As far as I understand the feature requires support for something akin to "virtual" tile children that have implicitly calculated bounding volumes and content URLs. Is that a reasonable summary?

Do you think I should do a similar implementation ?

I'm less familiar with the Cesium3DTileset implementation for this. Do you mind giving a brief description of what a similar implementation would look like?

Do you have any tips/warnings to help me in this new implicit tiling support in 3DTilesRendererJS ?

I think one of the larger things that will need to be considered here is how to handle these "virtual" child tiles since there's a lot of intermediate information stored on the tile object for the sake of traversing and loading data. I was originally thinking we'd want to avoid generating child tile representations for each implicit child but that may be an okay place to start since we'll ultimately have to create an object to store the intermediate data, anyway - whether it's stored as a child or somewhere else. An optimization here could be deleting all child objects to free up memory as soon as a tile is unloaded as the camera moves.

I'm curious as how Cesium is handling this already if you know, though.

I've also noticed the recent addition of plugins, will it be a better idea to implement a ImplicitTilingPlugin with the necessary hooks ?
What is your take on this topic ?

I think this should be enabled by default but using a plugin could help compartmentalize the logic a bit more - once we have a more solid idea of how this should be implemented I think it will be easier to say.

@gkjohnson gkjohnson modified the milestones: v0.3.36, v0.3.37 Jul 14, 2024
@AnthonyGlt
Copy link
Contributor Author

Thank you for the answer
I have a draft of an implementation. I'll open a MR soon, once the code is cleaner.
I'll explain the structure, i've tried to keep intact the existing TilesRenderer architecture.
My MR will concern a limited scope of the implicit tiling for now, depending on the time I have to work on it.

I'll bring more infos in the MR, i've just wanted to notice you that I was still on it and I have good results 👍

@AnthonyGlt
Copy link
Contributor Author

The MR :
#650

@gkjohnson

@AnthonyGlt
Copy link
Contributor Author

AnthonyGlt commented Aug 12, 2024

TODOs:

  • OCTREE support. Doesn't seem to difficult feat(ImplicitTiling): add octree support #791
  • Sphere bounding volume support. Not to difficult. I only did the Region & Box
  • Subtree JSON Format support. I only did the Binary format
  • Metadata support
  • External support (e.g The buffer could be stored in another file)
  • Extension 3DTILES_implicit_tiling support. For now the tileset must have the object implicitTiling as follows:
"implicitTiling": {
      "subdivisionScheme": "QUADTREE",
      "availableLevels": 21,
      "subtreeLevels": 7,
      "subtrees": {
        "uri": "subtrees/{level}/{x}/{y}.json"
      }
    }

  • Multiple Contents support. Only one content is supported for now
  • Test implicit tiling defined in children

CODE IMPROVEMENTS:

@gkjohnson
Copy link
Contributor

If you're looking for other, more complete tile sets to try out and test - these Cesium ion tile sets include implicit tiling roots:

  • asset id 2389063
  • asset id 2389064

See this Cesium sandbox demo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants