# Cesium for Unreal 2.13.2 Crash with Custom Tiles

**URL:** <https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560>\
**Category:** Cesium for Unreal\
**Created:** [February 12, 2025, 10:16am UTC](https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560 "2025-02-12T10:16:58Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![dagillespie](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/dagillespie/32/3476_2.png) [@dagillespie](https://community.cesium.com/u/dagillespie)\
**Post date:** [February 12, 2025, 10:16am UTC](https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560/1 "2025-02-12T10:16:58Z")

</div>

Hi,

We’re creating our own tiles on self hosted from an IFC dataset and it appears that when these tiles are added to our scene in Unreal 5.5.3, after a few moments when the tiles come into view, the application crashes with the following error.

Any insights on how to address this would be most appreciated.

```auto
Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:D:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\Core\Public\Containers\Array.h] [Line: 783] 
Array index out of bounds: 42432 into an array of size 3831

UnrealEditor_CesiumRuntime!Chaos::FTriangleMeshImplicitObject::FTriangleMeshImplicitObject<unsigned short>() [D:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\Experimental\Chaos\Public\Chaos\TriangleMeshImplicitObject.h:523]
UnrealEditor_CesiumRuntime!BuildChaosTriangleMeshes<unsigned short>() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumGltfComponent.cpp:3663]
UnrealEditor_CesiumRuntime!loadPrimitive<CesiumGltf::AccessorView<unsigned short> >() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumGltfComponent.cpp:1742]
UnrealEditor_CesiumRuntime!loadIndexedPrimitive() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumGltfComponent.cpp:1793]
UnrealEditor_CesiumRuntime!loadPrimitive() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumGltfComponent.cpp:1863]
UnrealEditor_CesiumRuntime!loadMesh() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumGltfComponent.cpp:1893]
UnrealEditor_CesiumRuntime!loadNode() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumGltfComponent.cpp:2140]
UnrealEditor_CesiumRuntime!`loadModelAnyThreadPart'::`2'::<lambda_1>::operator()() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumGltfComponent.cpp:2325]
UnrealEditor_CesiumRuntime!async::detail::task_func<CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::TaskScheduler>,async::detail::continuation_exec_func<CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::TaskScheduler>,() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\async++\task_base.h:398]
UnrealEditor_CesiumRuntime!CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::TaskScheduler>::schedule() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\CesiumAsync\Impl\ImmediateScheduler.h:26]
UnrealEditor_CesiumRuntime!async::detail::task_base::run_continuation<CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::TaskScheduler> >() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\async++\task_base.h:101]
UnrealEditor_CesiumRuntime!async::detail::basic_task<void>::then_internal<CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::TaskScheduler>,`loadModelAnyThreadPart'::`2'::<lambda_1>,async::task<void> >() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\async++\task.h:81]
UnrealEditor_CesiumRuntime!loadModelAnyThreadPart() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumGltfComponent.cpp:2303]
UnrealEditor_CesiumRuntime!UCesiumGltfComponent::CreateOffGameThread() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumGltfComponent.cpp:3293]
UnrealEditor_CesiumRuntime!UnrealPrepareRendererResources::prepareInLoadThread() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\UnrealPrepareRendererResources.cpp:49]
UnrealEditor_CesiumRuntime!std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,CesiumUtility::JsonValue,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char()
UnrealEditor_CesiumRuntime!Cesium3DTilesSelection::RasterizedPolygonsTileExcluder::shouldExclude()
UnrealEditor_CesiumRuntime!CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::TaskScheduler>::schedule() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\CesiumAsync\Impl\ImmediateScheduler.h:26]
UnrealEditor_CesiumRuntime!async::detail::task_base::run_continuation<CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::TaskScheduler> >() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\async++\task_base.h:101]
UnrealEditor_CesiumRuntime!async::detail::task_base::add_continuation<CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::TaskScheduler> >()
UnrealEditor_CesiumRuntime!async::task<void>::then<async::detail::inline_scheduler_impl,async::detail::unwrapped_func<async::detail::fake_void,async::task<void> > >()
UnrealEditor_CesiumRuntime!Cesium3DTilesSelection::TilesetContentManager::notifyTileUnloading()
UnrealEditor_CesiumRuntime!std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,CesiumUtility::JsonValue,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char()
UnrealEditor_CesiumRuntime!Cesium3DTilesSelection::RasterizedPolygonsTileExcluder::shouldExclude()
UnrealEditor_CesiumRuntime!CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::TaskScheduler>::schedule() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\CesiumAsync\Impl\ImmediateScheduler.h:26]
UnrealEditor_CesiumRuntime!Cesium3DTilesSelection::TilesetContentManager::propagateTilesetContentLoaderResult<Cesium3DTilesSelection::TilesetContentLoader>()
UnrealEditor_CesiumRuntime!std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,CesiumUtility::JsonValue,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char()
UnrealEditor_CesiumRuntime!Cesium3DTilesSelection::RasterizedPolygonsTileExcluder::shouldExclude()
UnrealEditor_CesiumRuntime!async::detail::task_base::run_continuation<async::detail::inline_scheduler_impl>() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\async++\task_base.h:101]
UnrealEditor_CesiumRuntime!Cesium3DTilesSelection::RasterizedPolygonsTileExcluder::shouldExclude()
UnrealEditor_CesiumRuntime!async::detail::task_base::run_continuations() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\async++\task_base.h:113]
UnrealEditor_CesiumRuntime!async::detail::unwrapped_func<Cesium3DTilesSelection::TileLoadResult,async::task<Cesium3DTilesSelection::TileLoadResult> >::operator()()
UnrealEditor_CesiumRuntime!async::detail::task_func<async::detail::inline_scheduler_impl,async::detail::continuation_exec_func<async::detail::inline_scheduler_impl,async::task<Cesium3DTilesSelection::TileLoadResult>,async::detail::fake_void,async::detail::un()
UnrealEditor_CesiumRuntime!async::detail::task_base::run_continuation<async::detail::inline_scheduler_impl>() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\async++\task_base.h:101]
UnrealEditor_CesiumRuntime!async::detail::task_base::add_continuation<async::detail::inline_scheduler_impl>() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\ThirdParty\include\async++\task_base.h:134]
UnrealEditor_CesiumRuntime!std::uninitialized_fill<std::_List_unchecked_iterator<std::_List_val<std::_List_simple_types<std::pair<unsigned __int64 const ,Cesium3DTilesContent::SubtreeAvailability> > > > *__ ptr64,std::_List_unchecked_iterator<std::_List_val<()
UnrealEditor_CesiumRuntime!std::_Variant_destroy_layer_<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,CesiumGeometry::QuadtreeTileID,CesiumGeometry::OctreeTileID,CesiumGeometry::UpsampledQuadtreeNode>::~_Variant_destroy_layer_<std::bas()
UnrealEditor_CesiumRuntime!CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::TaskScheduler>::SchedulerScope::~SchedulerScope()
UnrealEditor_CesiumRuntime!`UnrealTaskProcessor::startTask'::`2'::<lambda_1>::operator()() [D:\a\cesium-unreal\cesium-unreal\packages\CesiumForUnreal\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\UnrealTaskProcessor.cpp:10]
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
kernel32
ntdll

