Issues with 3D tileset that works fine in CesiumJS

Hello everyone,

we’re currently trying to get a 3D-tileset containing trees (in the literal sense of the word :)) working in Unity.

When we tested the dataset using Cesium Sandcastle, everything worked fine as you can see in the screenshot below.

Here’s the JavaScript we used to test this:

const viewer = new Cesium.Viewer("cesiumContainer");
const tilesetArea2 = await Cesium.Cesium3DTileset.fromUrl("https://daten-hamburg.de/gdi3d/datasource-data/LoD3_tex20cm_Area1/tileset.json");
const trees = await Cesium.Cesium3DTileset.fromUrl("https://daten-hamburg.de/gdi3d/datasource-data/Strassenbaumkataster_Sommerbaeume/tileset.json");
viewer.terrainProvider = await Cesium.ArcGISTiledElevationTerrainProvider.fromUrl("https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer");
viewer.scene.primitives.add(tilesetArea2);
viewer.scene.primitives.add(trees);
 
await trees.readyPromise;
await viewer.zoomTo(tilesetArea2);

In Unity however, the trees are misplaced and rotated or not visible at all. Our first guess was that the CRS of the dataset might be incompatible.

Any hint how to resolve this would be greatly appreciated!

Kind regards

David

This is very likely another … instance… of the issue that instancing is not yet supported in Cesium For Unity: Instanced (i3dm) tilesets in Unity

So I assume that the tileset contains these trees as I3DM or glTF with EXT_mesh_gpu_instancing, which are not yet supported.

1 Like

Thanks for the reply Marco!

The trees are in fact contained as I3DM, while the actual meshes seem to be referenced from external GLBs.
Can you guide me on how i might verify whether EXT_mesh_gpu_instancing is in fact enabled?

I’m not sure if I understood that question. Instances (like the trees) can be represented with I3DM. An alternative way of creating such instances is to use glTF with theEXT_mesh_gpu_instancing extension.

Both approaches are ~“largely equivalent” in terms of the functionality. But both approaches require support for instancing in Cesium For Unity.

Thanks for the clarification.
It does seem to be the cause of our problems. Since this is already being tracked, i’ll mark this post as solved.