Faster 3D Models with Binary glTF
Update: This initial work on Binary glTF has led to the KHR_binary_glTF extension, which should be used instead of CESIUM_binary_glTF.
Starting with Cesium 1.10, the new Binary glTF extension makes 3D models 10-30% faster to load, especially models with a lot of geometry. To use it, select the Binary glTF option in the Cesium model converter, which will return a .bgltf file that can be loaded with Cesium 1.10 or later using the same API as usual.
Read on for the under-the-hood details.
glTF is a JSON format with binary payloads for geometry, textures, animation key frames, and skin inverse-bind matrices. These resources are referenced by uri using a glTF buffer, so they could be separate from the JSON:
"buffers": {
"duck": {
"byteLength": 102040,
"type": "arraybuffer",
"uri": "duck.bin"
}
}
or embedded using a data uri:
"buffers": {
"Cesium_Air": {
"byteLength": 172256,
"type": "arraybuffer",
"uri": "data:application/octet-stream;base64,AAAAAMGqKj6fqq..."
}
}```
Previously, the Cesium model converter base64-encoded external resources for simplicity.
Cesium 1.10 introduces support for Binary glTF (CESIUM_binary_glTF), a glTF extension that defines a binary container format containing the glTF JSON and binary resources (and shader sources).
Binary glTF has the convenience of a single file, like using data uris, but is smaller since binary data is not base64-encoded, and faster to load since base64-decoding is not required at runtime.