When reimporting an animation, in my case using the ImportAssets commandlet, if the call to FbxImporter->ValidateAnimStack (in SkeletalMeshEdit.cpp) fails for any reason, the animation is not imported but the function (ReimportFbxAnimation) returns true. It seems to be missing a “bResult = false” when ValidateAnimStack fails.
In my case, the failing ValidateAnimStack is caused by trying to reimport an animation with a different framerate than the original file and the animation length is incompatible with the older framerate ( “Error_InvalidImportLength”, "Animation length {0} is not compatible with import frame-rate… ).
If someone knows a way to force new import settings on reimport via the commandlet, that would be welcome too, but knowing it failed would be a good start.
FYI We are not using the interchange framework since it deadlocked when trying to import lots of animations via the commandlet, so please, even though the interchange framework seems to handle this specific case correctly, using it is not the solution I’m looking for.
Set the animation fbx framerate at 60 fps and change the length so it ends on a subframe of 30 fps.
Reimport the animation using the ImportAsset commandlet (it might do the same in editor if you don’t override the import settings to the new framerate)
In the logs you should see both messages :
FBXImport: Error: Animation length 3.517 is not compatible with import frame-rate 30 fps (sub frame 0.5), animation has to be frame-border aligned. Either re-export animation or enable snap to closest frame boundary import option.
LogEditorFactories: -- imported successfully
Make sure to disable the interchange framework. Use the parameter -ini:Engine:[ConsoleVariables]:Interchange.FeatureFlags.Import.FBX=False’ if using the commandlet
While we will be looking at your issue with the legacy FBX importer, we are also interested into your issue with Interchange. You said ‘lots of animation’. Above how many files do you get the deadlock?
It has been a while and it was not happening all the time.
Every so often we would need to kill the job on a build machine that was stuck. I’d say it was happening with a few hundreds animations, but our logs from that time are gone.
I found this multithread callstack screenshot from when it happened in last September: