Pivot not maintained for uploaded GLTF

Hello all,

I have have a GLTF file that has been georeferenced by the local origin (i.e. the pivot of the meshes); however, when I upload it to ion, the pivot in the preview is not that same as what I uploaded. I have check in other 3D design tools and they all load the GLTF with the correct pivot.

It appears that Ceisum is setting the pivot to the center of the bounding box of the GLTF, but I’m not 100% sure. How can I force Cesium Ion to use the model’s pivot instead? This is absolutely necessary for any data that has been georeferenced outside of Cesium.

Thanks!

Hi,

Thank you for reaching out about this. While we currently only support georeferencing tilesets by center of the bounding box, we are looking into allowing using the tileset origin in the future.

As an interim workaround you can use the tileset positioning tool after uploading to set the position desired.

Thanks,
Ankit

Oh dang – that is disappointing, as it requires preprocessing all uploaded meshes to attempt to change the georeference. Manually moving each uploaded mesh with the tileset positioning tool in the ion web portal is not a viable option from a scalability standpoint.

Also, I noticed in testing that it does not appear to be using a 3D bounding box but a 2D bounding box – it does not take into account the height for the origin. This means that the origin will always be at the lowest point in the 3D bounding box of the mesh. Is this correct?

I appreciate your help!

Hi,

We use a 3D bounding box for our mesh assets so it should be preserving the origin of the tileset. To gather more information and provide you with better support, would you be able to provide us with an example tileset of what the behavior you are seeing and what your expected behavior looks like?

Thanks,
Ankit

Hey @Ankit_Trehan ,

This incorrect origin is evident even in the demo for CesiumJS here: https://cesium.com/learn/cesiumjs-learn/cesiumjs-interactive-building/

If you follow the tutorial, you will clearly see that the origin is at the base of the building and not in the middle of the mesh as you have said it should be, based on the center of the bounding box of the mesh.

To clarify more, see the attached screenshots where I have created a variant of the GLTF used from your tutorial documentation, where I explicitly add meshes around the building to artificially control the center of the bounding box. With this file, you will notice that the origin in ion is 10 meters below the base of the building (where I added a simple cube mesh below the building). Compare ion’s origin/reference with where it should be as shown in BabylonJS.

Let me know if you need any more details. Thanks!

PSFS-Cesium-Origin.glb (3.2 MB)

Hi,

I apologize for the confusion here but you are correct. In ion, the origin is set to the bottom center of the tileset and not its true origin. However, this is something that we are looking to change in the near future and provide users with the ability to use the true tileset origin.

Thanks,
Ankit

Hi @Ankit_Trehan
I was wondering if this behavior has changed recently? I haven’t done very thorough testing yet, but recent uploads to Ion are showing that the Cesium pivot is now set to the local origin of the uploaded GLTF.

Is this correct??? If so, where can I find documentation for this change?

Thanks!

Hi,

Yes you are correct, this behavior was recently changed due to our customers requesting this update. While there isn’t documentation on this change yet, you should see the origin in ion now be the origin of your tileset for new assets.

Thanks,
Ankit