Change Onion Skinning UI?

Hi! I’ve been around like a year or two ago and made a very simple commit. Well I just want to say, I’d really love to contribute more to this project, possibly becoming a more active developer.

I’d like to try to implement something kind of simple but I think’d be a nice improvement to the UI.

My proposal: Remove “Number of previous/next onion frames shown” from Preferences and “Onion skin previous/next frame” options from Display, and integrate controls for changing onion skinning perimeters into the timeline UI, in the form of grabbable brackets on either side of the currently selected frame. This is similar to how some other animation programs do it, like Adobe Flash. The advantages of this method is that I think it simplifies the interface by consolidating different options spread around the application into a single interface, and it also makes them more accessible and easy to change on the fly.

A possible disadvantage/complication of this method is that the current “toggle match keyframe” button functionality may be awkward, because the way it currently works it would move around the brackets on the fly, which are specifically user-positioned. I think it’d be more intuitive if these brackets were only moved by the user. I would propose that this button be changed to just toggle onion skinning on/off; this seems like the intuitive use of the button anyway, and the function I assumed that it would do. I was confused and thought it was a bug at first that it didn’t actually toggle onion skinning off (this was very confusing to me). Fortunately, its possible the current functionality of this button won’t be as necessary with the new system, because it would be extremely easy to make the onion skinning cover more frames on the fly, anyway.

Here’s a picture to show an example of how this would look:

I might also propose moving the buttons that colorize the onion skins to near the Onion Skin toggle button (if that is how it would be used in the future) so that all Onion Skin toggle buttons are near each other. This would make intuitive sense to me. Also, I think it’d make sense to combine this into one button. Does anyone think it is necessary to separately toggle colorization of previous and next frames?

One additional, more personal, reason I am interested in implementing this particular feature is that it would get me more familiar with the timeline, which is a part of Pencil2D I’d like to improve in the future in a few other ways. But I’d get into that later.

Thanks for reading! What do you all think?

@thorjelly Hey! thank you for your renewed interest in Pencil2D :slight_smile: glad to see you around. Sorry I took so long to answer, it’s been a busy month for me. We would love if you could contribute in any way to Pencil2D, seriously we’re in need of more developers, and even trying to understand the code to help others who want to code would be more than welcome.

Now, regarding your proposal, I too agree that the onion skin preference options is in need of major changes.

Now I always hated Flash’s onion skin draggable frame-range thing. It always stood in the way when I was moving the playback head.

Right now the onion skin functionality for adjacent and “far” keyframes is incomplete, but trust me it IS useful. If you have ever used TVPaint, you’ll find something similar over there. Because there are times when you want to check only your keyframes without the inbetweens to alter the timing.

I was going to propose an added functionality based on labels to extend this line of thought and to allow other functions that pro animators need and have aksed for some time now (like exporting the keys and layers to an x-sheet)

I think your proposal is worth discussing for you have given lots of thought to it, so I’d love we could all discuss this with @chchwy @feeef and whoever else is still around.

I think we need to join efforts more than ever if we expect this software to ever liftoff.

To everyone who want to help with this, please review TVPaint’s onion skin system, Digicel Flipbook’s onion skin system and Krita’s onion skin system. This way we can have similar knowledge when discussing these ideas to implement what’s best for the animator.

Thanks a lot for speaking out thorjelly! :slight_smile:

Thanks a lot for your help @thorjelly!

Personally, I would like to keep the “toggle match keyframe” feature because when doing key animation, it avoids having to constantly change number of onion skin frames before and after.

When I animate, I always start with my key animation and make it match with time in the timeline. So, on fast action, I will have one key every 5 or 6 frames, when the action gets slower, I will have one key every 20 frames. What ever happens, I always get my few lats drawings in the onion skin.

Even when inbetweening, it is very practical. I just set 1 frame before, one frame after and never worry about how far is my previous or next key from my current inbetween.

On Flash this was a real pain for me actually. I always had to change the number of onion skin frames.

What I was thinking, in order to quickly change the onion skin number was to click on the first or last frame you wish your onion skin at while pressing the alt or control key. The software calculates the number of keyframes based on the toggle state.

If you really decide to remove this feature anyway, I will keep it hidden somewhere as I really use it all the time.