Hi there - I’m new to Cesium ION, so apologies if this question has come up before (I did search fairly thoroughly through the existing topics).
I’m attempting to upload a large .glb file of a photogrammetry capture. The upload and tile generation both complete without issues, but the tiles themselves seem to have distinct errors.
When the initial LOD loads, it looks fine, but as the higher-resolution tiles start to populate, it becomes obvious that many faces of the tile geometry aren’t referencing a texture correctly.
The dataset’s Cesium ION id is 660294.
This is what it looks like on Cesium Stories:
I notice the exact same behavior/visuals when loading it into my own viewer:
There, the console gives an error that reads:
glTF file error: Could not find images[undefined]
Which makes me think there’s potentially an indexing error with the image array.
Is this something which has an easy fix? Is there anything I can do when uploading my initial .glb to Cesium ION to potentially improve the results?
Thanks in advance for the help!
Thanks for your question and welcome to the forum! This appears to be a problem with how screen space error is being computed. You can mitigate the problem somewhat by reducing the
maximumScreenSpaceError of the tileset from its default of 16:
tileset.maximumScreenSpaceError = 0;
Please see this Sandcastle.
This will put a bigger strain on your device when viewing the tileset, though, and ideally it wouldn’t happen at all. I’m going to open a ticket about this issue so we can investigate further.
When you say you have your own viewer for this tileset, does that viewer use CesiumJS? Is there a Sandcastle you can share demonstrating it? I’m hoping to be able to take a look at that error message you got in the console.
Hey Matt! Thanks for the reply.
I managed to figure out a solution / workaround to the problem by pulling my GLB into Blender, expanding the scale of it, and then using the Blender add-on to upload that new file directly to Cesium Ion.
I’m not sure if the re-scaling or the new upload method was the key - the GLB was quite a bit smaller than the physical size of the capture, so I think some of the faces may have ended up smaller than the 3D tile system was able to handle. But it could also just have been some magic from the add-on. Do you know if the code for the add-on is publicly available?
The viewer that I was using doesn’t use CesiumJS - it’s a tool from the NYTimes for combining Three.js and 3D tiles. I don’t think the loader/viewer was the problem, though, because I saw the exact same errors on Cesium Ion’s internal viewer.
Anyways, thanks again for your help!
Thank you for coming back to post your workaround! The community always appreciates that. I’ll add the info you shared to our internal ticket, since this is still something we want to look into.
The Blender add-on is open source, yes. You can find it here: GitHub - CesiumGS/cesium-ion-blender-addon: Blender add-on for uploading and tiling models with Cesium ion. https://cesium.com
We’ve updated our photogrammetry tiler to better handle very small triangles, so this problem should be fixed in version 4.5.3. Thank you for your bug report—we appreciate it.