Juggling priorities…
However, I had another look. The validation errors (just to keep track of that) are of two forms. Several errors are
{
"type": "BINARY_INVALID_ALIGNMENT",
"path": "1/1/1.b3dm",
"message": "The byte length must be aligned to 8 bytes",
"severity": "ERROR"
},
That’s clearly invalid. It’s not a “critical” error, insofar that many tools will not rely on the alignment. But any specification-compliant tool could rely on the alignment, and it could crash, so that should simply be fixed. It is already tracked internally, but I don’t know when this will be addressed.
There is one other error:
{
"type": "CONTENT_JSON_INVALID",
"path": "1/1/0.b3dm",
"message": "Batch table property \"gml:name\" array length must equal features length 161.",
"severity": "ERROR"
}
That’s also invalid. It might also cause crashes in other applications. I think that it is not tracked explicitly, and I haven’t investigated the details. I’ll just add it to the internal issue for now.
That said: We had some discussion about ‘versions’ above:
But new data may include some new features that are simply not supported by old CesiumJS versions
That is a question of which format is delivered, not which viewer is used - in my opinion !!
That’s correct. I don’t know (from the tip of my head) which tileset version the GML tiler is currently generating. But if it is generating 3D Tiles 1.0, then it should indeed work in older CesiumJS versions as well.
One thing that was not taken into account in this discussion is that of the tile content. Specifically: glTF (.glb files). And even more specifically: Which extensions this glTF contains, and which of them are supported in the client. And to come to the point: Whether the client supports the KHR_draco_mesh_compression extension. By default, GML is tiled into Draco-compressed data (and KTX textures, if applicable). Older versions of CesiumJS may not support this.
When upploading your data, you should disable KTX and Draco compression:

The result should be a data set like this one:
Forum 45502 - GML Errors - LoD2_32_574_5922_1_HH.zip (426.4 KB)
This can be loaded in CesiumJS 1.91 with a Sandcastle like this one:
const viewer = new Cesium.Viewer("cesiumContainer", {
globe: false
});
function loadTileset() {
const tileset = new Cesium.Cesium3DTileset(
{
url: "http://localhost:8003/tileset.json",
debugShowBoundingVolume: true,
}
);
viewer.scene.primitives.add(tileset);
const offset = new Cesium.HeadingPitchRange(
Cesium.Math.toRadians(-45.0),
Cesium.Math.toRadians(-45.0),
2800.0
);
viewer.zoomTo(tileset, offset);
}
loadTileset();
The result should then look like this:
Let me know if anything doesn’t work.