-
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
Update and extend the implicit tiling examples #512
Comments
Note that there are more tilesets used for unit testing in CesiumJS: https://github.com/CesiumGS/cesium/tree/main/Specs/Data/Cesium3DTiles/Implicit We'll have to check through them to see if any of them need updating. |
For lack of a better place to put this, here's another implicit tiling example that would be good to make into a real tileset and put in {
"asset": {
"version": "1.0"
},
"geometricError": 8000,
"extensionsUsed": [
"3DTILES_implicit_tiling"
],
"extensionsRequired": [
"3DTILES_implicit_tiling"
],
"root": {
"boundingVolume": {
"region": [-3.14159265359, -1.57079632679, 3.14159265359, 1.57079632679, 0, 1000]
},
"refine": "REPLACE",
"geometricError": 4000,
"children": [
{
"boundingVolume": {
"region": [-3.14159265359, -1.57079632679, 0, 1.57079632679, 0, 1000]
},
"content": {
"uri": "content/western-hemisphere/{level}/{x}/{y}.b3dm"
},
"geometricError": 2000,
"extensions": {
"3DTILES_implicit_tiling": {
"subdivisionScheme": "QUADTREE",
"maximumLevel": 20,
"subtrees": {
"uri": "subtrees/eastern-hemisphere/{level}/{x}/{y}.subtree"
},
"subtreeLevels": 7
}
}
},
{
"boundingVolume": {
"region": [0, -1.57079632679, 3.14159265359, 1.57079632679, 0, 1000]
},
"content": {
"uri": "content/eastern-hemisphere/{level}/{x}/{y}.b3dm"
},
"geometricError": 2000,
"extensions": {
"3DTILES_implicit_tiling": {
"subdivisionScheme": "QUADTREE",
"maximumLevel": 20,
"subtrees": {
"uri": "subtrees/eastern-hemisphere/{level}/{x}/{y}.subtree"
},
"subtreeLevels": 7
}
}
}
]
}
}
|
This has been mostly addressed in https://github.com/CesiumGS/3d-tiles-samples, and #562 has any further details. |
There are currently three examples for implicit tiling data sets. One of them is https://github.com/CesiumGS/3d-tiles/tree/3d-tiles-next/extensions/3DTILES_implicit_tiling/examples/sparseOctree
The tileset JSON says
"subtreeLevels": 2
.The section https://github.com/CesiumGS/3d-tiles/tree/3d-tiles-next/extensions/3DTILES_implicit_tiling#availability-bitstream-lengths says that the length of the tile availability bitstream is
(N^subtreeLevels - 1)/(N - 1)
For
N=8
andsubtreeLevels=2
, this should yield 9.The section also says that
lengthBytes = ceil(lengthBits / 8)
, which would be 2, in this case.But the tileAvailability of the JSON of subtree
0/0/0/0.subtree
refers tobufferView: 0
, which is said to have"byteLength": 1
:The same applies to the
basicExample
.The examples should be updated to be valid, and extended to show different configurations, like sparse- and dense quadtrees and octrees with different heights and subtree-heights.
Preferably, the examples should be documented extensively, including information that can otherwise only be derived from actually reading the subtree files and interpreting the data correctly. This means that the JSON part that is contained in the subtree files should be part of the documentation, and the binary parts (i.e. the availability info) should be documented in a form that might say, for example,
so that implementors can easily verify that their interpretation of the data is correct.
(Rumours say that such examples could go into https://github.com/CesiumGS/3d-tiles-samples at some point, but making sure that the ones that are currently here are valid would be the first step, if these new examples are not created with a completely new mechanism...)
The text was updated successfully, but these errors were encountered: