Timeline improvements, fixing frame manipulation, adding simple tweening

I’m proposing making a few changes to the timeline. My goal is to not make the timeline any more complicated, make it more intuitive (at least in the perspective of coming from another animation program) , fix the ability to click and drag frames (which is broken in the current master), and impliment an easy interface to create simple tweens which would not complicate using the timeline.

I’d like to preface this proposal by stating that, I am aware that pencil2d is, and should remain, animation software focused on traditional animation. I would not propose turning this more into something akin to synfig or flash, which are built to allow the user to do most of their animation using tweens. What I am proposing is something that would allow certain common and importent effects to be easy to do, such as the scrolling of a background (which was the subject of another forum post that I noticed), or the rotation of a ball that might be thrown, or the shrinking of a car that might be driving away. Complicated scenes involving many tweened objects should perhaps remain the venue of other applications.

This is my proposal:

  • Keyframes should have a size. They should explicitly last a certain number of frames. Currently, you can create a keyframe and every frame after that uses the content of the last keyframe shown. I would propse that if a layer does not have any keyframe on it, then the content of that layer is blank. The user explictly expands a keyframe to fill space which should have content visible. To me, this is more intuitive behavior. It may seem like this is extra work for the animator, but I think with a proper interface it should be very easy and intuitive to do. In addition, thinking of keyframes in terms of a size of multiple frames has advantages for implemented the rest of the proposed improvements:

  • Keyframes have a position, rotation, and scale value. These could be changed via a docked dialog (called the “frame properties” dialog), probably to the right of the timeline. The user may right click on any frame within a keyframe to create a position, rotation, or scale key. The values in the dialog reflect the values associated with the last position, rotation, or scale key that had been created. Each keyframe automatically has at least one such key associated with it that applies to that keyframe’s very first frame. As you may guess, these values will affect the position, rotation, and scale of the drawing in that keyframe.

  • The user may choose these position, rotation, or scale keys to be tweened between. This should probably be done in the frame properties dialog as well.

This means keyframe properties are keyed and tweened, therefore to tween multiple objects, multiple layers must be used. But I think this makes a highly accessible and transparent system, which doesn’t make the current animation workflow any more complicated but it adds a lot of power.

Additionally the timeline should become more interactive. Right now users cannot select frames and move them, in the master branch. But more than that, it’d be nice to be able to cut, copy, and paste groups of frames.

What do you think? It sounds a bit ambitious but I think it’d be a huge improvement, especially over the current kind of broken timeline.

I think the current method of keyframing is much like it’s done in Flash (in terms of frame-by-frame animation)…a keyframe with art in it lasts as long as there are plain frames following it, or until there is another keyframe, with art or empty. This works fine for me, but i think either way would be acceptable.

As far as manipulating multiple frames goes, i completely agree that it needs improvement.

scaling, rotating, tweening of frames i have no opinion of, until i actually try it out

As someone who has used flash a lot, both animations and development, I’m pretty sure that my proposed change would make it more like flash. If there are blank frames, there is no art asset shown on that layer. A frame must actually have something in it. It’s been almost a year though.

I am fine with all of this @thorjelly! Basic tweening can be very useful!