```

---

<div class="post-metadata">

**Author:** ![azrogers](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/azrogers/32/21672_2.png) [@azrogers](https://community.cesium.com/u/azrogers)\
**Post date:** [February 12, 2025, 5:08pm UTC](https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560/2 "2025-02-12T17:08:09Z")

</div>

@dagillespie Thanks for the question! I’m sorry to hear you’re experiencing issues with your tileset. Would you mind running some of the tiles in question through the [glTF Validator](https://github.khronos.org/glTF-Validator/)? It’s [available as a command-line tool](https://github.com/KhronosGroup/glTF-Validator/releases) if you want to make the process quicker. This will help us identify if the issues in question are a result of something that’s not quite right in the tile, or if it’s something that’s not quite right in Cesium for Unreal.

---

<div class="post-metadata">

**Author:** ![dagillespie](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/dagillespie/32/3476_2.png) [@dagillespie](https://community.cesium.com/u/dagillespie)\
**Post date:** [February 13, 2025, 12:00pm UTC](https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560/3 "2025-02-13T12:00:02Z")

</div>

@azrogers - thanks for the quick follow up. I ran this through the Cesium tiles validator (which uses gltfValidator) and encountered a few errors, summarised below and full log attached.

For additional context, this is a tile from a city 3D model originally in DWG which has been imported into Rhino an exported as an IFC file (as the model is in EPSG:27700).

I could also export this as GLTF however I’m assuming that the geometry issue could be based upon the source data and my understanding is that GLTF uploads, given they only allow lat/long specification of origin, don’t get conformed to a WSG84 reprojection from their cartesian grid ref (hence taking it through IFC)

Related post - [Rest API - Specifying ESPG/WKID for 3D Model Upload - Cesium ion - Cesium Community](https://community.cesium.com/t/rest-api-specifying-espg-wkid-for-3d-model-upload/38393/6)

```auto
"date": "2025-02-13T11:40:35.517Z",
  "numErrors": 2,
  "numWarnings": 0,
  "numInfos": 34,

