-
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
3DTILES_implicit_tiling: How to make subtree division easier to do correctly? #576
Comments
I've wondered about this too and I think it could come down to heuristics since there are so many different factors involved. One idea is to take all of these different factors and assign priorities to them at tiling time. For example, each subtree level calculates file count overhead, file size overhead (compressed / decompressed), network request overhead, etc. Then have a default set weights or let the user provider them. The subtree levels with the minimum cost is chosen. The |
One could probably compute some numbers purely analytically, without explicitly creating the (implicit...) tileset. But the influence of the actual availability on the result is subtle: A single bit decides whether some huuuge
Of course, this is not "realistic", but may give a ballpark estimate (and ... I wanted to try stuff out ... so why not?). The problem with the exponential growth for the case of |
Suppose you had an implicit quadtree with
maximumLevel: 7
(that is, the 8th level from the top, levels are 0-indexed). Depending on how you choosesubtreeLevels
, there are some tradeoffs:subtreeLevels: 8
- means you have one subtree file. no bits are wastedsubtreeLevels: 4
- you now have up to 257 subtree files. 4 divides 8, so again no bits are wasted. Though there's many more files here.subtreeLevels: 7
- this is the worst case. since there's 8 levels with data, the first 7 show up in the first subtree, but then there's4^7 = 16384
subtrees (at most) and each one only use 1 bit for the root tile! that's(4^7 - 1) / (4 - 3) - 1 = 5460
bits wasted (plus padding), per subtree. In this case that's 11 MB of wasted space, and this is a relatively small example.How can we avoid this? Some ideas:
maximumLevel
. Each file is smaller, but again you have tons of tiny filessubtreeLevels
- there's a few things to think about:maximumLevel + 1
to be divisible bysubtreeLevels
(or as close as possible), so you avoid wasted bitssubtreeLevels
are better up to a point. You want reasonably large files so there's fewer of them, but not so large that it takes forever to download them.We want to make it easy for the tileset author to divide the subtrees efficiently, though what's the best way to do this, as it does vary a lot with the size of the tree
The text was updated successfully, but these errors were encountered: