Gaussian Splats Apparently Breaking

I had a Gaussian splat asset in ion that was being displayed normally (Footage from Feb 9, 2026).

WhatsAppVideo2026-02-19at17.12.37-ezgif.com-optimize

And I noticed that recently that same asset is apparently “broken”, with splats often “lining up”. That happens at both “My assets” page on Ion, Sandcastle, and standalone apps:

Sandcastle code

Yeah, this is “tracked” in Regression in splats from PLY in 1.135 · Issue #13041 · CesiumGS/cesium · GitHub . The actual reason for this has not been identified, and there are several “levels” of things that don’t work as intended.

A workaround currently seems to be to not set the tileset.modelMatrix, but bake the desired transform into the root tile transform instead:

// Should work, but doesnt:
//tileset.modelMatrix = surfaceTransform;

// Use this instead:
function setTransformForRoot(tileset, transform) {
  // XXX This should not be done like this, but is a workaround
  // for https://github.com/CesiumGS/cesium/issues/13041
  const oldRootTransform = tileset.root.transform;
  const newRootTransform = Cesium.Matrix4.multiply(
    transform, oldRootTransform, new Cesium.Matrix4());
  tileset.root.transform = newRootTransform;
}

// Instead of setting the `modelMatrix`: 
setTransformForRoot(tileset, surfaceTransform);

Here’s your sandcastle with this workaround applied:

Sandcastle with workaround

Thank you Marco for the workaround,

Just wanted to add that the model was generated using the iTwin Capture API’s, using GS_3DT as the reality data output reconstruction, from a set of photos.

The issue is in CesiumJS (and I’d even hesitate to call it a “regression”), so the title of the issue may be a bit misleading, but let’s hope that it will be addressed soon.