Stop-Motion animation

Hi there, I would like to import inside Unreal a Stepped Animation I did into Maya.
This animation contains constant/stepped curves, but when I import all the animation inside Unreal, automatically it generates the curves whit interpolation between keys, this is useless for me because I don’t want that this happen…
I tred to export my animation at 30FPS and 60FPS, but the problem still occurs…until I don’t try to fix this inside Unreal (but is too crazy because I have to select every frames where the interpolation must be constant…and switch from lineat to constant…).
My question is: There is a way to force unreal to recognize (interpolation curves that I animated before inside Maya?

Thank you :slight_smile:

Did you already try to bake the whole animation in maya (every frame) and to export this to UE? This should work as there’s no space for interpolation between the keys.

Best regards,
Daniel

Yes, I tried even this. Between each frames, where I want a constant interpolation, unreal make a linear interpolation (or something I call a “sinousoidal” curve) and that’s why I can’t create a stop-motion.
With cameras he make the same issue, but I can fix it manually on every frame I need to do a constant interpolation…but with characters I can’t fix this… :frowning:

I have the same problems, I expand animation 3 times its size and unreal do run 3 times faster.
But this not fixed the problem only a little

In each animation clip you should have the option to set the interpolation curve between keys (those options are on the lower left when viewing a clip). Have a look, I cant tell now as I have no ue4 editor around, but Ill check later myself and confirm.

PS: for edit all of them you can select them all in the content viewer, and go asset actions > bulk edit via property matrix

Dont know, but watching what Adeptus (or maybe he can recognize the name?) say,I will go with

  • disable retargeting
  • actually filter linear keys to false
  • do not override compression
  • import custom attribyte
  • preserve local transform

Maybe…

Btw. if nothing helps… in maya you can set keys inbetween frames… SO what you cold do is to write a script that sets a key of the same values as the previous key at 0.01 frames before the next key. That should give a transition short enough to emulate a stepped interpolation - even inside ue4

hm guys… I feel really bad now:

  1. I looked for something that does control the interpolation between keys inside ue4 animation view. But couldnt find anything, I guess im just mistaken. Must’ve been something I saw somewhere else there is no option to do that.

  2. I tried setting up a maya script that forces a stepped behavior by placing a key at 0.01 frames before each next key of the same value as the previous key. But when UE4 imports that it just gets all the keys and places them evenly on full frames instead.
    Its not a .fbx export thing as the fbx imports completely fine back into maya. I simply had 20 keys on frame 1 to 10 where there would be a key on frame 1, 1.999, 2, 2.999, 3, 3.999 etc. etc. But unreal just shifts them and places them at 1,2,3,4,5 up to frame 20. Interestingly enough I tested it on an animation that contained morp target anim and that ported as expected into the engine - basically emulating a stepped interpolation inside the editor.

Im interested to hear what someone at epic has to say about his.

PS: just in case you wanna try for yourselves, heres the script for maya python:



import maya.cmds as mc
animCurveTL = mc.ls(type="animCurveTL")
animCurveTU = mc.ls(type="animCurveTU")
animCurveTA = mc.ls(type="animCurveTA")
allAC = animCurveTL+animCurveTU+animCurveTA

#forceStepCurves
for curve in allAC:
    last=int(mc.keyframe(curve,q=1,kc=1))
    if last>0:
        last-=1
    keys=mc.keyframe(curve,q=1,index=(0, last),tc=1)
    for id in range(0,len(keys)-1):   #id =0
        wid = (len(keys)-1)-id
        val = mc.keyframe(curve,t=(keys[wid-1],keys[wid-1]),q=True,eval=True)[0]
        time = keys[wid]-0.01
        mc.setKeyframe(curve,t=time,v=val)


I did a stop motion effect for the october megajam by just setting the “sample by” value to something like 3 or 4 inside the “Bake Simulation” menu in maya (all animated objects got baked, much tinkering with values); I think anything over a value of 1 would work. I don’t recall any special FBX import / export settings… I might have checked off any / all resampling though.

could you show us how the stuff looked like in the editor if you go from one stop motion pose frame to the next?

It’s kind of hard to demonstrate in in screenshots, but there is indeed some sub-frame interpolation going on, just not all the time. Some frames have portions of stillness and others are completely still (It’s a regular pattern, probably to do with the sample rate I set in maya). It’s enough to sell a motion capture effect but if one were trying to do away with the engine’s interpolation entirely I’m afraid it’s not much help. :frowning: