Error: "Failed to load binary glTF..."

Hello,

so I’m trying to load a tileset from a webpage (http:///…) with Cesium for Unreal, but for some of the .b3dm files I get the following log messages:

LogCesium: Error: [2021-11-13 12:47:42.325] [error] [GltfContent.cpp:44] Failed to load binary glTF from http://…/R.b3dm:

  • GLB binary chunk size does not match the size of the first buffer in the JSON chunk.

LogCesium: Warning: [2021-11-13 12:47:42.325] [warning] [GltfContent.cpp:51] Warning when loading binary glTF from http://…/R.b3dm:

  • Image bufferView’s byte offset is 0 and the byteLength is 300172, the result is 300172, which is more than the available 0 bytes.

Unfortunately I cannot share the link. What I can say is this:

  • Bringing the tileset into focus (via “World Outliner”) brings me to the correct location, but nothing is rendered.
  • The glTF version is 2.0 (there were similar posts to this that suggested an update of the glTF version to version 2)
  • Apparently it seems to work for the web version of Cesium, just not for Unreal

I know this may be difficult to answer w/o being able to test it, but it would be much appreciated if anybody has gotten an error like this before and would like to share how they approached it.

Hi @kebiro,

This issue will likely be hard to figure out if you aren’t able to share the tileset. Any other information you’re able to provide could be useful:

  • Do you know what tool was used to generate the tileset?
  • You mentioned it’s working with CesiumJS - does CesiumJS produce any errors when it loads the tileset?
  • You mentioned only some of the .b3dm files are causing issues. Are those specific tiles rendering normally in CesiumJS?

You can also try uploading it to Cesium ion, and checking if that makes a difference, or if ion produces any error messages when trying to upload it.

Hello @agallegos ,

thanks for your reply! The tool used by @kebiro was developed by Fraunhofer IGD / me quite some time ago. The tileset loads without errors in CesiumJS (1.88). Only one deprecation warning of “URL” vs “URI” in the tileset.json.
Extracting the glb out of the b3dm and running it trough the validator gives the following result:

{
    "uri": "R.glb",
    "mimeType": "model/gltf-binary",
    "validatorVersion": "2.0.0-dev.3.4",
    "validatedAt": "2021-12-23T17:44:44.274Z",
    "issues": {
        "numErrors": 1,
        "numWarnings": 0,
        "numInfos": 1,
        "numHints": 0,
        "messages": [
            {
                "code": "UNSUPPORTED_EXTENSION",
                "message": "Cannot validate an extension as it is not supported by the validator: 'CESIUM_RTC'.",
                "severity": 2,
                "pointer": "/extensionsUsed/0"
            },
            {
                "code": "GLB_UNEXPECTED_END_OF_CHUNK_HEADER",
                "message": "Unexpected end of chunk header.",
                "severity": 0,
                "offset": 549924
            }
        ],
        "truncated": false
    }
}

If this error is critical, we would need to update our glTF converting process. But then, why does it work in CesiumJS.

CesiumJS has a longer development history than Cesium for Unreal and therefore has more features and support for different types of files. I’ve had tiles that pass through the validator still error in Cesium for Unreal.

As for the error, it looks like Cesium for Unreal doesnt support CESIUM_RTC currently. You can find the ticket here.

2 Likes