Why do we need animation curves on the skeleton for controlling morph targets?

I recently ran into an issue while implementing a new Ready Player Me avatar in Unreal Engine. I had been using a previous Ready Player Me avatar for over a year, and I don’t remember exactly how I got the morph targets working back then. Last week, I tried to integrate a new avatar, expecting it to work the same way since I used the exact same blueprints and the same setup with Live Link Face —but the morph targets wouldn’t animate. Even when I went back to previous versions Unreal Engine that I’ve used (5.2, 5.3, 5.4), it did not fix the issue.

After hours of troubleshooting, I finally discovered that the only difference between the two avatars was that the older one had animation curves in the skeleton, while the new one didn’t. Once I manually added the missing curves to the new avatar’s skeleton, the morph targets started working correctly.

This leads me to my questions:

  1. Why do we need animation curves on the skeleton for morph targets to work?
    Morph targets modify the mesh itself, so I would have expected the curves to be added in the Skeletal Mesh viewer rather than the Skeleton viewer. Also, shouldn’t the morph target itself be enough to drive the animation? Why are curves necessary?
  2. Why aren’t these curves automatically added when importing a Skeletal Mesh?
    I assumed enabling the “Import Attributes as Curves or Animation Attributes” and “Add Curve Metadata to Skeleton” options in the import settings would do this, but they didn’t seem to have any effect. Is there a proper way to ensure these curves are included automatically during import?
  3. Is there a way to automate adding the curves through script?
    During my troubleshooting I ran across the following forum post asking the same question: how to add Curves on a skeletal mesh programatically.

Any insights would be greatly appreciated!