A consistent crash when attempting to load a particular 3D Tileset in my application. I would appreciate any guidance on identifying the cause or potential workarounds

I am encountering a consistent crash when attempting to load a particular 3D Tileset in my application. I would appreciate any guidance on identifying the cause or potential workarounds.

3DTile:{
	"asset":{
		"generatetool":"metis 3dtiles creator",
		"version":"1.0"
	},
	"extensionsRequired":[
		"3DTILES_implicit_tiling"
	],
	"extensionsUsed":[
		"3DTILES_implicit_tiling",
		"3DTILES_multiple_contents"
	],
	"geometricError":40000.0,
	"root":{
		"boundingVolume":{
			"region":[1.5707963267948966,0.39269908169872414,2.356194490192345,0.7853981633974483,0.0,3.490658503988659]
		},
		"extensions":{
			"3DTILES_implicit_tiling":{
				"availableLevels":1,
				"subdivisionScheme":"QUADTREE",
				"subtreeLevels":1,
				"subtrees":{
					"uri":"subtrees/{level}/{x}/{y}.json"
				}
			},
			"3DTILES_multiple_contents":{
				"contents":[
					{
						"uri":"contents/{level}/{x}/{y}/b0.b3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/b1.b3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/b2.b3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/b3.b3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/b4.b3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/c0.cmpt"
					},
					{
						"uri":"contents/{level}/{x}/{y}/c1.cmpt"
					},
					{
						"uri":"contents/{level}/{x}/{y}/c2.cmpt"
					},
					{
						"uri":"contents/{level}/{x}/{y}/i0.i3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/i1.i3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/i2.i3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/i3.i3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/i4.i3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/i5.i3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/i6.i3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/i7.i3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/i8.i3dm"
					},
					{
						"uri":"contents/{level}/{x}/{y}/i9.i3dm"
					}
				]
			}
		},
		"geometricError":40000.0,
		"refine":"ADD"
	}
}

Hi @jh007,

What versions of the Unity Editor and Cesium for Unity are you using? We recently fixed a crash with CesiumPolygonRasterOverlay with the latest version of the package.

Also, I see that your tileset contains several i3dm models – I’m afraid Cesium for Unity still lacks support for instanced models, so these may not appear in your scene. However, they should not result in any crash.

In which version was the CesiumPolygonRasterOverlay crash fixed? I am using Cesium version v1.18.1、Unity Version 2022.3.54f1.

In addition to the possible fix regarding the raster overlay and the support of I3DM, just from looking at the tileset:

"version":"1.0"
"3DTILES_implicit_tiling": {...}
"3DTILES_multiple_contents": { ... }

It looks like this was generated in the narrow time frame that is referred to as the period of “3D Tiles Next”. The extensions that are mentioned there had been draft extensions for 3D Tiles 1.0. They have become part of the core specification of 3D Tiles 1.1 in the meantime.

(I don’t know in how far Cesium For Unity or cesium-native supports them - I think that cesium-native does not support the “multiple contents” concept of 3D Tiles 1.1, so it’s very unlikely that it supports the (legacy) 3DTILES_multiple_contents extension - but maybe someone can correct me if I’m wrong)

1 Like

I tried several versions of Cesium for Unity(V1.6.4~V1.18.1), but whenever I tried to load this data, it crashed.

@jh007 the crash indicates something has gone wrong with a CesiumPolygonRasterOverlay. So, as a first step, you should remove that component from your Cesium3DTileset and see if you’re at least able to load this tileset without it. One possibility is that your tileset isn’t “really” loadable due to its use of several features that are not supported in Cesium for Unity (as mentioned above), and that this broken tileset is then triggering a bug in the CesiumPolygonRasterOverlay that is causing the crash.

If removing the component makes the crash go away, then we can investigate the overlay crash more deeply. The easiest path to that will be if you can (privately) provide a copy of the tileset to us. Just to be clear, though, this tileset is unlikely to work well in Cesium for Unity, even after a fix of the crash bug.

Even if it does not crash when the overlay is removed: Is it even possible to load it (“in theory”)? Implicit tiling is certainly supported, but is it also supported when it is wrapped into the legacy/next extension? And even if it is: I think that “multiple contents” is not supported (even on the cesium-native level, and regardless of whether it is wrapped into the extension or not). (Again: Correct me if I’m wrong, I may not be entirely up to date, but that’s the latest state that I’m aware of…)

EDIT: … but all this does not invalidate the point: Removing the overlay may help to narrow down the reason for the crash.

You’re largely correct @Marco13. cesium-native does support the old 3DTILES_implicit_tiling extension, but not multiple contents (via the old extension or otherwise). Cesium for Unity does not support instancing (via i3dm or otherwise).