Imported animation interpolation issue

Hello everyone,

I’m having a problem with Unreal interpolating between keyframes incorrectly. I’m exporting FBX’s from 3DS Max and I’ve got Bake Animation and Resample All checked. In Unreal, each frame of the animation is correct but if you play the animation slowly you can see that bones are deviating from where they should be in the spaces between frames, producing a very subtle wobble. This is only really noticeable at the end of an IK chain (hands and feet in this case). If I key a foot sliding from back to forward on a single axis the foot dips below the floor between frames.

I’ve checked the FBX export settings and I’ve tried viewing the animation uncompressed, that didn’t help. If I export an FBX from 3DS Max and then import it straight back in to a fresh scene the problem isn’t there, it’s only in the Unreal viewport. If I change UE Interpolation method to Step then you can’t see the problem, which suggests to me that the problem lies with how UE is interpolating. If I could see animation curves in UE that’d confirm the issue I think.

Has anybody got any advice or seen something similar themselves? Any help or advice is very much appreciated. Thanks in advance.

Sounds similar to this: Strange rotation flickering in animation playback, non-existent in frame step mode - Animation - Unreal Engine Forums
You can see if that solves the issue.

Edit: Actually I guess not if it’s a character… If having non-wobbly things is important you can use IK in UE4 too using the 2 bone IK.
Also you can check if 3DS Max uses some kind of simplify keyframes method when exporting, if that’s the case you need to disable that.

It’s a fidelity of asset problem.

First there are the key types.

But

Just because you set a key type in application A does not mean that application B will respect it so in 3ds Max you can set a key type to linear and it will not curve or wobble between keyframes. In UE4 the key type is probably being converted to auto, aka Bezier, which will curve the animations between keyframes (same thing happens trying to aim offsets) and this is why you have a wobble.

The solution to the problem is to set the animation to absolute on the frame and not based on key type information which very few apps respect. In MotionBuilder this is super easy by plotting your animations on frames that prevents the wobble and clean up any gimble lock issues that might have leaked into the sequence. Since aim offset has more or less the same problem, left hand separating from the weapon and not wanting to use IK.

Baking does not always work becasue you need to key every frame… Unless you can now change the key type in UE4 to linear which I don’t think you can.

Thanks for the replies guys. I’ve found a partial solution which I’m going to share with you.

If you have Resample All checked in the FBX export settings this appears to be done at 30fps regardless of the system frame rate of the application (in my case, 60fps). What this does is resample the animation with a keyframe on every other frame. Increasing the system frame rate further puts larger gaps between the keyframes after the resample. This isn’t the cause of the problem, but it is exacerbating it. Unreal is not interpolating between keys correctly and is being given larger gaps in which to deviate. Switching Resample All off and setting the system frame rate at 60 or even higher removes these gaps between the keyframes and gives UE less room for interpolation errors. The errors are still there but incredibly subtle, and the end result is close enough for what I need.

Thanks again for taking the time to reply to my question :slight_smile:

1 Like