Scaling doesn't work correctly for attached actors when child is rotated and parent has non-uniform scaling

This issue is present in presumably every version of Unreal.

When non-uniform scaling a parent actor, the attached actor will not scale correctly if the object is rotated.

Steps to Reproduce
This issue is present in presumably every version of Unreal.

When non-uniform scaling a parent actor, the attached actor will not scale correctly if the object is rotated.

  1. Add a cube actor to the scene
  2. Give it some non-uniform scaling.
  3. Add a second cube actor to the scene.
  4. Give it some non-uniform scaling.
  5. Rotate it 90 degrees.
  6. Attach the second cube to the first.
  7. Scale the first cube along a single axis.

Outcome:

The the attached actor will scale/squash incorrectly. For example, if scaling the Z axis of the parent actor, the attached actor will also scale along its Z axis, even if that Z axis is not aligned with that of the parent actor.

Hi,

It seems that rather than a bug, this is moreso a limitation as shown in the following threads:

https://forums.unrealengine.com/t/parent-scale-does-not-account-for-child-rotation/293436

https://forums.unrealengine.com/t/scaling-multiple-actors-efficiently/658686

Since this is a feature request I reassigned the case to Epic so they can consider it and provide more insight on this.

As a workaround in the meantime:

1.) You can try merging the meshes: select all meshes you want to scale then use the modeling mode > Xform > Merge and then it becomes one mesh that scales properly.

2.) A bit more of a hassle, but removing the child and adjusting as needed before reattaching to the parent.

Regards

Hi John. Thank you for reassigning it to Epic!

Good day! I’m gathering thoughts from the team about whether/when we’d address it and will share an update early next week at the latest.

Hello again, here is the result from our internal discussion:

  • This is indeed a limitation and not one we plan to address for actors and components*
  • The main reason for it is we don’t support shearingalong an arbitrary axis in FTransform, while this would be needed to support non-uniform scaled parents with arbitrary rotated children. Although shearing can be achieved with matrix transformations (FMatrix), actor and component hierarchies are edited as relative FTransforms and we don’t plan to change that.

*Any statements I’m making here don’t apply to Scene Graph.

Sorry for the bad news, but I hope that clarifies why it’s not supported.

Thank you for the follow-up.

Glad to provide that info. I’ll close this question.