Skip to content

Updated Animation Curves Docker GUI

Emmet O'Neill requested to merge (removed):ani/curvesui into master

New Animation Curves Docker!

Screenshot_from_2020-11-25_21-14-54

Based roughly on the mock-up and discussion here: https://phabricator.kde.org/T13517.

Here's a Linux AppImage for testing purporses! UPDATED Dec 10 2020

Changes so far:

  • New KisUtilityTitlebar (Top): like the one on the Timeline Docker, with an emphasis on workflow and simplicity.
  • Improved KisAnimationCurvesView (Center area): vertical and [new] horizontal lines now align to values, like a graph should!
    • Lines in the curves view clearly align with the lines of the value ruler, giving a better sense of where your keys actually are.
    • Curves are now drawn a bit smoother and are hard clipped to show range of the channel.
    • To help things read, the current frame line is now highlighted in orange, and zero value line is highlighted in blue.
  • Improved KisAnimationCurvesValueRuler (Vertical header): Basically rewritten and quite dynamic, with long notches at noteworthy values (dependent on scale) and minor notches to hint at subdivisions. (4ths or 10th depending on the scale).
  • Tons of navigation options! (Also adapts to current scale!)
    • Pan around with space+click+drag.
    • Zoom with the drag buttons on the titlebar.
    • Zoom and pan using the new KisZoomableScrollbars.
    • Pan horizontally with kinetic scrolling.
  • Two "Zoom Fit" action buttons: (1) "zoom-fit-curve" zooms to fit the extents of the current curve, while (2) "zoom-fit-range" zooms to fit the extents of the current scalar keyframe channel.
  • Value spinbox: See and set the exact scalar value of the selected node.
  • Design has been made as consistent as possible with the Timeline Docker, features that exist on both are in the exact same places.
  • Various workflow papercuts have been addressed when it comes to plotting and moving points. (We try to keep the grid looking where you're working, things snap a little bit nicer, can now edit and remove the selected key, etc.)

What needs to be done:

  • The list of the channels on the left hasn't been touched yet.
  • Support for other channels (like Transform Masks, for example) will need to be added. (In this MR: !493 (merged))
  • Opacity still works on an 8-bit (0-255) scale right now, as it does under the hood, but it's probably better UX to present it on the scalar channel as a percent (0-100) or normalized (0.0-1.0) and then convert behind the scenes. (Also in this MR: !493 (merged))
  • Improve "zoom fit curve" to show the entirety of the curve instead of just the keys.

Known issues:

[] The dynamic zoom is very slightly jerky due to sudden changes in step size, but that shouldn't be too hard to fix. [] The vertical KisZoomableScrollbar and mouse scroll wheel is a bit odd and deceptive right now. Ultimately it may not be the right tool for the job since we're dealing with an infinite and unpredictable range of Y values.

...That's all I can think of right now.

Please try what we have so far and let me know what you think or any ideas or suggestions that pop into mind.

(Worked with @eoinoneill on much of this, by the way. 😄)

Edited by Eoin O'Neill

Merge request reports