You store the delta in each keyframe ? Or maybe you are speaking about Root Motion ?
If you have a jump animation, interpolate from each keyframe play correctly the animation.
Maybe I didn't understand correctly the problem.
The files I import from typically store the keyframes inside of the joints where not every joint is present in every keyframe and its assumed you interop for the missing keyframes (each keyframe stores absolute translation and rotation and not deltas).
I convert that into my format that requires that every keyframe has every joint that moves (missing joints are assumed to be at original position) to make it easier to copy and paste frames or to play in reverse.
Anyways, as long as the rendering framerate is less than the animation framerate everything works normally. If you turn up the speed on the animation, then things start to look bad as keyframes are skipped over when using the traditional interop between frame before current time and frame after (or use the frame that is equal to current time). This is because there are alot of intermediate keyframes that were created by the artist and the keyframe that stores the largest motion that most accuratly represents the essence of that animation tends to be skipped over.
The typical approach is to just sample the animation at the time position to which it has advanced to, according to the time step between previous frame and current. If this leads to skipped keyframes, then so be it. Your idea to preserve the "dominant" movement of an animation even in low FPS conditions is noble, but I don't know any engines that actually go to such trouble. At low FPS the gameplay feel will be poor anyway, so usually the engineering effort goes to ensuring that the FPS preferably never goes unplayably low.
Of course, if you know that you will never render faster than e.g. 30 FPS, it will be a waste of memory to store animations with higher keyframe frequency than that, in which case you could just re-export the animations with a suitable frequency.
True, but if you need to playback the animation at increased speed then just increasing the rendering framerate won't be viable. (like adjusting the speed of the running animation to reflect a run speed increase spell etc)
There may also be times when the model is far away from the camera and I want to turn down the refresh rate for animations on those model instances (basically skipping frames) without the animations looking too bad.
Your idea to preserve the "dominant" movement of an animation even in low FPS conditions is noble, but I don't know any engines that actually go to such trouble.
Apparently mine does I just though it might work and tried it. So far it looks OK. Its mostly for when I turn up the animation playback speed and not for low FPS, but it also works in those situations.
Of course, if you know that you will never render faster than e.g. 30 FPS, it will be a waste of memory to store animations with higher keyframe frequency than that, in which case you could just re-export the animations with a suitable frequency.
I mostly buy 3D assets since I'm not much of an artist myself. The 3DRT dragon had an insane amount of keyframes (like 70MB of them) so I modified my importer to use a process similar to what I'm doing above to "condense" keyframes to like only 30fps. That particular model would sometimes crash blender when I imported the Ms3d variant.