As far as I'm aware, all 3D animation software (Maya, Blender...) has framerates. That is, keyframes can only be placed on discrete points in time. Why is that? Why can't animation keyframes be placed at any point in time?
The animations are interpolated in the game engine anyway, the game framerate is rarely the same as the animation framerate and even then, somethimes the game's frames land inbetween the animation's frames and we see the interpolated animation anyway.
-
\$\begingroup\$ Because animation/movies are done in certain frame rate and syncing them up is, handy. These tools were not born out of necessity for gamedev. Don't really see why you want a key on half a frame either though. A frame is what you end up seeing. \$\endgroup\$– SidarCommented Feb 11, 2019 at 11:39
-
1\$\begingroup\$ Keep in mind that "framerate" in 3D software doesn't really mean anything. Similarly to how "1 unit" in 3D space can mean anything you define it to be. When you make an animation, you can use as many frames as you'd like, if you want to put a pose in a "half frame" then probably you want to make the animation bigger size, to make it more precise. When you export the animation, you can then change how long it is, or depending on the engine you use, you can make the animation play at different speeds, so the framerate is effectively just a "relative unit" unrelated to a game's framerate. \$\endgroup\$– Tom TsagkatosCommented Feb 11, 2019 at 11:46
-
\$\begingroup\$ @Sidar My point is that the frame on the screen in game almost never lines up with the animation's frames. I'm not an animator, but I could imagine a workflow where keyframes would be placed arbitrarily, and the animation would rely on proper interpolation. This would alow more flexibilty, especialy when it comes to scaling animations. When scaling, the frames stop making sense entirely. \$\endgroup\$– markoniusCommented Feb 11, 2019 at 12:01
-
\$\begingroup\$ @TomTsagk Exactly! Why have the frames if they don't mean anything? Why not place keyframes anywhere and rely on interpolation? \$\endgroup\$– markoniusCommented Feb 11, 2019 at 12:02
-
\$\begingroup\$ @Markonius That's how they work, they are not supposed to mean anything, you give meaning to them. You can't place a pose on frame 1.5 because that would be really messy and not as organised. They rely on the artist, as in, imagine a walk-cycle that is (let's say) 30 frames total, the 3D software expects you to put only the needed frames, and interpolates everything in-between. So instead of putting one pose on frame 1.5 and one on frame 2.5, you can put its in-between poses on frame 1, 2 and 3, and when the game is in between frame 1 and 2, it will display what you'd expect from "frame 1.5". \$\endgroup\$– Tom TsagkatosCommented Feb 11, 2019 at 12:08
1 Answer
Because 3d (and all other) animations heavily rely on the main frames. Let's say you're trying to animate Mario's ground pound.
(Let's forget the fact, that the jump and ground pound are two separate actions for convenience)
How would you start? In art school they teach you to first create the most defining parts of the animation, and then build everything else up from there, these are the keyframes.
In this case, those probably would be 1.) Pushing the ground 2.) Reaching the top of the jump 3.) Doing a flip 4.) Stop mid-air in a sitting position 5.) Hit the ground
In traditional (2d) animation, the parts between these ("in-betweeners") would be done by less experienced artists or outsourced (mostly to Korea), but in 3d modelling, formulas are used to interpolate between two states. In either case, the quality of those frames are worse, than the keyframes'.
For this reason, it's very important to make sure the keyframes actually get rendered. If you'd put them between two rendering frames, you'd miss them almost every time.
-
\$\begingroup\$ Do you have a source for a game or engine without a framerate lock that makes sure that keyframes are renderered? While keyframes are important, it is probably more important to present a fluent animation that is true to the animator's intention. It also seems unnecessary to sync an animation to the game's (predicted) framerate while you might as well use a tween that is near enough to the keyframe. \$\endgroup\$– EricCommented Feb 11, 2019 at 14:39
-
\$\begingroup\$ That's exactly my point. The keyframes are important. Everything else is interpolated anyway. There is no logical need for fixed framerates. The keyframes could be placed at arbitrary points in time. And the keyframes are not guaranteed to be rendered in most modern games, since the framerates are varying. \$\endgroup\$ Commented Feb 11, 2019 at 19:37
-
\$\begingroup\$ Furthermore, even without fixed framerates, keyframes could be placed at precise points in time, if the game is guaranteed to run at a fixed framerate (console exclusives like Super Mario) \$\endgroup\$ Commented Feb 11, 2019 at 20:07