Hi, before I start I would like to apologize if this is the wrong place to post this enquiry, if it is I will remove it.
For context, I am currently trying to develop a simple 3DTile editor to position, orientate, and create the LOD hierarchy of .GLB models on the globe and have them set up in a hierarchy order, much similar to the 3D Tile’s Content and Children section.
I am not extremely well versed with 3DTiles, but I did study the past 2 months the basic requirements that are needed in the 3DTile JSON:
- Asset Version 1.1
- GeometricError (Tileset level)
- root
Within root: - boundingVolume (box matrix)
- transform (ECEF matrix)
- content/contents
- geometricError (for refinement of children onto current tile)
- refine (ADD/REPLACE)
- children
And I kind of understand the difference coordinate systems, ECEF, ENU, GLTF space, and how 3DTile chains their transformation matrix through the hierarchy.
I have completed most of the editor and now am at the feature to export the the data into 3D Tile JSONs.
Initially, I assumed that with the ability to chain multiple tileset.jsons within the “children” and “contents” section of another tileset.json, I could create the LOD levels with multiple models at 1 level (1 tile).
However, I came to face the issue that when the “content” of a tile links to another tileset.json, the linked tileset.json is treated as new hierarchy tree with it’s own root.
This means that the tileset.json that i have placed in the “content” section of my parent tile, would not be refined through REPLACE or ADD, as it is it’s own starting point.
This results in both my “content” and my “children” being rendered.
So I was wondering if there is a way for me to have multiple models (GLB) in “contents” of a tile with each model having their own individual transform matrix and being able to be refined (REPLACE/ADD) through the LOD process.
Or even just 1 model in content but having a different transform to the parent tile’s transform.
Here is an example tileset.json that I have exported using the 3DTile editor and am still experimenting with it to so what i can do:
(Please do not mind if the numbers are not realistic)
(The transform is with respect to the WGS84 Ellipsoid terrain, the one without elevation height map)
{
"asset": {
"version": "1.1"
},
"geometricError": 1000,
"root": {
"boundingVolume": {
"box": [
8.753886504564434e-11,
-1.0477378964424133e-9,
-6.463378667831421e-7,
35.312259728321806,
0,
0,
0,
20.556723701651208,
0,
0,
0,
46.05924610514194
]
},
"transform": [
0.0060463718892616826,
-0.024575007565832946,
0.9996797039002623,
0,
0.9710411080870768,
0.23891246598916102,
2.2197348490410602e-16,
0,
-0.23883594325812593,
0.9707300874074715,
0.02530789619632577,
0,
-1523342.4280457885,
6191506.639058132,
160338.12087626458,
1
],
"contents": [
{
"uri" : "Content/highrise.glb/highrise.glb.json"
}
],
"geometricError": 10,
"refine": "REPLACE",
"children": [
{
"boundingVolume": {
"box": [
-0.16438095271587372,
0.10872936248779297,
0.25559502840042114,
2.5180742740631104,
0,
0,
0,
3.0675971508026123,
0,
0,
0,
1.5304730534553528
]
},
"transform": [
1.0000000000000002,
-5.275012629680962e-18,
1.1778326022837682e-9,
0,
5.061953172161897e-18,
1.0000000000000002,
-1.886713473949451e-16,
0,
-1.1778326022837682e-9,
1.7213098414491434e-16,
1.0000000000000002,
0,
5.197966856940184e-8,
1.1996161151995761e-9,
-44.05924670957029,
1.0000000000000002
],
"content": {
"uri": "Children/OuterShell.glb/OuterShell.glb.json"
}
},
{
"boundingVolume": {
"box": [
-0.9275768995285034,
-0.19049692153930664,
0.169916570186615,
1.5416074991226196,
0,
0,
0,
3.2362937927246094,
0,
0,
0,
1.4785134196281433
]
},
"transform": [
1.0000000000000002,
-5.275012629680962e-18,
1.1778326022837682e-9,
0,
5.061953172161897e-18,
1.0000000000000002,
-1.886713473949451e-16,
0,
-1.1778326022837682e-9,
1.7213098414491434e-16,
1.0000000000000002,
0,
5.197966856940184e-8,
1.1996161151995761e-9,
-44.05924670957029,
1.0000000000000002
],
"content": {
"uri": "Children/output.glb/output.glb.json"
}
}
]
}
}
If anyone is able to advice me or assist me on what I am trying to achieve, greatly appreciated.