[5.5] - Not able to import animation curves since 5.3 - 5.5

Hi,

I developed a Houdini based workflow which relies heavily on being able to import animation curves contained within character FBX files. The curves are used primarily inside of control rigs, similar to the metahuman face control curves.

In UE 5.2 and prior versions this all worked perfectly, the animation curves would get imported along with the FBX and would show up on the skeleton.

However, since UE 5.3, 5.4 and now 5.5, these animation curves do not get imported and do not appear on the skeleton or anywhere else as far as I can tell.

This is problematic for several reasons, not least of which is that because these curves are no longer imported and added to the skeleton, they are not accessible inside of control rigs.

@UE_FlavienP would you mind confirming if this is a bug of if it’s by design?

If it is by design, what is the new workflow for importing and using animation curves from FBX files?

Thanks
Peter

Could you share one of you FBX file with us?

@UE_FlavienP Thanks for responding.

Here is the test Fbx file.

I only see the TPose and UnrealPose curves when I import in 5.2.
I also get warning for almost all curves that are “skipped because it only contains invalid values.”

Is it what you see?

LogFbx: CurveName : ctlTestAnimationCurveOne
LogFbx: CurveName(ctlTestAnimationCurveOne) is skipped because it only contains invalid values.
LogFbx: CurveName : ctlTestAnimationCurveTwo
LogFbx: CurveName(ctlTestAnimationCurveTwo) is skipped because it only contains invalid values.
LogFbx: CurveName : ctlTestAnimationCurveThree
LogFbx: CurveName(ctlTestAnimationCurveThree) is skipped because it only contains invalid values.

I was just looking into this same thing, It looks like at some point integer attributes stopped showing on animations.

we just updated to 5.5 and all our int curves just stopped coming in.

here is a test asset with an int and a float curve, the float shows!

Specifically it looks like something in here that only gets float curves:


testAttribute.fbx (47.2 KB)

Howdy, I’m Mike, helping Adam above with the problem. In tracing through the engine, we found this snippet in InterchangeGenericAnimationPipeline.cpp that seems to skip over non-floating point curves:

Box #1 explicitly will reject an integer valued curve, and box #2 requires adding an entry to

Project Settings → Engine → Animation → Bone Animation Attributes Names

to get force it to consider the curve. However, when trying to use the project settings to add a custom attribute curve name for import, I find it causes an editor exception for me (something about a write accessor sentinel), and for Adam, the curve shows up in the sequencer editor as empty, and in a completely different area than expected. This tells us that there is more involved, so still looking forward to any help you can give us.

Thank you!

Alright, I’m still on this because we need to get this fixed, sooner rather than later. I’ve been messing around in the engine to see what happens if I push our integral curve through, and I’ve found that if I relax the guard above to allow it to consider integral curves, in

UE5\Engine\Plugins\Interchange\Runtime\Source\Import\Private\Animation\InterchangeAnimSequenceFactory.cpp, line 772,

there is a guard that prevents the integral curve from being added to the AnimSequence from AnimSequenceFactory.

The blue box on the bottom is where the internal function (the blue box on the top) is called to reject the integral curve. The comment associated with the internal function up top declares that it only accepts floating point (and vector) types so as to stay compatible with the underlying FRichCurve that it uses.

Is there a reason that it doesn’t convert integral values to floating point values? I guess I can see that if the intention is a stiff integral curve and all that can be provided is a smooth curve instead, that might be a change of behavior; but what we have now is no curves and that is breaking us.

Thank you! really looking forward to resolving this!

Hi @UE_FlavienP

I’ve been taking a deeper look into this issue, and I should have also clarified the import options I am using.

In UE 5.2 there are two import options required to get the curves to be imported onto the skeleton correctly. These are making sure that Import Animations is ticked and also making sure that Do not import curves with only 0 values is unticked.

With these settings, in 5.2, the curves are recognised and appear on the skeleton.

Now, let’s use 5.4 to compare the behaviour, with the exact same import settings.

So far so good. The imported curves are visible on the generated animation sequence.

However, the curves are not associated with, nor visible on the skeleton at all.

Meaning that they are also not visible to control rigs etc.

I hope this helps narrow down the cause of this particular problem.

Thanks
Peter

In addition to the above comparison between 5.2 and 5.4, it’s worth noting that this isn’t the only instance where, since 5.3, the issue of curves no longer being associated with the skeleton can occur.

Another instance is with pose assets.

In 5.2 when you create a pose asset from an animation sequence, the resulting pose asset animation curves would automatically appear on the skeleton.

However, after repeating the exact same steps in 5.4, the pose asset animation curves are not visible on the skeleton and are therefore not accessible from control rigs.

I have a feeling that these two issues are related somehow.

It seems that any animation curve which isn’t a morph or material type curve, just do not get registered on the target skeleton since 5.3.

The only workaround I have right now is to generate a long list of the curves in Houdini which I can then copy and paste onto the skeleton. If I do that they are visible on the skeleton and do remain that way, however it would be far batter to not have to go through those steps as it can cause other problems.

It would be far better to restore the previous functionality of being able to import these curves along with the source Fbx file and, have pose asset curves once again automatically associated with the target skeleton.

Thanks
Peter

Upon conferring with my teammate Adam here, we originally thought that our issue was the same as OP’s but upon reflection and investigation it seems they are related but not the same. We’ll split our problem out into it’s separate post to allow Peter to focus on his problem here in this thread (gl, Peter!)

[EDIT: For people finding this through web searches and have a problem closer to ours than Peter’s, the new thread is at:
[5.5] Default FBX Interchange importer doesn't import integral value curves ]

Thanks @DF_MikeGonzales

@UE_FlavienP with the additional information I have provided in the posts above, are you able to confirm if this is intended behaviour or a bug. It would be good to know one way or the other.

Thanks
Peter

Hello Peter, I will let devs have a look.