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

Add "Summary"/timeline keyframes and node collapsing in animation editor #1908

Open
nice-shot opened this issue Nov 29, 2020 · 6 comments
Open

Comments

@nice-shot
Copy link

Describe the project you are working on

2D and 3D casual games.

Describe the problem or limitation you are having in your project

There is no simple way to select and adjust all of the keyframes for the entire animation or for a specific node in the animation editor. This is relevant for animations created in the editor or imported.
For example, in order to move all the keyframes in a particular point in time two frames forward, the user needs to box-select all of the keyframes. This becomes an issue with large animation with plenty of tracks - the user needs to box-select, then scroll and shift-drag-select again and again until all the relevant keyframes are selected.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

Unity's animation window has a "summary" track that shows all the keyframes of every track in the animation. Additionally Unity has summary tracks for the different game objects which can be collapsed for easier viewing and editing of larger parts of an animation, instead of just individual tracks.
Adding this feature into Godot's animation editor will greatly improve the animation workflow.

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

In terms of UI, an extra track can be added before the first track of the animation with keyframes representing every frame where any track has a keyframe inside. Moving one of these keyframes will move every keyframe in that point in the timeline. Just like in Unity.
Additionally, godot already has a separation line for each node, so I suggest adding an interactive "collapse" button before the track name and use that row to add the summary keyframes for that node.

Here is a mockup for this suggestion:

GodotAnimationPlayerSummaryMockup-V01

If this enhancement will not be used often, can it be worked around with a few lines of script?

I believe this enhancement will be used often. Since this is basic animation workflow in the editor, I'm not sure how this can be worked around with a few lines of script.

Is there a reason why this should be core and not an add-on in the asset library?

This is a basic and simple UI-UX enhancement for a core editor window. Trying to add this as an add-on will probably require creating an alternative animation window which does not make sense.

@TackerTacker
Copy link

This should extend to all the modes at the end of the UI.
The update mode, the interpolation mode, the loop wrap mode, and even the delete icon.
It's such a pain to switch the interpolation mode by hand for every single animation track individually, especially since it's linear by default, and unless you are animating a robot it's not really the preferable mode.

@Calinou
Copy link
Member

Calinou commented Nov 30, 2020

It's such a pain to switch the interpolation mode by hand for every single animation track individually, especially since it's linear by default, and unless you are animating a robot it's not really the preferable mode.

See also #174.

@nice-shot
Copy link
Author

I agree that adding these buttons could definitely come in handy!
Though specifically I believe that interpolation mode should be handled per-keyframe and not as a track setting. But that's another feature all together.

@NEO97online
Copy link

NEO97online commented Jan 5, 2021

This would be a great addition for usability. Here's how it looks in Blender for comparison:
image

It's an essential feature for an animation editor, to know at a glance where keyframes exist, and quickly move or edit entire frames (which is a common thing to do).

Selecting a key on the summary track should also open a AnimationMultiTrackKeyEdit node in the Inspector, and should allow deleting and copying that entire column. If it triggers selection in the same way as drag-selecting does, we should get all of those features for free.

I added track collapsing as a first step in godotengine/godot#44847, and am currently working on a Summary implementation.

@Calinou Calinou changed the title "Summary" keyframes and node collapsing in animation editor Add "Summary"/timeline keyframes and node collapsing in animation editor Sep 12, 2021
@Lebostein
Copy link

Lebostein commented Sep 13, 2021

I can confirm that this missed function (select and move all keyframes of a particular time point) is used very often in animation process. I use it the most for slow down or speed up the entire or a part of the animation. A larger distance slows down the animation, a smaller distance makes it faster.

Is there a workaround?

Edit: I can only encourage developers to take a look at real keyframe editors. There is even a very popular open source editor:
https://docs.egret.com/dragonbones/en
In the first row of of the time line editor of DragnBones you can see this "Summary" handle to move all keyframes of one column.

@vrabeccc
Copy link

Is there a workaround?

out of desperation i've made a plugin for myself but it's so finicky and hacky it's wasnt meant for public release ever. i just dont know any better.

cause there's no gdscript function to select and highlight all the keyframes in the trackeditor so they can be moved by mouse, you have to click the button on the left to select them and click to move them by 0.1 increments.
Screenshot_2021-09-13_08-19-49

also couldnt find a gdscript function to update the trackeditor so you have to change tabs to see changes :)
it's still faster than what's in now. if you really cant wait and you want to deal with the above process i can zip it up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants