This issue is fallout from the changes in 33851494. Prior to that, we didn’t get the pop on beginning the sim.
The problem appears to be that in USkeletalMeshComponent::PerformBlendPhysicsBones we are removing scale from the world bone transforms before converting back into local space. But when we remove that scale, the translation on the bones also unscales. But in the case that the parent bone is scaled, we should retain the scaled translation on the child bone.
I have a speculative fix for this in UpdateWorldBoneTM which is to add the following line which strips out scale.
if (InBoneSpaceTransforms.IsValidIndex(BoneIndex))
{
RelTM = InBoneSpaceTransforms[BoneIndex];
RelTM.ScaleTranslation(Scale3D);
RelTM.RemoveScaling(); // new line
WorldBoneTMs[BoneIndex].TM = RelTM * ParentTM;
WorldBoneTMs[BoneIndex].bUpToDate = true;
}
With that, later in PerformBlendPhysicsBones we call:
FTransform RelTM = PhysTM.GetRelativeTransform(ParentWorldTM);
We no longer unscale the bone when the reciprocal of the scale is applied within GetRelativeTransform, since the scale has now been stripped out. But I’m unsure whether this is the correct fix to go with.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-380147 in the post.
| 0 |
| Component | UE - Simulation - Core |
|---|---|
| Affects Versions | 5.7 |
| Created | May 15, 2026 |
|---|---|
| Updated | May 29, 2026 |