Description

When a Nanite skeletal mesh has a virtual bone the engine can crash when changing LODs

Steps to Reproduce

1. Open the attached render project in Nanite_Test2.zip
2. Open the default map

Expected

No crash occurs and skeletal mesh is rendered correctly

Actual

The Editor crashes with the message:
Assertion failed: (Index >= 0) & (Index < ArrayNum) [Link Removed] [Line: 334] 
Array index out of bounds: 65535 from an array of size 92

Callstack

    [Inline Frame] UnrealEditor-Engine.dll!TArrayView<UE::Math::TTransform<double> const ,int>::RangeCheck(int) Line 334    C++
     [Inline Frame] UnrealEditor-Engine.dll!TArrayView<UE::Math::TTransform<double> const ,int>::operator[](int) Line 397    C++
     UnrealEditor-Engine.dll!FDynamicSkelMeshObjectDataNanite::UpdateBonesRemovedByLOD(TArray<UE::Math::TMatrix<float>,TSizedDefaultAllocator<32>> & PoseBuffer, const FSkinnedMeshSceneProxyDynamicData & InDynamicData, const USkinnedAsset * SkinnedAsset, FDynamicSkelMeshObjectDataNanite::ETransformsToUpdate CurrentOrPrevious) Line 212    C++
     UnrealEditor-Engine.dll!FDynamicSkelMeshObjectDataNanite::FDynamicSkelMeshObjectDataNanite(const FSkinnedMeshSceneProxyDynamicData & InDynamicData, const USkinnedAsset * InSkinnedAsset, FSkeletalMeshRenderData * InRenderData, int InLODIndex, EPreviousBoneTransformUpdateMode InPreviousBoneTransformUpdateMode, FSkeletalMeshObjectNanite * InMeshObject) Line 68    C++
     UnrealEditor-Engine.dll!FSkeletalMeshObjectNanite::Update(int InLODIndex, const FSkinnedMeshSceneProxyDynamicData & InDynamicData, const FPrimitiveSceneProxy * InSceneProxy, const USkinnedAsset * InSkinnedAsset, const TMap<UMorphTarget const *,int,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<UMorphTarget const *,int,0>> & InActiveMorphTargets, const TArray<float,TSizedDefaultAllocator<32>> & InMorphTargetWeights, EPreviousBoneTransformUpdateMode InPreviousBoneTransformUpdateMode, const FExternalMorphWeightData & InExternalMorphWeightData) Line 437    C++
     UnrealEditor-Engine.dll!FSkeletalMeshObject::Update(int LODIndex, const USkinnedMeshComponent * InMeshComponent, const TMap<UMorphTarget const *,int,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<UMorphTarget const *,int,0>> & InActiveMorphTargets, const TArray<float,TSizedDefaultAllocator<32>> & MorphTargetWeights, EPreviousBoneTransformUpdateMode PreviousBoneTransformUpdateMode, const FExternalMorphWeightData & InExternalMorphWeightData) Line 345    C++
     UnrealEditor-Engine.dll!USkinnedMeshComponent::SendRenderDynamicData_Concurrent() Line 1367    C++
     UnrealEditor-Engine.dll!USkeletalMeshComponent::SendRenderDynamicData_Concurrent() Line 4627    C++
     UnrealEditor-Engine.dll!UActorComponent::DoDeferredRenderUpdates_Concurrent() Line 2542    C++
     UnrealEditor-Engine.dll!UWorld::SendAllEndOfFrameUpdates::__l2::<lambda_4>::operator()() Line 1107    C++
     UnrealEditor-Engine.dll!UWorld::SendAllEndOfFrameUpdates() Line 1133    C++
     UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 2300    C++
     UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 533    C++
     UnrealEditor.exe!FEngineLoop::Tick() Line 5625    C++
     [Inline Frame] UnrealEditor.exe!EngineTick() Line 60    C++
     UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 187    C++
     UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 271    C++
     UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 339    C++

Have Comments or More Details?

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

1
Login to Vote

Unresolved
ComponentUE - Graphics Features - Nanite
Affects Versions5.55.65.7
Target Fix5.7
CreatedMay 31, 2025
UpdatedJun 17, 2025
View Jira Issue