d3bm/i3bm file generate

Hi there!

I have a lot of gltf files which represents LOD pyramid of the same model. to view this model I am considering using Cesium's 3d-tiles branch.

As I created the dataset I discovered the 3d-tile tile format does not contain glTF model. how can I load glTF model as tile? and how to declare the model's center?

The solution for this problem may be the i3bm/b3dm format but i am struggling to convert it to these formats.

Thanks, Eran.

Hello Eran,

I’m not sure if there is any tool to assist in converting your gltf models into a 3D tiles format.

AGI (the company that founded Cesium and employs most of the team) may make a converter available at some point, but I’m not sure about the details. Keep an eye on the forum for updates.



Hi Eran,

Thanks for the interest in 3D Tiles. For the latest info, keep an on this thread.

To learn about the format, check out the spec if you haven’t already. Sean Lilley and I are also doing a deep dive on strategies for generating 3D Tiles tilesets at Web3D in late July. The slides will be posted to the above thread afterward.

Also, as Hannah mentioned AGI is building commercial tools to generate 3D Tile tilesets, see Introducing cesiumjs.com.


Thank you both for the quick response

I think that I will try to covert glTF to b3dm tiles by myself.

The gltf files are created using the Collada2Gltf convertor and will be converted to BglTf using the binary-gltf-utils script [by Qantas94Heavy]

So I have few questions about the format:
1. from the b3dm tile specification I don't understand what are the vertex and the batches (I think I got that the Batches should be the models in the tile...)
2. how does the cesium should know the center of the model? when I loaded single gltf using the Cesium.Model.fromGltf I provided it in the "modelMatrix" attribute.
3. can the "binary gltf" section contain more than 1 gltf file?
4. do you think there is simple way to convert single glTF model to a single b3dm tile? I don't think it should be complicated but somehow I am struggling with this probllem couple of weeks

Thanks! Eran

Hi Eran,

(1) Each vertex generally has position, normal, texture coordinate, etc. like typical 3D models. With .b3dm, each vertex also has a batch id, which identifies which feature (e.g., building) the vertex belongs to. The batch id is an index into the batch table with per-feature attributes.

(2) As of now, .b3dm tiles are in WGS84 using the glTF extension, CESIUM_RTC. In the next month or two, I expect to add a model matrix to tileset.json (or maybe individual tiles) to, for example, handle indoor use cases where the geometry is relative to a location coordinate system.

(3) No, the idea is to “batch” together multiple models into one glTF file and use the batch id vertex attribute to uniquely identify them. This provides the best Cesium rendering performance. You can also use a Composite Tile to combine multiple .b3dm tiles, but the rendering performance is not as good.

(4) It shouldn’t be much harder than adding the .b3dm header. For simple examples, see https://github.com/AnalyticalGraphicsInc/cesium/tree/3d-tiles/Specs/Data/Cesium3DTiles/Batched