Keyframes should have a size
I agree.
The user may choose these position, rotation, or scale keys to be tweened between. This should probably be done in the frame properties dialog as well
This is a must-have, even for a "bitmap" animation software. I work a lot in after Effects and this is very important for me as an animator. I think those properties should be related to the LAYER, not to the frame. Most softwares works like this (don't forget, this should be a software that is easy to handle) and it's kind of easy to use.

Layer properties in After Effects

Also, this was planned by the original author (see point 4.2.3 of Pascal Naidon’s original vision for the software). He also talks (and that’s important too) of sublayers.

Additionally the timeline should become more interactive.

Sure.

Read this one too : Redirecting…

Thanks !

I forget i’m still using a very old version of Flash (MX, from 2002), so i have no idea how things are done now. Frames in FlashMX and previous, however, like Pencil, don’t actually contain anything…they simply continue to show whatever is contained in the most recent keyframe. There are still frames there, though. If the frames end on a given layer, or if you add a new keyframe, that’s when you stop seeing what was contained in the previous keyframe. Maybe I’m misunderstanding what you mean by “blank frames”, but i’ve had it drilled in my head for over 15 years that the terms frame and keyframe in digital animation are never to be used interchangeably. In both Pencil and Flash, frames are not much more than timing elements (and tween space in flash), and all the actual content is in keyframes.

But in any case, if they can be made more useful without having to learn a whole new way of using their basic features then i have no problem with it at all.

I think those properties should be related to the LAYER, not to the frame. Most softwares works like this (don’t forget, this should be a software that is easy to handle) and it’s kind of easy to use.
Ah alright. Well... in that case, I'm not entirely sure if there's much point to making a keyframe last a designated amount of time such as in an application like flash. The point of this would be to turn a keyframe into a more interactive object. But if this stuff is handled on layer-level, then that's not necessary and the way keyframes are handled right now is fine. I'm not really used to using software like After Effects, but I can see the appeal of making all this layer-level; you could make a loop of a walking animation and then have the whole layer to tweened to make the character move back and forth.

I was considering how to implement a character with a walk cycle walk back and forth with tweens, and I thought maybe eventually you could have animation objects and throw one in a layer as the contents of a keyframe instead of a drawing and then tween that frame. The advantage of keying inside frames is that there doesn’t need to be extra “layer tracks”, that entire interface is unnecessary, and can be compressed into a single layer track that represents the frames. I was thinking it’d still be nice to implement a curve editor for position/rotation/scale/opacity keys, though.

So imagine this workflow: you create a walk cycle in pencil2d. You save it, then make a new pencil2d project, and import that walk cycle. It shows up in an assets library, and you can right click and choose ‘loop animation’ for the asset. Then you drag it into a layer. The entire walk cycle is represented with a single keyframe, which you can expand out to 60 frames and then tween back and forth.

The idea of creating keys and tweening on a layer is still appealing to me. You could tween many frames without needing to save it as a separate animation. And it basically would make pencil2d a basic compositor, maybe, which is useful, even if not the focus of the application.

Right now… I guess I am finding working on the layer level rather than the frame level a bit more appealing actually. And being able to actually see a graph representation of these values in tracks below the frame track is pretty cool. But I dunno still worth discussing other ideas.

I forget i’m still using a very old version of Flash (MX, from 2002), so i have no idea how things are done now. Frames in FlashMX and previous, however, like Pencil, don’t actually contain anything….they simply continue to show whatever is contained in the most recent keyframe. There are still frames there, though. If the frames end on a given layer, or if you add a new keyframe, that’s when you stop seeing what was contained in the previous keyframe. Maybe I’m misunderstanding what you mean by “blank frames”, but i’ve had it drilled in my head for over 15 years that the terms frame and keyframe in digital animation are never to be used interchangeably. In both Pencil and Flash, frames are not much more than timing elements (and tween space in flash), and all the actual content is in keyframes.
Hmm, okay, I know what you mean now. You can't actually have blank frames in flash until the layer ends, you're right, you can just have empty keyframes (ones that have no drawing objects in them). I guess I was kind of thinking that empty keyframes would be more analogous to having empty frames in pencil2d. I guess this isn't technically correct. The difference between pencil2d and flash, of course, is that in flash you can have many drawing objects in a single frame, and in pencil2d, you only and always have a single drawing object per keyframe (for bitmap and vector layers). Therefore I don't think any keyframe will be "blank" in pencil2d technically, therefore I think keyframes should be able to end before another one starts, if the user wants it to. Mmmn I suppose that the user could just make a new keyframe that just doesn't have anything drawn it in instead though. I guess it doesn't matter, maybe the latter is better.

And yeah, the concept of keyframes and frames are different. When I say a keyframe can have a length of x amount of frames, I suppose what I really mean is that the keyframe is the first frame in this amount of frames, and it represents the actual drawing object the user had made. This keyframe – the drawing object – is then drawn for x amount of regular frames, which is user defines. And when I refer to a blank frame, I mean a frame where no keyframe – no drawing object – is drawn at all. Maybe that clarifies things a little bit. When I was describing a keyframe, I was kind of using it to mean a distinct drawing object that lasts x amount of time. Since I sort of think that’s a simpler way to think about things, to me, because the drawing object (which is defined by the keyframe) is a single object shown for a designated amount of time? If that makes any sense. But I realize an animator does not think of keyframes in that way. An animator thinks of a keyframe as a very specific frame in which a particularly important drawing is defined.

On reflection, layer properties is much better to implement because otherwise it is convoluted to simply make an animation on a layer less opaque, because then you’d have to change the property for each frame. Unless you wanted to implement both. But is that really necessary? We probably don’t need two types of properties/tweens that do the same thing, more or less. So I’d work on that. Thanks for the suggestion, gordie.

I think i understand what you’re saying now. It seems that i was mostly misunderstanding your description rather than disagreeing with your idea.

It was confusing, I’ll admit.

So, I have to say, it seems that this guy stopped before finishing the frame management.
So, is there any chance of it getting fixed soon? Cause, being unable to move frames kinda makes the entire program unusable as far as I can see.

I have some thoughts and issues I wanted to discuss on timeline/ frame issues. I tried dragging an dropping a screenshot into a post and it didn’t seem to stick. Is there any preference for where to host images for this forum?