Page MenuHome

Playblast: only render on keyed frames
Closed, ResolvedPublicDESIGN


When animating a character on twos (so every other frame has a key, and using constant interpolation) but the camera motion on ones, it can be hard to follow the character and properly inspect the motion.

This design task proposes a way to do a play-blast by only rendering those frames that have a keyframe, a feature requested by @Pablo Fournier (pablico) on behalf of the Blender Studio animators.

The behaviour should be:

  • Animator selects one or more objects.
  • Animator clicks on View → 'Viewport Render Animated Frames Only' button (of course label subject to change)
  • Blender renders the appropriate range (same as View → Viewport Render Animation), but only those frames for which one or more of the selected objects have a keyframe.
  • The duration of a frame in the final video file should be such that the timing is still correct. In other words, rendered frames should not be stuck together at a fixed frame rate, but rather be displayed until the next animated frame. Rendering frames 1, 5, and 10 should show frame 1 also on frames 2-4, and frame 5 on frames 6-9.

When outputting images, duplicate the rendered frames on non-rendered frames. This will produce more files than strictly necessary, but it will make it much easier to later convert the images to a video. It will also make it possible to incrementally update the keyframe density while maintaining the same set of output files.

When outputting a video, this duplication may not be necessary, but is trivial to implement. Each frame could receive its own timecode, but that's harder to implement, and left as a nice-to-have for the future.

Event Timeline

Hey @Sybren A. Stüvel (sybren),

If you are interested, I've already written something like that, might be one approach for reference The addon also allows rendering via CLI as well as automatic encoding via ffmpeg.


Sybren A. Stüvel (sybren) changed the task status from Unknown Status to Resolved.Dec 20 2019, 12:40 PM