Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Request] Implement Flipping / Rolling Feature #978

Closed
Jose-Moreno opened this Issue May 23, 2018 · 6 comments

Comments

Projects
None yet
4 participants
@Jose-Moreno
Copy link
Member

Jose-Moreno commented May 23, 2018

--Issue Summary--

This is one of the features that are on the request roadmap and it's been requested a few more times.

In traditional animation Flipping & Rolling are two similar techniques that allow the animator to quickly preview their current animation work by flipping ( jump between the first, last and inbetween drawing of an action) or rolling (preview drawings in ordered sequence flipping with all your available fingers).

Explanation of Flipping Techniques

  1. The "Inbetween" Flipping: This technique is used mostly for the process known as in-betweening and the minimum amount of drawings you can use is two, but 99% of the time you will use three drawings. These are usually, the first drawing in the action (previous key), the last drawing (next key) and the currently edited inbetween.

REF: https://www.youtube.com/watch?v=0hw5eQF99ng

  1. The rolling or "roll flipping" technique is used to check how a specific part of the action is working out, and the minimum amount of drawings are at most 5, one for each finger to manipulate plus one sitting at the bottom of the stack.

REF: https://www.youtube.com/watch?v=0C8arzQWUoI

  1. There's also the "flip" or "stack flipping" technique which is when you take a large amount of drawings, organize them like a giant flipbook and let it "flip" down to check a large portion of your animation at a relative non-real time speed (it's hard to get constant fps using your fingers lol). This could already be considered as partially covered by the playback behavior though.

REF: https://www.youtube.com/watch?v=6Lmwz7M7SsY

In order to mimic this behavior in a digital environment timeline this functionality should aim to modify the playback behavior as it should be based upon the current drawing / frame container that is being edited, that is, where the playback scrub is located at the moment of activating the function.

I have to note this functionality is semantically different from the Range function as well how its applied during a job. Whereas the current Range function allows you to preview a portion of the timeline from start to end including every frame in the range (in a way this would fulfill the stack flipping technique), the inbetween flipping and roll flipping functions have to behave differently to allow the animator to see the only the drawing(s) (normally keys or main drawings) behind and /or in front but always coming back to the currently edited drawing.

In the sense of previewing only the keyframe drawings, we have a similar behavior exhibited by the "onion skin toggle match keyframes" command (the little diamond button on the timeline)

For reference you can read about TVPaint's "Flip" function panel: https://www.tvpaint.com/doc/tvp11/index.php?id=lesson-tradigital-animation-advanced-flip-presentation

I think we can extend the current range function so it can Ideally contain the additional Flipping & Rolling behaviors. Pencil2D's own inbetween flipping, roll flipping and stack rolling should comply with the following criteria (Updated 02/05/2019):

  • Implement Linear Playback (current default): starts at the first frame, ends at the last frame of the range (this would comply with the requirements for stack flipping and the roll flip to see the drawings in sequence)
  • Implement Flip-Playback: Would allow the scrub to jump from the current drawing to the next, go back to current drawing, jumps to previous drawing, go to current drawing. This can be done:
    • Automatically: Pressing the button executes the inbetween behavior once
  • Implement a toggled behavior that allows you to playback from and to the currently active drawing / frame container.
  • Implement a toggled behavior that allows you to playback from the beginning of the roll range up to the current drawing. Note: this was implemented similar to the onion skin range where there is a set number of drawings you can playback before the current frame, but it's independent from the frame range feature.

@Jose-Moreno Jose-Moreno referenced this issue May 23, 2018

Open

Official Roadmap [Issue Tracker] #540

18 of 139 tasks complete
@CandyFace

This comment has been minimized.

Copy link
Member

CandyFace commented May 26, 2018

Hmm given that you say that flipping and rolling alters the playback of the timeline in ways it was never supposed to, maybe it would be better to contain this in a new or multiple widgets? say for example one could generate a flip window with certain settings, it would be like a preview window but with its own timeline, fps etc...

Otherwise we might have to hack the timeline to make it work with this, things such as making the scrubber jump between certain "key" frames with in-betweens could take some work and one would have to toggle it on and off but what if you want both normal playback and flip?

This could be an opportunity to make the timeline more dynamic, so we could reuse the base but alter its behaviour depending on what we need it to do.

@CandyFace

This comment has been minimized.

Copy link
Member

CandyFace commented May 26, 2018

Something like this maybe:
image

image

By selecting the frames you want to flip through, via our current timeline, the flip timeline would be based on that, so the flip timeline would look like this

actual order:
1 | 2 | 3 | 4 | 5 | 6 | 7
where 1 and 5 are keyframes
the new order which is generated when creating the flip window would by default be
1 | 7 | 6 | 5 | 4 | 3 | 2
where 1 and 7 are still keyframes but has been placed next to each other

one could alternatively use the keyframe position manager (found in the config window that appears when you create a flip window) shown above to set their custom flip order.

edit:

Things about the flip timeline:

  • can run concurrent with the current timeline and canvas
  • will still update if frames are modified and or removed
    • if all frames has been removed the timeline is simply empty and the user can choose to close the window.
  • has its own fps
  • can create multiple windows, therefore multiple flip animations

Things to be considered:

  • should contain layers?
    • the intent of the window is to preview an animation in a certain way, It should therefore be considered whether it should contain layers. The timeline should be there but take considerable less space than the current timeline.
  • Should be possible to interact with?
    • Again it's a flip/preview window, intended for viewing, it should therefore be considered whether one should be able to modify keyframes here.

it's essentially a preview window on steroids.

@chchwy

This comment has been minimized.

Copy link
Member

chchwy commented Feb 5, 2019

@Jose-Moreno Please test this feature with the nightly build 5 Feb 2019 when you are available. Thanks.

@Jose-Moreno

This comment has been minimized.

Copy link
Member Author

Jose-Moreno commented Feb 5, 2019

@Jose-Moreno Will do. From the commit description there are some requirements that might have been left out, but if needed those can come in a later enhancement. I'll update this issue accordingly as well. thanks again for letting me know.

@Jose-Moreno

This comment has been minimized.

Copy link
Member Author

Jose-Moreno commented Feb 5, 2019

@CandyFace sorry I never really replied to your proposals, at that time I thought they were great. Today @davidlamhauge implementation has been merged and now I think both of us were probably over-thinking this feature a bit too much.

Since the flip feature is meant for a quick hands-on preview while your working, getting a different viewer or even abusing the range feature (which I thought it would work as a visual cue), was simply too much. The current implementation is really practical and it works as intended.

I've updated the requirements on the original post and although some of the initial ones were fulfilled successfully, I'd like us to discuss the ones remaining marked as "pending discussion". I've put my personal input as a side note on each but depending on what all of you comment, we can consider this fulfilled and close it or wait to implement the remaining tasks in a future enhancement patch tied to this same issue and close it once those are done.

Thanks again for everyone that contributed to this, we're one step closer to our goal for sure! 🎉 💯

@Jose-Moreno Jose-Moreno changed the title [Request] Implement Flipping / Rolling Feature by extending Range [Request] Implement Flipping / Rolling Feature Mar 20, 2019

@Jose-Moreno

This comment has been minimized.

Copy link
Member Author

Jose-Moreno commented Mar 20, 2019

I'm going to close this and leave the widget request for a new issue. I'll removed the discussion points on the main post and will save them for future discussion as well. This issue was closed by #1131

@Jose-Moreno Jose-Moreno added this to the 0.6.3 milestone Mar 20, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.