With the geometry data getting bigger and bigger we hit more often the int32 limits of the default TArray. All geometry data is store in array so we cannot have more then 2GB of vertexinstances or triangles.

Some FArchive like the duplicate use a TArray to store the object.

With that said we need a way to have bigger array.

I propose something like this to be able to not duplicate the code, this is only a proposition

TArray can be change for TArray<Foo, AllocatorFoo, IndexType> IndexType by default will be int32 and we can define TArray64<Foo, AllocatorFoo> to TArray<Foo, AllocatorFoo, int64>


Steps to Reproduce

Duplicate a UObject that is byte sum is bigger then max integer (> ~2GB). This archive use a TArray<uint8> to serialize all the data.

Currently we are using the duplicate archive to build the MeshDescription. When importing 8 millions polygons fbx, the size of the duplicate archive is more then 2GB and the editor crash. Temporary we will write our own duplicate function to avoid the crash but see the description to why we need this in mid term

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-58354 in the post.

Login to Vote

ComponentUE - Foundation - Core
Target Fix5.0
Fix Commit16849012
Main Commit16849012
CreatedApr 27, 2018
ResolvedJul 14, 2021
UpdatedJul 19, 2021