[5.5] Default FBX Interchange importer doesn't import integral value curves

Howdy, we started this question in somebody else’s forum post because we thought their problem was the same as ours and we could provide more information; but since it looks like our problems are related but not the same, we are splitting our question out and restating here with new information learned since we started investigating it.

Original thread:


New Post:

Howdy! We have an established animation FBX import pipeline into UE that upon the transition from 5.4 to 5.5 stopped working. Upon investigation, it is because we relied on integral valued “curves” for animation in FBX, and those curves are no longer making it through the import process. This breakage of behavior seems to be related to the promotion 5.5 of the Interchange Import Pipelines to be the default for handling FBX files.

Overall, the Interchange Pipeline seems to handle FBX just fine, we just need this small fix to be able to continue working like we were before. From debugging the C++ of the Interchange AnimSequence Factory, it would seem the problem stems from the use of FRichCurve as the underlying representation of an animation curve. There is code that filters to only accept curves with floating point numerical values next to comments that say “to make sure the curve is compatible with FRichCurve.” (line 738 of InterchangeAnimSequenceFactory.cpp)

There is a path for StepCurves next to the FloatCurves , but that rejects integral valued curves unless you add those special curve names to your Project Settings:
Project Settings → Engine → Animation → Bone Animation Attributes Names

However, if you do that, those step curves still don’t make it out the other side when trying to preview them in the AnimationSequenceEditor. It straight up crashes on line of 233 of AnimTimelineTrackCurve.cpp unless you add a null check, and then the curve name and heading are visible in the AnimSequenceEditor but the curve data isn’t.

Debugging shows that step curves seem to import successfully, but that since there are only FloatCurves on the LegacyCurveData in the AnimationDataModel that is used for the editor, there is nothing to query for the integer curves.

I am trying to hack it together for our team because we have deadlines, but it would be handy if someone who knew more about this than I could make a real fix, just because I’m concerned about fixing it wrong and introducing other errors. For us, it would be fine if integral valued curves are promoted to float valued curves, we can handle that on the back end.

Thank you!

2 Likes

Hello, I will have a dev look at what you reported.

2 Likes