....

    {
      "type": "BOUNDING_VOLUMES_INCONSISTENT",
      "path": "/root/content/boundingVolume",
      "message": "The content bounding volume is not contained in the tile bounding volume: box [-28.15152937174028,-597.2883535316214,-23.260475829243546,368.5418779960738,0,0,0,538.4639651714824,0,0,0,14.205693318974241] is not within box [-27.317575035184746,-587.1338695622981,-0.06964932475229446,419.2970262035916,0,0,0,581.6234087138437,0,0,0,38.15078246174378]",
      "severity": "ERROR"
    },

...

    {
      "type": "INTERNAL_ERROR",
      "path": "",
      "message": "Internal error while traversing tileset: Error: Malformed buffer data: -3",
      "severity": "ERROR"
    }

```

[validation.json.zip](https://community.cesium.com/uploads/short-url/ioFkdhJm3Sww672X5WLs32YkO9G.zip) (2.1 KB)

---

<div class="post-metadata">

**Author:** ![dagillespie](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/dagillespie/32/3476_2.png) [@dagillespie](https://community.cesium.com/u/dagillespie)\
**Post date:** [February 13, 2025, 12:30pm UTC](https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560/4 "2025-02-13T12:30:59Z")

</div>

FYI - I’ve just tested the same data exported as GLTF, tiled on Ion and pulled back down through validator and this data passed. In this case, the containing folder was .b3dm rather than glb that was produced from the IFC tiling process, however grid positioning is a pain with GLTF.

Will also test another IFC exporter we have to see if it works any better.

---

<div class="post-metadata">

**Author:** ![dagillespie](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/dagillespie/32/3476_2.png) [@dagillespie](https://community.cesium.com/u/dagillespie)\
**Post date:** [February 13, 2025, 4:23pm UTC](https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560/5 "2025-02-13T16:23:49Z")

</div>

So for whataver reason, the IFC data we are getting out from our IFC exporters is causing the tiler to produce GLTF data errors. The IFC files exported have been tested using IFC4 and IFC2x3 - each with the same error about bounding box.

GLTF is fine however my coordinate system is messed up as I can’t upload with a grid reference.

Is there any way to fix the tileset once on ion or address the problem with 3D tile tools?

---

<div class="post-metadata">

**Author:** ![Kevin\_Ring](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/kevin_ring/32/2003_2.png) [@Kevin\_Ring](https://community.cesium.com/u/Kevin_Ring)\
**Post date:** [February 21, 2025, 7:09am UTC](https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560/8 "2025-02-21T07:09:21Z")

</div>

Hi @dagillespie,  
Just to give you an update, the team responsible for the IFC tiler is investigating. We’ll let you know when we hear more.

---

<div class="post-metadata">

**Author:** ![dagillespie](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/dagillespie/32/3476_2.png) [@dagillespie](https://community.cesium.com/u/dagillespie)\
**Post date:** [February 21, 2025, 9:47am UTC](https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560/9 "2025-02-21T09:47:52Z")

</div>

Awesome - many thanks for confirming - that’s most appreciated.

---

<div class="post-metadata">

**Author:** ![sean\_lilley](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/sean_lilley/32/2083_2.png) [@sean\_lilley](https://community.cesium.com/u/sean_lilley)\
**Post date:** [February 21, 2025, 3:11pm UTC](https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560/10 "2025-02-21T15:11:46Z")

</div>

Hi @dagillespie - the malformed buffer issue should be fixed now. A new version of the design tiler was published to [https://ion.cesium.com/](https://ion.cesium.com/) and should be available in self-hosted soon.

Also in case it’s relevant the design tiler now supports OBJ input, in addition to IFC and glTF.

Just make sure to select `Architecture, Engineering, or Construction model (BIM/CAD)` in the UI or `BIM_CAD` in the REST API so that it’s running the design tiler.

---

<div class="post-metadata">

**Author:** ![dagillespie](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/dagillespie/32/3476_2.png) [@dagillespie](https://community.cesium.com/u/dagillespie)\
**Post date:** [February 21, 2025, 3:20pm UTC](https://community.cesium.com/t/cesium-for-unreal-2-13-2-crash-with-custom-tiles/38560/11 "2025-02-21T15:20:45Z")

</div>

That’s awesome many thanks - looking forward to pushing this release onto our self hosted instance soon!
