This is not a problem with CesiumJS or Cesium ion, but with the model itself.
Looking at the data from the POSITION
accessor:
[( -8.56224, 11.66443, 12.01517),
( 9.24635, 11.66443, 12.01517),
( 9.24635, -12.25911, 12.01517),
( -8.56224, 11.66443, 12.01517),
( 9.24635, -12.25911, 12.01517),
( -8.56224, -12.25911, 12.01517),
( -8.56224, -12.25911, 12.01517),
( 9.24635, -12.25911, 12.01517),
( 9.24635, 11.66443, 12.01517),
( -8.56224, -12.25911, 12.01517),
( 9.24635, 11.66443, 12.01517),
( -8.56224, 11.66443, 12.01517),
( 0.00000, 11.66443, 2.57523),
( 0.00000, 11.66443, 20.86043),
( 0.00000, -12.25911, 20.86043),
( 0.00000, 11.66443, 2.57523),
( 0.00000, -12.25911, 20.86043),
( 0.00000, -12.25911, 2.57523),
( 0.00000, -12.25911, 2.57523),
( 0.00000, -12.25911, 20.86043),
( 0.00000, 11.66443, 20.86043),
( 0.00000, -12.25911, 2.57523),
( 0.00000, 11.66443, 20.86043),
( 0.00000, 11.66443, 2.57523)]
This will be a total of 8 triangles (and not the 4 that you would expect for two rectangular planes). So the rectangles essentially exist twice, in the same place. The result of that is severe z-fighting.
In https://gltf-viewer.donmccurdy.com/ , it looks like this:
and similarly in https://sandbox.babylonjs.com/
To fix this, you could modify the geometry of the model, to avoid the rectangles being duplicated, or simply make the material not double-sided, by removing the
"doubleSided": true,
part from the material definition.
It then looks like this:
The duplicated triangles might still cause other issues, but the appearance should then be fixed (I didn’t test it in CesiumJS yet, but assume that it will work there as well)
An aside: The model contains two accessors for texture coordinates, but they contain the same data. You could optimize this to use a single set of texture coordinates.