Fractional frame rates - needed or not?

Note: This feature is currently proposed by a Krita developer as a working merge request, but the developer community would like more feedback on how (and if) it would be used.

History

The idea started from me viewing the feature request 430363 that asks to allow exporting at frame rates less than 1 for gif. Krita backend (ffmpeg) supports arbitrary fractional rates like 1/3 (three times per second) or 5/2 (five frames for each two seconds). Calculations with such fractions are precise, same as with integers (other wise 1/3 = 0.333333…).

Responding to this I implemented the merge request but there is some doubt between developer community, if the feature is needed by the certain group of Krita users or actually has no non-niche use cases. The fate of this proposal largely depends no on the Krita user community feedback.

Use cases

Educational animations
One of the areas where I image this could be useful are educational animations showing say chemical formulas being converted in reaction, or matrix multiplication, or some mechanism working. They do not necessarily benefit smooth movement as much as usual movies and need effort to understand, so should be rendered slowly.

Easy/simple animations
I have seen some Krita beginners spending so much time effort on each frame that the usual 24 FPS looks way too demanding. Probably some would like to render at very slow rate of 1/2 or 2/3 frame per second just to see that it may be an animation, that it may work for them.

Also, I am not sure if some advertisement clip may not be rendered slowly if 24 FPS is too expensive to produce.

Storyboards
Some movies like “Spirited away”, for instance, have a story board published as an additional material. It represents a series of pictures that are very far away, differ from each other significantly and if to render them at all for general impression, then likely at the speed of frame per few seconds only.

We need feedback about the importance and value of the possibility to provide fractional frame rates in Krita. Also, please specify if the full blown fractional rates are really desired (like 1234/5678) that is more tricky to implement or the fixed choices would largely be sufficient (the current choices are 3/2, 5/4, 4/5, 2/3, 1/2, 1/3, 1/4, 1/5, 1/10).

2 Likes

Hello @bourumir and welcome to this forum :slight_smile:

I always try to work on the principle of “Just because I can’t think of a use for it that doesn’t mean that someone else won’t think of a use for it and do good things with it.”

I’ve previously made comments on that Wishlist bug report and I’m in favour of it.

Recently, I did want to produce a simple animation of an ‘explanation and instruction’ nature as part of a reply to a topic on this forum, with a frame rate of about 1/4.

Some technical questions for you:

Is this only suitable for animated .gif output?
In the past, I’ve noticed that .mp4 output does not behave well with low frame rates but I don’t know if that is a problem with ffmpeg or the video player I use.

The expression of frame rate in fractions seems clumsy and not related to user’s practical requirements.
e.g. I’d actually want a frame every 4 seconds and would like to enter that as the time interval between frames, probably as ‘4.00’.
Would that be possible?
(In GIMP, for an animated .gif output, you specify the frame interval in milliseconds.)

1 Like

Hold frames exist so you can do this kind of steps but in 2d adjusting everything is harder for sure since there are no real animation curves.

While your animating you can add hold frames easily but if you have some gif open or frame sequence and you want to slow down the frame rate alot adding hold frames will be utterly annoying. It is useful I guess.

But you can just export the frames and edit it all on a video editor as a viable option to achieve this. And you can speed down or slow things down but from very different images it would not work.

How much it is really needed for a krita work flow? I have no clue. I did 2 or 3 animations in Krita and my issues were with looping things more than frame rates. I did 5fps which is pretty slow already.

More than 1 second per frame seems like a slideshow or like an animatic type of deal? But animatics already have timming they are not fully X frames per image.

I never did such slow animation so I donno. Maybe someone else knows this case better?

1 Like

Thanks for making the thread. KA is a good place to get more artist feedback. :slight_smile:

Just gonna chime in and share some thoughts:

@bourumir :

Educational animations
One of the areas where I image this could be useful are educational animations showing say chemical formulas being converted in reaction, or matrix multiplication, or some mechanism working. They do not necessarily benefit smooth movement as much as usual movies and need effort to understand, so should be rendered slowly.

Easy/simple animations
I have seen some Krita beginners spending so much time effort on each frame that the usual 24 FPS looks way too demanding. Probably some would like to render at very slow rate of 1/2 or 2/3 frame per second just to see that it may be an animation, that it may work for them.

