Skip to main content

We have tried using the Cesium 3dtile writer in Safe FME but have found that the generated tilejson and tiles are invalid when testing the data with Cesiums 3dtile validator. The primary issues are that the tilejson has the wrong version number, should be "1.0", but is "0.0". Additionally, none of the tiles have geometric error values in their metadata (its in the tilejson, but not in the individual tiles). Cesiums web SDK is pretty forgiving, but their Unreal Engine SDK is not, and won't load tiles created using this writer. Any ideas on how to resolve this? I followed this guide to create the tiles: Tutorial_FME_Cesium_3D_Tiles.pdf (ethz.ch)

Hi @rbrundritt​ 

There are currently a few enhancement requests that the dev team are working on for this format. I have added your post to the issue on file.

You mention that you are using the tiles in the Unreal Engine. Would it be possible to use the Unreal Engine writer in FME as a possible workaround while the updates are made to the Cesium writer?


Hi @rbrundritt​ 

There are currently a few enhancement requests that the dev team are working on for this format. I have added your post to the issue on file.

You mention that you are using the tiles in the Unreal Engine. Would it be possible to use the Unreal Engine writer in FME as a possible workaround while the updates are made to the Cesium writer?

I don't believe that will be an option as I'm working with several GB worth of data, so need the data to be tiled rather than as a giant model.


I have the same problem with the Unity Engine. I followed this tutorial https://towardsdatascience.com/from-citygml-3d-city-model-to-3d-web-application-829eb8e90514

and used the 3D Tile Implementation for Unity (NASA-AMMOS).

The FME 3D Tiles Writer does not write the "geometryError" attribute at the leave nodes.

Error: "Required property 'geometricError' not found in JSON. Path 'root.children[0].children[0].children[0].children[0]'". I checked the "tiles.json" file and the root and all intermediate children have the 'geometricError' attribute, but it's missing at the leave children.

 


Hi,

 

Reviving an old thread here, but I just caught wind of this...

 

I work on Cesium for Unreal, so maybe I can help. Are there any messages in the Output Log indicating what Cesium for Unreal doesn't like about the FME-produced tilesets?

 

Cesium for Unreal doesn't support 3D Tiles with glTF 1.0 embedded in them (it requires 2.0). 1.0 was never supported by any official version of the 3D Tiles spec, but some early drafts included it. Hopefully this isn't the problem.

 

Cesium for Unreal also only supports .b3dm tiles currently, so no .i3dm or .pnts. It does support .cmpt, but only the b3dms embedded in those composite tiles. We are planning to add support for these additional formats in the future. Cesium for Unreal also supports 3D Tiles Next where tiles are simply glTFs.

 

Cesium for Unreal is sometimes more particular about conformance to the 3D Tiles spec than is CesiumJS. As mentioned above, it probably does require geometric error in the leaf nodes because the spec does. We are slowly making it more tolerant (and adding warnings about spec compliance issues), but it's a work in progress. It would be help to understand what exactly is going wrong with the tileset coming from FME.

 

I unfortunately don't have easy access to FME to try out the tutorial linked above, but if I can get my hands an FME-generated tileset that's causing problems, I can diagnose it further and perhaps make changes to Cesium for Unreal to better support such tilesets.

 

Thanks,

Kevin


Hi Kevin,

I could send you a test tileset (about 60MB) that was generated in FME from CityGML data.

How can I send it to you? As I would need the 3D tiles in another environment than Unreal, could you also inform the people responsible for the 3d tiles writer in FME?

kind regards

Peter


Hi @ferschin​,

 

You may be able to email it to me: kevin@cesium.com

Otherwise a Dropbox or Google Drive or OneDrive or whatever link should work.

 

I don't work for Safe Software, but if I confirm it's a spec compliance issue with the FME output I'll do what I can to let folks there know.

 

Thanks,

Kevin


It was a few months ago, but I believe this is the tiles I created using Safe FME: https://1drv.ms/u/s!AgFqp4QkIjUNqOkgXzPjTQXcNPLkuA?e=m2XX2s

 

The data is extruded building footprints in Madrid created from OSM data.


Thanks for sending me your tilesets, @ferschin​ and @rbrundritt​. I can confirm that both are a problem in Cesium for Unreal because they are missing the required "geometricError" property in the leaf tiles:

https://github.com/CesiumGS/3d-tiles/tree/main/specification#tile

 

It's possible (but tedious) to fix this by editing the tileset.json to make sure that every tile has a geometricError property. For the leaf tiles (which are the only ones that are missing the property in the FME-generated tileses, I believe), you can use a value of 0.

 

I wrote an issue to make Cesium for Unreal match the CesiumJS behavior:

https://github.com/CesiumGS/cesium-native/issues/440

 

There's also a second problem with at lead the Madrid tileset from @rbrundritt​ (I didn't check the other) where Cesium for Unreal incorrectly interprets the metadata embedded in it. I believe this is a bug in Cesium for Unreal that we just fixed:

https://github.com/CesiumGS/cesium-native/pull/437

 

That fix will be included in next release, at the beginning of March.

 

Kevin


Hi @rbrundritt​, @ferschin​, and @kring789​,

I'm pleased to inform you all that the issues you've identified with the incorrect version number and the missing geometric error have both been resolved for FME 2022.0 and newer versions! You can find FME 2022.0 (and up) on our downloads page here: safe.com/downloads

 

Thank you for helping us to identify the issue and for sharing your findings in discussion here. Please let us know if you have any further feedback on the changes.


Reply