pencil2d / pencil

Pencil2D is an easy, intuitive tool to make 2D hand-drawn animations. Pencil2D is open source and cross-platform.
http://pencil2d.org
GNU General Public License v2.0
1.47k stars 273 forks source link

Frame deletion/exposure improvements #1172

Open David263 opened 5 years ago

David263 commented 5 years ago

Issue Summary

When I try to create an "ordinary" animation, I cannot delete or ignore frames. If I fill sparse frames with drawings...

### Actual Results ...all the frames are output in a GIF file: the animation plus pauses for all the frames that have no drawings. ### Expected Results I expect that if I skip some frames (so the gray rectangle is missing), these empty frames will be ignored when playing and in the output. Also, I expect that "delete frame" (either the - button or Menu > Animation > Remove Frame or Shift+F5) will delete the frame from the timeline, and move all later frames one frame earlier. Also, I expect that I can delete a range of frames indicated by the mouse. Also, I expect that Add Frame (F7) will add a frame at the current selected frame, not somewhere else. pencil2dframes ### Video or Image Reference ### Steps to reproduce Enter two key frame drawings, spaced apart by many frames. Fill in one inbetween frame in the middle, showing the middle drawing. Try deleting all the frames between the key frames and the middle frames, so that your animation contains only three frames: it cannot be done. The attached example is a scaled-up version of this description, with lots of unused frames. All these unused frames are actually output into the resulting GIF. Let me know if you need to see the GIF. ### System Information + Pencil2D Version: Version: 0.6.2 Operating System: Windows 10 (10.0) CPU Architecture: i386 + Operating System: + RAM Size: + Graphics Tablet:
Jose-Moreno commented 5 years ago

Greetings. Thank you for taking the time to report your experience.

I apologize in advance for the lengthy response but this comment is also meant for other developers and maintainers to review the state of this issue and its importance in relation to existing issues while I address each point.

I expect that if I skip some frames (so the gray rectangle is missing), these empty frames will be ignored when playing and in the output.

From an animation perspective that empty space is not to be ignored and is as important as drawn frames. These empty frames are called exposure frames and are meant to repeat drawings without duplicating drawing container objects.

To generate the illusion of movement with the least amount of work possible animators plan out how drawings are exposed in the film strip using an x-sheet. To emulate this in Pencil2D, both drawn and exposure frames are taken into account on the timeline when playing and rendering the entire animation. This is a common behavior in all the current animation software in the market as well.

e.g For a second of animation, instead of drawing 24 individual drawings, you can draw 12 individual drawings and expose each for one additional frame to fill the required second of motion using double exposures or "two's".

Note: Taking into account your expectations for this we could also consider implementing a playback feature that actually skips exposures or specific amount of frames (eg. play every x frames) during editor playback and during the export process.

There was a feature implemented recently by David Lamhauge in #1131 which emulates how animators flip paper during their hands-on work, which has a mode that only plays a specified amount of keyframes while ignoring exposures. We could probably base a future enhancement for editor & render frame skipping on that implementation.

Also, I expect that "delete frame" (either the - button or Menu > Animation > Remove Frame or Shift+F5) will delete the frame from the timeline, and move all later frames one frame earlier.

Certainly this would be ideal, although Pencil2D has an automatic exposure system for the drawings, with the current implementation it has no way of handling this empty space as an object itself yet.

While this is addressed, as a workaround press the ALT key while clicking & dragging on a keyframe. This will move all the keyframes after the current one being dragged while preserving the absolute distance between them.

Also, I expect that I can delete a range of frames indicated by the mouse.

This has been informally requested as a future enhancement of the upcoming multi-frame operations feature in #1106 pull request.

Also, I expect that Add Frame (F7) will add a frame at the current selected frame, not somewhere else.

This has been requested previously along other conveniences in issue #1116

Most of these important features have been put on hold as developers will be working in a timeline rewrite proposal #533 and following implementation for the current year 2019, which will be made to optimize performance and allow to easily include the mentioned behaviors along other heavily requested features to make it more intuitive for Pencil2D users.