I’m building a game where the characters need to look traditionally drawn and animated (at 12-15 frames per second like in cel-animation). Is there a way to limit the frame rate of actors at the very end of the animation chain, i.e, after physics, in-game IK systems, and baked animation from skeletons?
For example, a character with a skeletal animation keyed at 30FPS and wearing a dynamicly blowing cape, would have both animations limited at 12FPS as if they were animated with cels.
We’ve experimented with baking skeletal animations before .fbx import to 15FPS, and used stepping to try and force no interpolation on UE4’s part. However, UE4 still attempts to smooth out the frames between frames which change their value (the blue arrows in the attached image) which results in an undesirable smooth-stutter-smooth-stutter effect as opposed to the intended cel-style effect. (Our .fbx was exported correctly, and the animation is played as-intended in all software packages but UE4)
For this reason, we’ve come to the conclusion that the effect would be best achieved if there was a “frame rate limiter” at the end of the animation chain as described above, for example if behind the scenes, animation was calculated as usual, but only allowed to update visually every once every X times a second.
Does anything like this exist in UE4 already, or is there any alternative method that can currently be used to get close to something like this?
I’ll take a look, I just found an hour long talk which should be insightful. Xrd is an Unreal Engine 3 game however, so I won’t get my hopes up.
Aha, your comments in that thread are very helpful, it saved me from wasting some time. One of my next tests was going to be baking animation at higher framerates than UE4 would naturally run at, so that it didn’t have any opportunity to interpolate frames. It seems if it does away with your keying and chooses where to put keys itself, that will not work either. Even if that did work however, it seems a very wasteful workaround, it’s really disappointing that there doesn’t seem to be an elegant solution for this.
You might be right that a feature req is needed, but I really hope there’s some solution right now at least because my whole game is based around this style. D:
I was linked on Reddit to this answerhub, and this answer is pretty discouraging:
Seems as if UE4 will always try to have full control over your keys, thinking it knows best about your intent.
The other crazy solution I could think of is to animate everything standardly, and then somehow pause and start the animation using code or animation blueprint. So to emulate a 15 FPS animation, you’d pause the animation every 66.6ms for 65.6ms, with each ms before the pause used to play the animation at 15x the normal speed to ‘jump’ to where it should be, and then pause again (my maths maybe wrong here, but hopefully the concept is correct!)
Edit: so this works pretty well I think, here’s a quick and probably very inefficient blueprint -
Can’t just yet, but you can literally just jam that blueprint into the tick of any existing skeletal mesh to see the result if you’re curious.
Thanks again for this heads up, I ended up learning some quite cool stuff. I checked out Junya C Motomura’s technical talk and it seems their animation is technically the same as mine, i.e a limited animation style with non-interpolating frames, but they were using UE3, and a customized version at that. I don’t think it’s a bug, but rather a limitation in UE4.
Hey Efrye, thanks for the info, this is actually something I considered but I’m kind of glad I didn’t go down that route -
I think this would cause some problems down the line if I wanted to speed up / slow down animations like is done with walk and run cycle transitions between standing still and in motion for example, and our game is intended to be moddable which makes it awkward for modders to have to do this step too.