Hi Marco13,
Thank you for the respond.
This is happening on CesiumJS rendering engine.
For more context, I am trying to create a simple editor to position and orientate 3D models and export them as tileset.jsons. All the models given to me are positioned at origin of their own model space.
That is why I initially planned to have each model wrapped in a single tile, to be linked by the content section of a parent tile. I assumed this would allow me to have multiple models in a single tile level, each with their own transform matrix, and at the same time able to use LOD on multiple models.
The attached are the tileset.json and models that I was testing with, I apologize if the structure I am using is wrong, and for the weird file names
.
highrise.glb_TileSetLayer.Json is the entry tileset (The Parent/Root)
While the other 3 JSONs are the content and children tiles.
The GLB folder is placed in the same directory as the JSON files.
GLB.zip (8.5 MB)
TestTilesetsJSON.zip (2.4 KB)
The idea is that we could have multiple models wrapped individually in their own external tiles and linked in the content section of “PARENT” so that we could control their(models) positions with each of their transform matrix and at the same time able to use refinement methods such as “REPLACE” and “ADD” that would refine away the whole content of the “PARENT” Tile.
But only through the testing i realized that the refinement methods does not work correctly when the content section contains any external tileset.json, it would work correctly when the content section only has .glb(s) files. Both the content and children tiles are being rendered at the same time always.
So, from here I thought that it was because the external tiles linked in Content section was treated as its own tileset (new hierarchy), so I tried some “funky” method to mimic the behavior of REPLACE and ADD refinement.
Additional Information:————————————————————————————————————————————
I was somewhat able to get the method for REPLACE to work, by adding a child in the external tileset with no models, which it would replace the main content with nothing, mimicking the REPLACE refinement at certain zoom levels. (The attached is an example of what i tried to do)
highrise.glb.zip (621 Bytes)
For “ADD” refinement I tried doing the opposite, having an empty model content, and replaced with a child that has the actual content.
Ultimately both “funky” methods gave non ideal results (it is the wrong usage of 3DTile anyways
). With the REPLACEMENT method still having both the children and parent content rendering at the same time, just that with the content disappearing when zoomed in, and for some reason the content is being culled away when the children tile exits the camera’s frustrum but the content is still within.
As for the “funky” ADD method, the result was that the added tileset being repeatedly added and rendered through the globe. (Sorry I have lost the example for this case)
————————————————————————————————————————————
After which, I went to consult the documentation on 3D Tile specification and saw this:
Which unfortunately I had missed the phrase during my initial research
- Cannot have any children; tile.children shall be omitted
However, cesiumJS seems to still be taking the children of the tile into account, and having weird behaviors instead of omitting the children section of the tile.
Does this mean that it is still possible to achieve what i am trying to do ? As in, it is intended for the children of a tileset to be processed a certain way when there are external tiles in content section? Or it is just not meant to be like that and not intended for the children to be included at all when there are external tilesets in content section. (I understand to a certain extend it is also to prevent any circular inclusions)
Are there other attempts or others doing something like this before ? and how would you go about trying to have different models at different positions in a single tile level (without adjusting the models in model space), and have them be part of a LOD process too?
I hope the information i provided are relevant, and again i apologize if the question i am asking is a little weird, as i am getting quite confused and need some guidance on this to set me back on track.
At the moment I am changing the way my editor works to restrict any children in a tileset if the content has external tilesets, in case there really is no work arounds having external tilesets and LOD refinements.