Squash-&-Stretch Eyeballs _ Inherited Scale not included in Imported Animations


Hopefully this is the right place for this topic as it deals with the animated scale values of bones.
I’m creating a character with eyes that squash-&-stretch while also being able to roll.
This is achieved by scaling up the parent bone and then rotating its child. This is a common technique in cartoon style rigs.

Unfortunately, Unreal Engine doesn’t recognize this “Inherit Transforms” relationship, so instead of the eye being stretched along the parent’s up axis, it’s scaled on its own axis. So instead of the eye staying stretched up and down it is just a tall sphere that rocks back and forth.

I’ve tried different methods of constraining and baking these joints, but I don’t think my exports are the problem. Everything looks fine in the FBX Viewer. The problem only occurs in Unreal.

Is there any kind of work-around for this? Surely someone has made squash-&-stretch eyeballs in Unreal before.

The only other post I’ve seen on this topic was a Bug Report that was submitted as a Feature Request a few years ago: Parent scale does not account for child rotation

The issue is not Inherit Transforms. It is due to Unreal not calculating shearing/skewing in its transform matrix. So when the parent is non-uniformly scaled, the rotating child does not skew as it does in 3D applications like Maya. I have not found good solution yet. One way is to rig your characters in your 3D app using parent constraint and scale constraint for all child objects instead of parenting them. That way what you see in your 3d app will export properly into Unreal. But it’s a very dirty and inefficient solution. I too like to know if anyone has a better solution for it.