Search Unity

Animation Window Improvements

Discussion in 'Animation' started by simonbz, Aug 23, 2016.

  1. simonbz

    simonbz

    Unity Technologies

    Joined:
    Sep 28, 2015
    Posts:
    47
    Hi all,
    Here is a list of new features that will be available in the Animation Window in the upcoming 5.5 beta.

    Performance improvements
    We tremendously improved the rendering speed for both the Curve Editor and the Dopesheet Editor in the Animation Window. We mostly worked with baked/dense animation data to make sure the animation window would behave as expected. While it's difficult to really benchmark those improvements, we think they will ease out most of the pain users had with the animation window performances until now.

    New Clamped-Auto tangent mode
    We added the Clamped-Auto tangent mode in an effort to replace the current Auto tangent mode which has a tendency to create curve overshoots when keyframes are near one another. The Clamped-Auto tangent mode gradually becomes a flat tangent instead when a keyframe goes out of bounds.



    New Box Tool
    We added the Box Tool for the Curve Editor and the Dopesheet Editor. The Box Tool will allow users to move and scale keyframes selection in time and in value. With this tool, you'll be able to easily speed up or slow down a portion of your animation.

     
    John3D, m4d, LukaKotar and 4 others like this.
  2. StaffanEk

    StaffanEk

    Joined:
    Jul 13, 2012
    Posts:
    377
    Will we finally be able to zoom in the Animator window. The fact that you can't drives me up the walls.
     
    John3D, LazyDog_Rich and Pix10 like this.
  3. simonbz

    simonbz

    Unity Technologies

    Joined:
    Sep 28, 2015
    Posts:
    47
    Hi there,
    Zooming in the Animator Window is on our internal roadmap, but we cannot unfortunately say when it's going to be available. We are however working on it!
     
    StaffanEk and orb like this.
  4. Kolyasisan

    Kolyasisan

    Joined:
    Feb 2, 2015
    Posts:
    257
    Hopefully we will be able to get rid of distorted and weird movements of animated objects with the new ClampedAuto feature. Great job! Can't wait to try it.
     
  5. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,355
    @simonbz How about playing/scrubing animation without activating record button/mode?
     
  6. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    2,012
    Box Tool, temporary visual?
    Also consider option+click box corner to warp the keys, VERY useful for turning a lossless bounce into a real bounce.
     
  7. simonbz

    simonbz

    Unity Technologies

    Joined:
    Sep 28, 2015
    Posts:
    47
    It's unfortunately not available in this release, but this is also on our list! There are many repercussions in making recording and playback separate in the software, but we are looking into that!
     
  8. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,355
    Alright glad to hear that is on your list, that is one of the small annoying thing in unity animation window :D
     
  9. Gizmoi

    Gizmoi

    Joined:
    Jan 9, 2013
    Posts:
    327
    In the mean time I'd suggest something that's a lot more visually obvious that you are currently recording. I've had lots of artists have the animation window open, scrub an animation, hide the window (either in another tab or behind the main window) and then completely trash the animation by continuing unrelated work in the scene.
     
  10. Pix10

    Pix10

    Joined:
    Jul 21, 2012
    Posts:
    842
    Could we have better representation and direct editing of keyframe values, outside of right-clicking on curves?

    Animation is a very precise process, not suited to over-simplified interfaces. Consider the attached image, where both the frame number and value of the keyframe can be edited along the bottom (not suggesting slope and accel, though if you have an itch :))

    hou_editor.PNG
     
  11. simonbz

    simonbz

    Unity Technologies

    Joined:
    Sep 28, 2015
    Posts:
    47
    Thanks! This is good feedback, we're taking note of it :)
     
    StaffanEk and Pix10 like this.
  12. runevision

    runevision

    Unity Technologies

    Joined:
    Nov 28, 2007
    Posts:
    1,577
    Only saw this late, but wanted to chime in.

    The problem is not just technical but conceptual. If you scrub the timeline without being in any "mode" at all, then when you look at some value in the Inspector, what does it mean? Is it the object's own value, or one corresponding to the current time in the animation? The reason the animation mode exists and that you can only play/preview when it's on is to not have this ambiguity. If you're in animation mode, animated fields are tinted red and their values come from animation. If you're not in animation mode, then it's always the object's own values.

    If you could scrub without being in any mode, how would you know what the values represent?
     
  13. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,355
    Got to admit that is make sense, the only problem with record mode is accidentally record a keyframe.
    Well then this is make this problem become more complex :/
     
  14. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    2,012
    Maybe adding a red border to all the windows would make it more obvious?
     
  15. Pix10

    Pix10

    Joined:
    Jul 21, 2012
    Posts:
    842
    This would be helpful. After Effects used to do the same in one of it's modes: Caps Lock enabled to disable preview rendering would draw a red pixel border around the output window. It was a sad day when they removed it.

    But there are two primary things that lead to 'accidental animation':

    - Selecting a gameobject with an Animator attached will enable Record mode if an Animation window is visible (I've just sanity checked this and actually it seems to no longer be the case)
    - Moving the timeline bar (to preview a frame of animation) will enable Record mode if an Animation window is visible.

    The simple fix to these is to not enable Record automatically.
     
    laurentlavigne likes this.
  16. runevision

    runevision

    Unity Technologies

    Joined:
    Nov 28, 2007
    Posts:
    1,577
    What would you want to happen when moving the timeline bar? No preview unless you explicitly go in animation mode?
     
  17. Pix10

    Pix10

    Joined:
    Jul 21, 2012
    Posts:
    842
    Kind of an extension to the above: it would be extremely useful if we could preview animation
    A preview would be ideal - for example just now I'm animating lots of things moving around, and I want to grab snapshots of their positions (literally Copy Component on Transform) so I can paste them into non-animating mode for layout purposes.

    I understand we can't click away from the object and retain the preview - in the future maybe - but just being able to scrub animations as a matter of course without having to worry about accidentally clicking on something (i.e. scrubbing then disabling a child so you can see what's behind it, will add that toggle to the animation) is helpful.

    The vast majority of animation mishaps are grossly exacerbated by the fact that animation is a 'live' thing. There's no saving or snapshots...if you're not checking in to a repo every step, you're on a one-way path. Not sure that's an easy thing to deal with, but it highlights the logic behind more manual steps before committing a change (where a lost change is probably not as destructive as keyframes a carefully constructed animation being lost).
     
  18. runevision

    runevision

    Unity Technologies

    Joined:
    Nov 28, 2007
    Posts:
    1,577
    Ok, and what does this mean? :) If you have an animation that animates the position, and you scrub the time bar to see this preview, then what happens if you move the object in the Scene view or type into the position field in the Inspector while in this preview mode?
     
  19. Pix10

    Pix10

    Joined:
    Jul 21, 2012
    Posts:
    842
    Two possibles come to mind:

    1. Lock it so it can't be moved (or rubber-band it like UI editing behavior on parent RectTransform bounds)?
    or, better:
    2. Allow it to be moved, but restore it's position when scrubbing to a different frame.

    (Actually, with #2, you could then maybe have a manual Add Keyframe operation, as with traditional animation packages)

    I guess this kind of comes down to auto-recording keyframes vs manual keyframing, where we (animators) have lived naturally a long time with the two as an option.
     
    CavernHead likes this.
  20. runevision

    runevision

    Unity Technologies

    Joined:
    Nov 28, 2007
    Posts:
    1,577
    Just to be clear here, we're still talking about scrubbing entering some mode; just not record mode? So you can be in regular mode, preview mode, or record mode?
    And you're saying here that in preview mode, any animated field (or maybe any field in general) on an animated object won't be editable?
    If allowing it to be moved, what does the new value represent after it's moved? Is it stored in the object yourself? Or just some temporary value that's not stored anywhere at all?
     
  21. Pix10

    Pix10

    Joined:
    Jul 21, 2012
    Posts:
    842
    Yes #1 was suggesting make them non-editable while scrubbing. On reflection though, that's probably not going to be very elegant or easy to implement safely. There'd be a lot of 'what-if's, not just with regular user manipulation but user events (like automated Editor tools) trying to do things.

    The new value would be a temporary; throw-away, unless the user makes a specific keyframe of it, in which case it's added to the animation.

    Most animation packages have two Record icons. One is a toggle for auto-record (A), and the other is a button for setting a keyframe manually (K).

    Unity's a little different because almost any type of exposed data can be keyframed (including some hidden data types, such as RectTransform size deltas), so simply hitting K probably isn't going to help much, unless you can represent what K will do, displaying the temporary changes as color-coded labels in the Animation tree.

    Houdini has a nice system for setting arbitrary data keyframes: it highlights any properties that have changed with a color in the interface (that would be Inspector, in our case), and alt-clicking on the control that is highlighted (text, toggles, whatever), sets a keyframe of that property. It can be much more efficient than trying to find a single control in an unfolding nest of transforms and controls. This might be getting ahead of things though :)
     
    CavernHead likes this.
  22. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,355
    Having two record mode seems ideal for most artist, Auto Key and manual key
     
  23. m3rt32

    m3rt32

    Joined:
    Mar 5, 2013
    Posts:
    51
    Please add zoom also the animator window.Without zooming,looking to states gets really hard.This is a must be feature.Please consider adding this to your schedule.
     
  24. runevision

    runevision

    Unity Technologies

    Joined:
    Nov 28, 2007
    Posts:
    1,577
    All right, thanks for descriptions of how non-recording scrubbing/preview might work, people. I can't say if this is viable (I worked on Animation Window many years ago but I'm not part of the team developing it today), but it's helpful to at least understand what the request entails exactly, for a start.
     
    Pix10 likes this.
  25. pixxelbob

    pixxelbob

    Joined:
    Aug 26, 2014
    Posts:
    111
    Instead of introducing a new animation mode. Maybe newly added/changed dirty animation properties could be tinted another colour in the animation window.

    Given I sounds like an overhaul is needed for utopia At least with a tint you'd know what's changed since the last save.
     
  26. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    2,012
    Yes that's an odd one and easy to miss :) Tons of automatics in unity make sense but this one is hard on the animator because there are two camps: autokey lovers and explicit controls (shift+e or k in maya) so adding more explicit control and better visual feedback would fix most grievances: add an auto key button and old-AE window feedback (for real they removed it? adobe is ... interesting).

    One of the big problem of Unity auto key is that it doesn't differentiate user delta from code-borne delta. So if you have one initial orientation key on a camera and a smooth aim constraint, and animate only the position of that camera, the orientation constraint get baked in the orientation channel. That's super easy to fix by enslaving delta trigger by the proper user event.
     
  27. Prodigga

    Prodigga

    Joined:
    Apr 13, 2011
    Posts:
    722
    I just wanted to post and say this looks amazing, A+ work unity team! Excited to use these tools :)
     
    John3D likes this.
  28. Vagabond_

    Vagabond_

    Joined:
    Aug 26, 2014
    Posts:
    822
    It is great that you are improving the Animation Windows guys... :)

    Here are some things you might consider implementing in order to make animating in Unity feel like in max, maya or blender... It is just be much more professional!

    1. Breaking tangents with a short cut (let's say holding "Alt" and move a handle) will make the workflow so much nicer!!!
    2. Instead of just moving a broken handle can you make it scale like Max, Maya, Blender or even every vector or spline based editor. This way the shaping of a curve is much more intuitive and easy instead of adding more and more keys to do it. This is something that i'm really missing.
    3. When you are previewing an animation in the window and you want to exit from "Animation" mode, you have to stop the animation and then exit "Animation" mode... Can you make it exit "Animation" mode while it's still playing?
    4. There is no any easy way to copy(clone) a key... which is very important when animating... Also holding alt and move a group of selected keys to copy them will be just GREAT !

    Are these things possible for you guys to implement in Unity ? Thank You!

    Oh and a bug i noticed i think in 5.4:
    - when you right click on a key, the vertical line (the cursor) is not anymore snapped to the current key position, which if you have long animation with many keys is now harder to snap it to desired key!!!
     
    Last edited: Sep 19, 2016
  29. simonbz

    simonbz

    Unity Technologies

    Joined:
    Sep 28, 2015
    Posts:
    47
    Quite true! We must have overlooked this ;) I'll add it to our backlog!

    We can't do that with the current AnimationCurve... Doing so would require substantial changes to a very fundamental data structure in Unity.

    Isn't this the same as making recording and playback separate? As stated before, we're discussing how to approach this internally. Also, we've been reading everything other users posted on this thread, this is great feedback and a good way to start the discussion on something that would greatly change Unity's workflow!

    This is in our backlog. We will most definitely add it to the animation window in an upcoming release :)

    We disabled time syncing in the animation window as it created more issues than solutions in the animation workflow... That said, it's true that we can't sync time to a keyframe anymore. We could probably add a hotkey that would do that... Can you log something on the matter?
     
  30. skullthug

    skullthug

    Joined:
    Oct 16, 2011
    Posts:
    143
    I'm very happy that you're updating the Animation window, and the move tool looks pretty useful.

    I don't know if it's still a total pain, but I would like to +1 request the ability to rename objects in the Inspector/Project without it breaking animations, since animations are not ID based. This always drives me so nuts.
    Here's a thread for reference about this:
    http://forum.unity3d.com/threads/is-it-possible-to-rename-objects-that-are-animated.280622/
     
    StaffanEk likes this.
  31. Vagabond_

    Vagabond_

    Joined:
    Aug 26, 2014
    Posts:
    822
    1. Well, will be glad to see that :)

    2. Honestly i thought something like this can prevent you from doing it... :) We will have to stick with that then :) - but whenever is possible will be goo addition.

    3. Not really. In general, to me Animation preview should be available no matter you are in Rec mode or not... But i am fine with having Playback mode available only when Animation(Rec) mode is enabled... I personally want just to be able to exit Animation(Rec) mode no matter if i am previewing my animation in that moment or not. Whenever i am happy with an animation i've done, i always click (for some reason) on Animation (Rec) button and i expect to just stop playing the animation and disable Animation mode...

    4. Awesome.

    Can you make some big toggle ( i always like to be able to quickly enable disable some things ) which says when enabled - if you pres left or right key on the keyboard... the cursor is snapping to the next or previous key respectively... Something that might snap the cursor to a key will be good... Or if you can have it like hardcoded shortcuts... Being able to do things fast is really important for developer.. no matter animator or designer etc.
     
  32. Vagabond_

    Vagabond_

    Joined:
    Aug 26, 2014
    Posts:
    822
    +1 as well.
    Some way to ad another transform as a reference and preprocess the animation clip data ???
     
  33. Xaon

    Xaon

    Joined:
    Feb 28, 2013
    Posts:
    53
    It's a bit off topic but I would like to have a separate (optional?) window/panel for editing prefabs. In case of editing animations it would help with accidentally clicking on wrong object in scene or in hierarchy.
    Other options that could help:
    - hide/show only selected
    - a lock to prevent from applying changes to prefabs and recording animations.
     
  34. fizzd

    fizzd

    Joined:
    Jul 30, 2013
    Posts:
    17
    This looks amazing. Is there a way we could make editor extensions using this animation window as a base? I'm making a music game, and I would love to be able to make a way for the time to be in terms of beats and bars rather than absolute seconds. And allow for snapping to beats / barlines.

    I've spent hours searching on whether extending the Animation window is possible but haven't managed to find anything, or any reference on how to do so. Can anyone from the Unity Team help?
     
  35. playemgames

    playemgames

    Joined:
    Apr 30, 2009
    Posts:
    425
    I second at least opening up some of the API so we can fix bugs at least, the rotation bugs over the past half year have been making animating in Unity such a pain. I have filed numerous reports on them already. The time it takes to fix or re-fix them can take weeks or up to a month and that is valuable time animating on my end. Would rather just fix or create a workaround myself and give it to you at Unity, rather than waiting and have to manually re-key hundreds of rotations that are not recorded or copied and pasted properly.
     
  36. simonbz

    simonbz

    Unity Technologies

    Joined:
    Sep 28, 2015
    Posts:
    47
    We're thinking of adding options to toggle time format display in the animation window so that you will be able to switch from time code to integer frames. However, there are no short term plans to publish a public API for the animation window.

    It's a good point, there is no easy way currently to toggle the editable flags on an animation clip. We'll take note of it.
     
    Xaon likes this.
  37. besttof

    besttof

    Joined:
    Jul 17, 2012
    Posts:
    15
    Tangentially (har har) related: is it possible to add more pre- and post wrap loop modes (as described here for Maya). These are useful for animation but also for non-animation related curves (e.g. progress curves, item cost based on level curves, etc.) that need to be endless.
     
    AaronC likes this.
  38. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    2,012
    The performances are super slow on baked animation and the ripple is broken (only pushes away, doesn't pull in keys)
     
  39. simonbz

    simonbz

    Unity Technologies

    Joined:
    Sep 28, 2015
    Posts:
    47
    There are no plans to update the pre/postWrapModes in the short term. With state machines, you can get the same behaviour as 'Cycle with Offset' if you're using root motion. I do get your point however why this would be useful in a non-animated workflow.

    There are always ways to slow down the animation window with big enough animation clips, and baked animation clips tend to get really big. There are only so many controls that can be rendered at once without hitting hardware limitations. You will also get similar slowdowns in other animation software with similar data. If you want, you can log a bug for it with your scene so that we can take a look.

    As for the ripple, it is intended only to push keys outward. This is on par with other dcc softwares (e.g. MotionBuilder VK Ripple).
     
  40. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    2,012
    Are you sure? Because 18 years ago I could edit dense mocap curves at a steady 60hz in motion builder which isn't similar to the freeze up we get here. I think you were running the other animation software on an Evan&Sutherland punchcard workstation or the mechanical automata from captain Nemo, and in benchmark, that's cheating ;)
    Here is a bug#834557 in case of edge case.

    Ripple comes from non linear editing - Avid, Premiere pro, that abandoned apple thing - and it's always symmetrical. The sequencer will have to support NLE type ripple and for consistency, the animation window will need to support that as well in some form. It makes sense for keys to have a skewed ripple because you don't want to crush keys but it'll make everybody's life easier if you add symmetrical now, SHIFT+r for example.
     
  41. AnomalusUndrdog

    AnomalusUndrdog

    Joined:
    Jul 3, 2009
    Posts:
    1,486
    (I didn't get any reply to this from the blog post, so I'm reposting here)

    Will it be possible to move the curve tangent's distance (farther ot nearer the control point)? This drives me nuts and one of the things why I prefer not to make animations in Unity.

    You can see how Blender animation curves are far more expressive, when the tangent's distance can be modified, and this is just with two control points:




    Compare that to how it works in Unity:



    It's easy to create a custom ease-out curve in Blender:



    Whereas to do the equivalent in Unity, you'd need several control points to compensate the lack of ability to move tangents, and even then, it's difficult to copy the look of the ease-out curve I did in Blender:


    I'm not convinced that the auto-clamped tangents mode is enough.


    I'll also add my agreement to needing a cut/copy/paste of keys, and that "no auto insertion/edit of keys when you edit values in the inspector" mode (meaning, there's a new "playback" mode apart from record mode). Whenever I test out the speed of a GUI animation I just did, I click play. When I stop play, I have to remember to untoggle the record button or else I'll screw up the animation I just did once I continue working.
     
    Last edited: Sep 23, 2016
    Reanimate_L, Matt-Ostgard and FXVille like this.
  42. Vagabond_

    Vagabond_

    Joined:
    Aug 26, 2014
    Posts:
    822
    Hi AnomalusUndrdog
    This should answer you question about scaling Bezier Handles !
     
  43. playemgames

    playemgames

    Joined:
    Apr 30, 2009
    Posts:
    425
    Would love to be able to see a preview as a play once and have a loop check box. Would be nice to be able to ping pong or see the animations play in reverse as well in the animation window. This way I don't have to press play just to see these types of animations happen and can adjust them in the animation window faster.
     
    Xaon likes this.
  44. katoun

    katoun

    Joined:
    Dec 26, 2012
    Posts:
    87
    Yes, please!!! Could be made as an option in the settings "Auto-Record" and could be set On by default to function as it is now, I have no problem with that.
     
  45. p2thewhite

    p2thewhite

    Joined:
    Sep 11, 2015
    Posts:
    12
    Question, in this new animation overhaul, does the issue still occur when creating a object with animation and it playing its animation clip(s) at different locations from where it was originally created when you move that object to a different spot?

    I looked everywhere on how to fix it. The prefab method, code, etc. Any help to this inquiry will be appreciated, thanks!
     
  46. simonbz

    simonbz

    Unity Technologies

    Joined:
    Sep 28, 2015
    Posts:
    47
    Hi there! Playing an animation clip on a game object always override the local values of the game object. That will not change.

    If you want to offset your animation, I would suggest you parent your animated hierarchy to another game object that you will move instead.
     
    John3D likes this.
  47. p2thewhite

    p2thewhite

    Joined:
    Sep 11, 2015
    Posts:
    12
    Hmmm interesting, ok I will try that ASAP and let you know what I come up with, thanks again you guys are amazing!
     
  48. katoun

    katoun

    Joined:
    Dec 26, 2012
    Posts:
    87
    That is logical. Think how a game engine works (behind it's API).
    The animation system is like a component that changes the values of that object on the Update. If you put an other component that changes those exact values on Update, you will have some conflicts. But in this case, inside the engine, the animation system has priority over the changes of the script components. It's by design.
    Unity's engine design is quiet awesome: simple, clean, easy to understand/learn. Though there are improvements that can make the workflow even better, overall you can do a lot of things pretty easy once you have learned how to work with it.:D
    I try to remember and most of the times forget about the auto record and that is the most and almost the only thing that annoys me about the animation window (I use the animation window, at work, almost every day).
     
    Last edited: Oct 5, 2016
  49. p2thewhite

    p2thewhite

    Joined:
    Sep 11, 2015
    Posts:
    12
    Greeting fellas! Simonbz I tried your method of offsetting my animation by parenting my object with the animation attached to it to another empty game object, moved that to hopefully have my animation game object inherit its location values and tried to play the animation and it still made the same mistake. Is their something I'm doing wrong? Thanks in advance
     
  50. p2thewhite

    p2thewhite

    Joined:
    Sep 11, 2015
    Posts:
    12
    Sorry nevermind me LOL. i figured it out. I did your method but also copied the curve animation sequence from the animated object, created a new animated clip on it's empty parented game object, and pasted the curve animation data to it's blank curve canvas and BOOM!! Thanks again though Simonbz!
     
    simonbz likes this.