Some Timeline suggestions
Closed, ResolvedPublic

Description

Hi. These are my suggestions and mockup, as a user, to improve the Timeline docker.

Changes to the terminology

  • Instead of using the word "Frame" (New Frame, Remove Frame etc.) to describe the content of a layer in the timeline, use "Drawing" (New Drawing, Delete Drawing etc.).
  • Use "Frame" (or "Cell", a synonym) to describe the slices of time that Drawings can be exposed for.

This change allows you to think this way: "Drawing 1 is exposed on frame 5 for the duration of 3 frames."
This fits better with standard animation workflow and structure, where you have drawings, frames and the exposure of those drawings along those frames.

A layer has a number of drawings. Those drawings are exposed on different frames (or cells) of the timeline.
A drawing is unique and has a name, but it can be repeated multiple times on the timeline, such as mouth drawings for the same viseme while a character is speaking. The mouth drawings are reused.
If you modify a drawing on the timeline (by doing something on the canvas), all other instances of that drawing on the timeline should also show those changes, since they all reference the same content.

Changes to the interface

Exposure

The exposure is the amount of frames that a drawing is visible. Right now, the exposure of a drawing is given by the amount of blank cells between a drawing and the next drawing:

To make this more intuitive, represent exposure by extending the drawings along these cells that they're exposed for, and have blank cells indicate "no drawing" at all.
You don't necessarily have to use this arrow decoration, it can be anything else:

Onion Skin

There's a grey row on the timeline header. Its purpose is not really clear, sometimes it changes?
You can make use of that area or similar to allow users to edit the onion skin length right there, around the playhead (the current frame marker).

Frame Range

Add markers on the timeline that show the active frame range. Dragging these markers changes the corresponding Start and End values of the animation settings.


Changing the frame range to a small part of the timeline should limit the playback (and looping) to that part, useful for polishing a short sequence of the entire scene. Being able to easily make these range changes is very helpful.
Also, these range markers could have a right-click context menu with some preset positions:

  • For the Start marker, "First Frame" (zero) and "First Drawing" (the frame of the earliest drawing on the timeline, whichever it may be).
  • For the End marker, "Last Drawing" (sets the End marker to the final frame of exposure of the last drawing on the timeline).

Related Objects

RNavega created this task.May 14 2017, 9:21 AM
Bollebib added a subscriber: Bollebib.EditedMay 15 2017, 12:58 PM

Exposure

This is already on a wishlist on phabricator,this is a good idea that just needs a dev to put in his/her time.

Onion skin& frame range

The grey row is for caching,so you can see if the playback is loaded. To have an additional marker for beginning and ending of video length can be added .
not too sure about editing onion skin length there though.. as it's only a range,and the onion skin can have gaps in them.

There are a lot of small improvments like that already reported and mocked up ,but the devs are busy with other things at the moment.

https://phabricator.kde.org/M2
I would suggest you add the start and end point marker request here

The other things are already mentionned there

RNavega added a comment.EditedMay 22 2017, 8:18 AM

Hi @Bollebib, thank you for reviewing this.

Pholio M2, understood.

This is a mockup Bollebib and I discussed over IRC. He is thinking that timeline appearance could be more like #3 in this.

He was thinking it would be better for keyframes to store the hold length that would exist. Right now you have to add a new keyframe to stop a hold from happening. The developers might need to discuss that a bit in terms of how the data is structured.

RNavega added a comment.EditedJan 16 2018, 11:50 PM

I like number three. Any visual way to represent and control exposure is a good call imo.

He was thinking it would be better for keyframes to store the hold length that would exist.

Not sure if the following would make it simpler on a technical way, I rely on your expertise: to interpret the hold length from the consecutive uses of the same drawing on the timeline, instead of storing a hold length value on each keyframe.

So, if your timeline has the following drawings on cells:
( 1, 2, 3, 3, 4, 4, 4, _, 4 )

Then the exposure (the hold length) can be inferred from the consecutive cells that show the same drawing. Drawings 1 and 2 are exposed for one frame, drawing 3 is exposed for two frames and drawing 4 is exposed for three frames, then a blank cell that shows nothing, then another drawing 4 exposure.

Edit: Hm, I realise that this is related to the data-structure that will represent the timeline, if it's a linked list (constant-time insertions in the middle) vs vector\array (fast random access).

scottpetrovic closed this task as Resolved.Sep 24 2019, 2:12 PM
scottpetrovic claimed this task.

Closing this ticket. We updated the UI a little while ago with some of the hold ideas listed here. Any other feedback can go in a new ticket.