Description

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.

Steps to Reproduce
  1. Open the attached project
    1. Note how the root bone is being scaled via an anim bp. There is no scale on the mesh component
  2. PIE
  3. Hit X to simulate the mesh
    1. Expected behaviour: the bones are simulated from their initial animated locations
    2. Actual behaviour: the translation due to scale is removed from the pelvis bone, causing a visible pop

Have Comments or More Details?

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

0
Login to Vote

Unresolved
ComponentUE - Simulation - Core
Affects Versions5.7
CreatedMay 15, 2026
UpdatedMay 29, 2026
View Jira Issue