Editor crashes when importing Alembic cloth as Geometry Cache (Array index out of bounds: 2147483647 into array of size 2)

Summary

Editor crashes (Assertion failed: Array index out of bounds: 2147483647 into an array of size 2) when importing an Alembic cloth cache as Geometry Cache in UE 5.8. Crash occurs in UnrealEditor_GeometryCache / GeometryCacheEd during import.

What Type of Bug are you experiencing?

Animation

Steps to Reproduce

  1. Open UE 5.8 [new blank project / my project].
  2. In the Content Browser, click Import and select the attached .abc file (cloth simulation, [N] frames).
  3. In the import options, set Import Type to “Geometry Cache”.
  4. Click Import.

Expected Result

The Alembic file is imported as a Geometry Cache asset without errors.

Observed Result

The editor crashes during import with:
Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:…\Core\Public\Containers\Array.h] [Line: 1339]
Array index out of bounds: 2147483647 into an array of size 2

Callstack: UnrealEditor_Core > UnrealEditor_GeometryCache (x5) > UnrealEditor_GeometryCacheEd (x2) > UnrealEditor_UnrealEd …
[Same file imports fine in 5.7 / not tested in other versions.]

Affects Versions

5.8

Platform(s)

Windows

2147483647 is int32 max, which the geometry cache uses as “no sample”. An array of size 2 is the two endpoints of a sample span, so the importer is asking for a frame that does not fall inside any span and 5.8 asserts instead of skipping it. 5.7 let the same file through, so this is a real importer regression, but the file is also the kind Geometry Cache has always been fragile with.

Geometry Cache wants a constant topology: same point count and same point order on every frame. Cloth Alembic from Blender, Marvelous, or Houdini usually does not have that. A frame whose point count changes, or whose time does not land on the exported samples, is what produces this index.

What works while the 5.8 crash stands:

  1. Re-export with one rest mesh and a constant point count. In Houdini, point-deform the sim onto the rest mesh and write that. In Blender, apply the cloth to a mesh that does not gain or lose vertices, and export with a fixed frame range starting at frame 0, flat hierarchy, and one face set. Do not export changing topology.
  2. Confirm the file itself: import a single frame as a Static Mesh. If that also fails, the ABC is bad before it ever reaches the cache track.
  3. If you still have 5.7, import there and migrate the Geometry Cache uasset. That sidesteps the 5.8 editor crash for this file.
  4. For cloth that really changes topology, Geometry Cache is the wrong target. Use a vertex-count-stable cache, or bring it in as a cloth/skeletal cache instead of Geometry Cache.

Uniform frame times matter as much as point count. A cache sampled at irregular times, or a range that does not start at 0, hits the same “no span” path and then the size-2 array.

Thanks for the detailed reply!

Some more test results:

  • Importing a single frame of the same .abc as a Static Mesh works fine, so the file itself seems to be readable.
  • I imported the same file as a Geometry Cache in 5.7 (works), then migrated the asset to 5.8. It shows up in the Content Browser, but placing it in the level or opening the asset crashes with the same assertion (Array index out of bounds: 2147483647 into an array of size 2).

So in 5.8 the crash is not limited to the import step. It also happens when the asset is opened or placed, even for an asset created in 5.7.

I’ll try your suggestions 1 and 4 (re-exporting with constant topology / a fixed frame range starting at 0, and a different target instead of Geometry Cache) and report back.
Thanks again!