FBX animation pops when exported from Blender

Hello,

My team and I have been tirelessly working to find a solution to a grating hiccup. When importing animation from an fbx file from Blender there is a pop in the animation in UE4 that does not exist in Blender. The issue seems to be involved with the IK spline.
The rig incorporates two Spline IKs parented to an FK armature.
With the Armatures selected the export settings are:

  • Main- Selected Objects Only Armature selected
  • Geometrie- Apply Modifiers selected Smoothing:Face
  • Armatures- Only Deform Bones and Add Leaf Bones unselected
  • Animation has all options selected.

The pop happens around the 30s frame range of the animation, so it is not a cycling issue.
I have tried applying minimal changes to the bones effected that only had identical start and end frames. I’ve adjusted f-curves and separated Blender files, one file for the rest pose Skeletal Mesh and one dedicated to animation.

Attached are gifs comparing the Blender and UE4 animations. The pop can be seen on the head, it’s fairly subtle but just enough to drive you insane.

112690-animpopblender.gif

112691-animpopue4.gif

Any help would be immensely appreciated!

I use nothing but blender, yet I’ve never seen that specific problem before.

Do you have a test example of the blend? I’ll try it out and see if I’m getting the same problem with my export settings. (Though I’m working on an underwater game, I assure you I won’t share it and will promptly delete all traces of it from my computer once issue is resolved; or if I can’t help.)

Edit: I prefer exporting each animation individually.
Once the mesh and armature have been imported into UE4, in blender I
go to NLA editor and make sure all animations are removed or muted, except for the one I want to export. After that, reselect the animation I want to export via the action editor.

Put the mesh and armature in object mode. Select the mesh first and then shift-select the armature. Go to “fbx export”. Under the Animation tab, deselect “All Actions”, keep NLA strips selected. Name the animation whatever. Export.

Doing it way usually works good for me.

Thanks for your reply !

I think you’re on to something that may be a problem. I’ve never used the NLA editor, so bear with me. I see that there is a mute button next to each armature as well an action bar underneath that has a button next to it with two arrows. When pressing that button it solidifies all the actions that were on that armature into a yellow bar (pushing it down into a new strip?), and it’s presence in all other editors disappear as well as the individual keys.

I select all the armatures that contain animation information in the NLA editor without pushing the action down, highlight only the keys I want exported on the dope sheet, make sure all the armatures are selected in object mode in the 3D viewport, and export the fbx with “All Actions” deselected.

When trying to import the new fbx Unreal fails to import. The file no longer contains any animation data.

For my animation I use the same armature throughout, going to a different point on the timeline to separate them. Could be the issue?

Later that day…

I cleaned up my animation and you’ve made me aware of the pipeline I definitely should be using. The animations are assigned to different actions and are no longer separated by time alone on the timeline. Here is what I found:

There was a phantom bone (an IK handle that I didn’t end up using) that I had deleted long ago, but retained animation information so that when I copied everything into a new blender file, those keyframes came along with it. I deleted the frames, and all trace of the bone was gone. The pop was still there.
So I figured I would get rid of all of the keyframes associated with the spine, where the pop was happening, and import it again. The body remained perfectly still while the wings flapped; however, a new pop appeared. On the left wing appeared two little jitters. Again, much experimentation was done.
I couldn’t find any way to export, import, tweak, or do anything to get rid of the pop and in some cases break the SK a bit.

I finally threw all of my animation away and animated a rudimentary three frame cycle. The pop is gone and everything ran smoothly. Not wanting to get rid of everything I decided to try throwing out the root animation on the FK wing that popped, and that did the trick.

It’s a great mystery. What in the world can exist in an animation that looks fine in Blender, but pops in UE4? Was there some sort of artifact or corrupted data?

I might not have the answer to bug, but you did give me the proper pipeline. Thanks !

TL;DR I think it’s generally good practice to use both dopesheet and NLA editor whenever you’re going to export anims.

I was just shooting in the dark, sorry I couldn’t be of more help. I’ve spent countless hours trying to get animations to import properly into UE4 from Blender. I’m much better at it now, as I’m almost always able to get them to come in perfectly on the first try.

I’ve learned that I really have to be careful about the exact order I do stuff in, tho; making sure everything’s put in the right state in the right order before going to export. It used to be much worse around time last year. It’s so~ much better now thanks to some exporter fixes by Blender (I think).

What exactly do you mean by “root” in “root animation on the FK wing”. Do you mean you just deleted all the keyframes for just a specific wing’s FK bone?

Sorry, I told you what was a theoretically “prescribed” solution, not the one I actually employ. The export “NLA Strips” option says you can mute it. But I actually just straight up delete everything out of the NLA strip.

First I click that double down-arrow button so it squirts out the anim name (puts it at the top of the stack), then I click that anim name just for good measure and push Del (on the keyboard) to obliterate it. Do that to all of them, then I go back to the dopesheet. Switch the armature to pose mode and select the animation I want to export via the action editor.

Alt-A just to make sure the right anim is playing. Then switch the armature to object mode, the mesh too if necessary, then select the mesh followed by the shift-selected armature and then export it.

Regardless, it’s awesome you managed to rectify it.

I thought I had an answer, but turns out I had just gotten lucky for months. The dreaded popping is back, and I cannot find a predictable way to fix it and after many trials can’t figure out what’s wrong with it.

Please help me figure out what I’m doing wrong! I’ll provide the folder that contains the blender file, fbx exports, a blank unreal project, and images of my export and import settings.
You can get it off of my g-drive here: https://drive.google.com/open?id=0B1YzkLAGhfWwQ0ZvYTZnTHVQbFk

Using FBX ASCII 6.1 export option helps in my case. But notice that it messes up the XYZ coordinate of skeletal mesh in Unreal, and you cannot bring animation curves from Blender to Unreal via FBX ASCII 6.1.

In the case of FBX binary7.4 export option, you can improve animation quality by cranking up [Sampling Rate] at [Animation] tab.

A work flow that has worked for me has been doing the following,

  1. Add a single extra frame at the beginning of an animation (Essentially work to get constrains in your rig to converge to the proper solution by the next frame)

  2. set sampling rate in FBX settings in the animation tab to 0.25 and export animations.

  3. Import fbx in unreal and Delete the first frame from the imported animation sequence.