I’m trying to export my own GLTF model into a 3D Tiles format that supports hierarchical Level of Detail (HLOD) similar to what’s demonstrated in the Cesium Sandcastle BIM example.
My goal is to:
Convert a complex GLTF model that already has a hierarchy (e.g., multiple sub-meshes, nodes, and structure)
Generate a 3D Tiles dataset with tile+LOD style subdivision (multiple levels of detail for performance)
Then upload and visualize it in Cesium Ion
I tried using the 3d-tiles-tools npm package, but it seems to convert my model into a single mesh, flattening the hierarchy so I lose the structure and don’t get true LOD behavior.
Questions:
How can I export my GLTF model into 3D Tiles that preserve hierarchy and support LODs (HLOD)?
Is there an official or recommended workflow or tool for preparing such tilesets for upload to Cesium Ion?
Can Cesium Ion itself generate the tile+LOD structure automatically, or must it be pre-tiled before upload?
Any guidance or examples would be greatly appreciated!
This may be the most important aspect here. The Design Tiler that is part of Cesium ion should be able to convert such a model into a tileset, and preserve the relevant structures inside that model. You can upload the glTF/GLB model to ion, and under “What kind of data is this?”, you can select “Architecture, Engineering or Construction model (BIM/CAD)”.
Other than that, a few asides:
The model in the Cesium Sandcastle BIM example is a single model. It does not have any form of hierarchy or level of detail. It is just a 6MB file that contains the whole model. A better example for showing the possible output of the design tiler is Sandcastle | CesiumJS
The 3d-tiles-tools are not a tiler. It is not entirely clear how you intended to use them for your purpose. And while the tools generally contain a few “building blocks” that could help to achive much of the functionality that you seem to be looking for, they are primarily a command-line application that offer the exact commands that are listed in the main README.md. For example, when you have a set of GLB files, you can use createTilesetJson to create the tileset JSON. But this will not do any form of simplification or processing or generation of LOD level. It will just generate a tileset JSON file for the models, as they are.
Does the Design Tiler include support for true hierarchical LOD (HLOD) generation — i.e., automatically subdividing the model into multiple LODs at different tile levels for streaming?
If so (or even if not fully automatic), is there a way to run the same tiling process offline or on-premises under license (rather than uploading to Cesium ion)? Or is there an open-source package you’d recommend for generating hierarchical 3D Tiles from GLTF/GLB in a local environment?
My client must keep the data wholly offline, so any guidance on licensing or self-hosted tooling is appreciated.
For 1.: I think that the Design Tiler currently only does a “structural subdivision”, but no mesh simplicifation. But this structural subdivision could also allow an important form of data streaming. And I think that mesh simplification is on the roadmap, but I’d have to verify that and see whether there is a timeline. (@sean_lilley correct me if I’m wrong or there are further details to add here).
For 2.: There is the option of Cesion ion Self-Hosted. It will offer the tiling functionality from ion, in a self-hosted environment. You can reach out for more information about that.
(About open-source packages: There are many, many open-source tools for converting various kinds of data into 3D Tiles. Some are listed in the 3D Tiles Resources page. But I certainly cannot recommend one. There are many aspects to consider, about the nature of structure of the input data, which data should be preserved in which form, and the quality of the resulting output)