I’m animating a character in Maya that has its head pop off and then returns to its body during the animation. I’m doing this in Maya by space switching from the neck (follows body) to the world (popped off and not following body). It looks fine in Maya, but when I import it into UE4 the head jitters a ton. The GIF below doesn’t do it justice, it looks much worse when in UE4.
I understand that animation isn’t technically based on frames and actually utilizes the delta time, so is there a way to fix this? I should mention that my animation curves are smooth, so no matter the frame rate, the animation looks correct in Maya.
I think I’m having exactly the same issue. All of my animations are deviating from where they should be between frames. It’s extremely subtle and very hard to spot but it’s there.
I found a work around to this, it is a MAYA (3d package) joint problem not a UE4 or game engine problem.
If you go to settings in maya and change from ntsc to miliseconds you will also be able to see the jittering in maya as it begins to interpolate between the keys.
There is a single (or multiple - lord help you) offending joint that was not oriented/frozen during the rigging process among countless other possible problems that cause this.
#HOW TO FIX
There are two ways
1 THE PROPER FIX
Fix the offending joint in the rig source file, be it orientation, rotation order, or unfrozen rotations on the joint etc
2 THE LAZY FIX
- Select the initial joints connected to the offending joint
- Parent constraint and bake locators to those peripheral joints in 24/30fps
- By doing so, the locators will not inherit the jitters as they’re interpolating in world space, not counter animating themselves from the offending joint, neither receiving the interpolation because the frame rate is too small to catch it
- Delete the constraints on the locators and parent constraint those joints to the locators
- Bake the constrained joints in MILLISECONDS not in fps, this guarantees it will be counter animated to world space leaving the offending joint to have a tantrum all on its own
The lazy fix makes the animation very heavy, baking to miliseconds balloons animation data considerably
So because baking on milliseconds is kind of daft, I found if you bake a locator to the offending joint as well, then constrain that joint and zero out the locators rotations to force the joint to bake out as if it had zero rotations, then you can happily bake in fps instead of milliseconds