Also, I am not sure if some advertisement clip may not be rendered slowly if 24 FPS is too expensive to produce.

I agree that there are times where smooth animation isn’t wanted or needed. What I don’t understand is why the desired result can’t be achieved by simply holding frames by spacing them out on the timeline. (In other words, placing a frame at time 0, then the next frame at time 6, etc.)

And as @EyeOdin points out, we also currently have another option of rendering each frame out as an image to be used in a video editing program or slideshow presentation.

Storyboards
Some movies like “Spirited away”, for instance, have a story board published as an additional material. It represents a series of pictures that are very far away, differ from each other significantly and if to render them at all for general impression, then likely at the speed of frame per few seconds only.

We’ve recently added a Storyboard Docker and Storyboarding workspace that, though still pretty new, do a pretty good job of handling this use case. Timing between scenes is handled in seconds + frames format, and changes are synced to the animation timeline docker.


@AhabGreybeard :

I always try to work on the principle of “Just because I can’t think of a use for it that doesn’t mean that someone else won’t think of a use for it and do good things with it.”

Yeah. This is a good principle. But I also have a responsibility to make sure that the things we add to Krita are in service of animation and storyboarding workflows. As such, the real workflow benefits of adding a feature always have to outweigh the costs of complexity with regard to UX and code.

I’m a pretty average artist and animator myself, but as you’ve pointed out, even if I was better there are going to be times where I’m not able to see the benefit of a proposed feature, which is why it’s good to have conversations like this where the community can make a case for why (and how) something should be added.

As one of the current “maintainers” of Krita’s animation and storyboarding stuff, I will try to keep an open mind about things. So please hold me to that. :wink:

Is this only suitable for animated .gif output?
In the past, I’ve noticed that .mp4 output does not behave well with low frame rates but I don’t know if that is a problem with ffmpeg or the video player I use.

Because we’re talking about the global timeline “framerate” setting here, it would be expected to work across all of our export formats.

The expression of frame rate in fractions seems clumsy and not related to user’s practical requirements.
e.g. I’d actually want a frame every 4 seconds and would like to enter that as the time interval between frames, probably as ‘4.00’.
Would that be possible?

As of right now, Krita animations are timed in terms of integer “frames per second”, which is the most common and intuitive way of expressing frame rate. So “4.00” would be understood to mean “4 frames per second”, while “0.25” or “1/4” would mean “1 frame every 4 seconds”…

Whether any of that is intuitive or good UX is a big part of the question that I have right now, especially when you can just set the framerate to 1 frame per second and space each keyframe 4 frames apart.

How much it is really needed for a krita work flow? I have no clue. I did 2 or 3 animations in Krita and my issues were with looping things more than frame rates. I did 5fps which is pretty slow already.

More than 1 second per frame seems like a slideshow or like an animatic type of deal? But animatics already have timming they are not fully X frames per image.

I never did such slow animation so I donno. Maybe someone else knows this case better?

This is more or less my feeling on the topic. I’m not against fractional framerates as long as everything works and is relatively clean. I’ve highlighted some changes in the MR to do just that, and support for other formats is something that we can test and hopefully address if needed. But I’m also interested in seeing how useful this feature might be to other Krita animators.

1 Like

The use of Held frames (spacing) for low frame rate animations has the advantage that you can vary the time intervals between a sequence of images. Changing the individual intervals would be possible but need careful attention.
The Timeline would be ‘stretched out’ either way.

For fixed rate image sequence presentation, use of a ‘fractional’ frame rate seems to have an output file size advantage.

For a 1024 x 1024 canvas, with a particular nine-image sequence at 4.0 seconds interval between images, using Held frames for interval spacing in krita at its lowest 1fps rate, I get an output .web looping animation file of 8.9 kB size.

For the same animation, manually rendered from the 9-frame .png output sequence, using the img2webp utility to give 4000ms between frames, I get an output file of 4.6 kB size.
That is a significant percentage reduction:

Anim-Sequence-Compact-4secs

For animated .gif, using GIMP to give 4000ms frame intervals for a similar comparison process, I see an output file size reduction from 12.7 kB to 11.3 kB - not as dramatic.

1 Like

Now that I was thinking about it, Imagine Board does do a slideshow presentation in where you can adjust the X time for each image.

1 Like