I think, I can explain what the problem is, although not with absolute certainty:
SKMs can have different cloth meshes for different LOD levels. Usually, the simulated cloth data (output vertices) will match the current frame. However, when using the rewind debugger, the game is paused and the cloth simulation doesn’t run when the game is paused. When scrubbing through the timeline, the current LOD level can change in which case, the simulated data will not longer match the current LOD level.
We “fixed” it by adding the following workaround to FSkeletalMeshObjectGPUSkin::ProcessUpdatedDynamicData:
// Update uniform buffer for APEX cloth simulation mesh positions and normals
if (bSectionUsingCloth)
{
ClothShaderData = &ClothVertexFactory->GetClothShaderData();
ClothSimulationData = DynamicData->ClothingSimData.Find(Section.CorrespondClothAssetIndex);
// TRS CHANGE BEGIN - Georg Erhardt - 02/17/2026
#if WITH_EDITOR
if (ClothSimulationData && ClothSimulationData->LODIndex != LODIndex)
{
ClothSimulationData = nullptr;
UE_LOG(LogSkeletalMesh, Warning, TEXT("Disabled cloth simulation on %s because we don't have valid simulation data for this LOD level. Usually this happens when scrubbing in the rewind debugger."), *OwnerName.ToString());
}
#endif
// TRS CHANGE END - Georg Erhardt - 02/17/2026
...
The LODIndex check is a bit relaxed in our change though to allow for LOD biasing
if (ClothSimulationData && ClothSimulationData->LODIndex > LODIndex)
{
// Can only render deform the simulation with positive LODBias which is
// when the sim data LOD is lower than the requested render LODIndex.
// Otherwise the cloth deformer mapping would be out of bounds.
// This can happen when the physics is paused on a LOD >0 and then switching down the LODs.
ClothSimulationData = nullptr;
}
I’m passing this issue on to my colleague who is more familiar with this change for further advice.
What Alex said, the LODIndex could potentially be different with a Raytracing LOD bias on the Skeletal Mesh.
This said, I don’t think my fix addresses the case where the rewind debugger switches up the LODs (the rewind debugger wasn’t considered at the time of my changes).
I’ll take another look to see if I can work out a more general solution.
In the meantime, you probably want to keep your change.