Animation Status Update (Q2 2023)

Hello again,

Time for another update on 3D animation at Unity

Progress and ongoing requests
As mentioned in my last post , the team is still progressing well on the new system, while we also continue to address high priority issues with the current Mecanim system.

A few of you have [asked]( Animation Status Update (Q4 2022) page-2#post-9034687) why some Mecanim bugs and requests are being marked “won’t fix”. This is really in order for us to focus on the new system. It is a hard decision which we don’t take lightly, understanding that we can’t realistically address every issue that is logged; however we absolutely do try and fix critical issues with the current animation system whenever we can, such as crashes, regressions and blockers.
A side effect is that Unity’s animation devs might not seem to be as engaged as before, but we still are aware of issues raised on the forums, and do discuss them internally.

So is the current animation system still being actively developed?
Sorry to say that it is rather unlikely that there will be new features appearing in the current system. However we do intend to continue to fix issues in Mecanim and the Animation Rigging package as best we can for a long time to come, as we know it will be used by many for an equally long time. Not ideal, but I want to be as transparent as I can on this.

Any more news on when the new system will be ready?
In my Q4 post I said not to expect the new system for at least another year, and that has not changed. For more clarity I will say that it will not be this year. Again, not the best news but it is the truth, which is something I want to maintain. This is why it is not mentioned in this year’s Unity Roadmap for 2023 presentation.

In other news…

Unity 2022 LTS is out
Check out what’s new as well as the power of ECS, (the backbone of the new animation system) as well as my post about the AI Navigation package, and its documentation

Unite 2023
While still a little way off, this year’s Unite is taking place in the most wonderful city of Amsterdam, click here for more details

Unity and Apple
Some of you might have seen the recent Apple WWDC and the launch of Vision Pro. It really is very cool to see Unity collaborate with Apple on spatial computing for creators. If you want more info on that check out the link to the beta program

As always, thanks for all the feedback (in all forms) including via the roadmap page - it is much appreciated.

Chinny

14 Likes

Hi @UnityChinny , thank you for sharing!
I’m glad to see the news about the new animation system. Based on my experience using the current animation system, I have some suggestions. I hope that when implementing the new animation system, you can consider implementing these features:

  • Graph based animation system

  • Lazy load animation assets

  • Runtime topology modification

  • [Important] Animation sync marker(for pose matching)

  • 9062347--1253200--upload_2023-6-7_9-53-38.png

  • [Important] Animation flags(indicates whether certain operations can be performed, like jump, attack, etc.)

  • 9062347--1253203--upload_2023-6-7_9-54-26.png

  • **[Important]**Per-bone animation processing

  • **[Important]**Runtime animation curve modification

6 Likes

I have recently been using Playable to implement a graph-based animation system.

Playable has bugs and lacks many features, which has led me to make a lot of workarounds. Although it is unlikely that new features will be added to the current animation system, I still want to suggest improvements for Playable. And I believe that these features are essential for the new animation system that Unity is developing(hope the new animation system is not just a conversion of existing AnimationClips into another data format, but is a truly feature-rich and brand new system).

This is the Feature Request thread I posted earlier: Feature Request - Animation Playable Feature Requests - Unity Forum

6 Likes

Thanks for new update. I’m not expect full complete animation system. Can I get experimental version to try this year to try out first?

So mechanim and animation rigging are being replaced entirely in a unified package (or native to unity)?

Alright that’s cool.

Thanks for the suggestions, they are appreciated. Keep 'em coming

We are not ready to release an experimental package just yet. However I will absolutely shout it from the rooftops when we are :wink:

4 Likes

I’ll drop by and just say that what’s important for me is better netcode integration. Maybe something like Inertialization to minimize the amount of states needed to be synced? Anyways, I’m sure Unity is already looking at multiple approaches to this. If it’s fully deterministic then I guess we don’t need to go through all that trouble.

Another thing is a better animation event system. There are a lot of issues with the current animation event system but the biggest one for me is that there is no guarantee that an event gets called (cases where time is moved fast or during transitions). The authoring experience for it is terrible too, I have to duplicate the animation clip from the source asset and now it ends up being completely decoupled whenever I make changes to the source. Not to mention the event system’s use of strings for calling methods…

6 Likes

Alright. Btw any plan to implement auto upgrader from current mecanim animation system to this new animation system that reducing manual upgrade as much as possible? I think at least should able to upgrade animator asset to new animation system asset automatically whenever possible.

1 Like

I hope the new animation system can learn from Animancer.
Especially the simple and direct way of playing animations and not tied to a specific state machine implementation.
https://kybernetik.com.au/animancer/docs/introduction/features#pro-only

6 Likes

A few key (excuse pun) things that must be right, just off the top of my head, that there’s been no adequate excuse for getting wrong since Flash timelines became a thing in the 90’s, but have been long overlooked.

  1. It must be exactly possible to be informed of exactly when an animation finishes. This shouldn’t be upon the user.
    1.a) things triggered on Animation timelines must be exactly reliable, and garbage free, and not C# Events.
  2. An absolutely ideally optimised reader of animation curves must exist, and provide low level access, bereft of all other overheads.
  3. Stretching the duration of animation curves should maintain the intent of the curve, not the way it currently works in Unity. Learn from splines or any other world where folks stretch time and don’t get unexpected and/or undesirable results, how keys should behave.
  4. Please don’t continue making the mistakes inherent to the way keys have handles screwing with things at the moment, including not being able to pick and edit more than one handle.
  5. Draw animation curves in a way that makes them visible. Some of the colour choices in the various timelines defy description, and provide modal selectivity so there’s no chance of accidentally moving keys and handles when attempting to select them, and vice-versa.
    5.a) make it possible to select and drag the sections between keys for the curving of these segments, that thereby adjusts the handles on the corresponding keys.
  6. Make the Play mechanisms for Animation timelines sensible and modern conventional. Learn from the last 30 years of how timelines have been implemented and designed in other packages that provide animation. That includes simple things like “play once” “loop section”, adding markers, keyboard shortcuts for keyframe type changes in conjunction with mouse actions, timeline scrolling that makes sense, automatically zooming to fit on input to view a specific curve, saving and recalling viewing sets, selection sets and key sets.
  7. Show and Hide and Grouping of Animation properties in the timeline, so as to streamline seeing that which we want to focus on. And have theses states as saveable and recallable, along with colour choices for each property so that we can visually bookmark that which we’re focusing on, too.
  8. Editable click sizes for the keys and handles, because whatever you choose is only going to be suitable for some screen resolutions and not others, let alone the ways others are accustomed to their chosen animation software.
    8.a) recognise that the vast majority of your animation users are spending far more time in other animation environments, all of which are vastly better than Unity’s attempts, so make an effort to learn from all timelines in all 3D software, audio software and all compositing software. Pick the best traits and behaviours from these and blatantly copy them. If you can’t determine what these are, please hire someone that can to advise. You don’t need a committee to do this, just pick one informed auteur.
1 Like

Hello! Thank you and the Unity employees’ hard work on the new Animation system, it is a great work.
I know the new Animation is still in developing, but I would like to ask some question, just to get some information that whether should I keep learning and stick to mecanim and GameObject, or should I prepare for the new Animation system and ECS. Appreciate your answer!

  • Is the new Animation system a Component that could be attached to GameObject, or is it forcing us to use ECS?
  • Does the new Animation system also use Playable? Is it compatible with the Timeline package?
  • Is the new Animation system more customizable than the mecanim one (in your opinion)? Because mecanim hides the state machine, the Motion class, and every other things, making it so hard to customize script

@Flipbookee Do you think you could pass some of your wisdoms regarding animations in game engines onto these fine folks?

1 Like

hi,

sorry for the intrusion here

but regarding your question whether it will be compatible with gameobjects

i think read somewhere on the forum that they are planning it to be their default animation system for the next 10 years or something, i could be hallucinating too, so don’t take my word for it:smile:.

2 Likes

Unity keep showing off these super high end products they’ve bought - ziva and weta for example. I think a lot of us just need to be able to string together some basic animation clips in a simple and efficient way.
Also if the animation package is going to be unveiled next year that means many of us will have to wait till the year after (for the LTS).
I really hope someone keeping playables alive. It is the most recent animation system after all.

6 Likes

There are some great ideas in this video. I hope Unity is able to integrate some of them. Specifically the tooling part of it.

Some interesting ideas that stood out:

  • Hierarchical State Machine with unlimited Hierarchies.
  • Dual Panel for remembering the context when you drill down into a State Machine
  • You can also drill down into a transition for example.
  • Instead of having arrows going to every other node for a state machine where every state can go to every other state. There is a symbol that says this state is using a Global State Transition. Then you can have additional arrows for overriding the default Global State Transition.
  • Animation Data Sets (Allows you reuse graphs by inheriting from a data set (If animation is not set then that node isn’t used. You can also add onto existing data set)
  • A lot more interesting ideas about how to deal with some complex problems like resolving multiple IKs, dealing with ragdolls etc.

video:

github: GitHub - BobbyAnguelov/Esoterica: Esoterica Engine

2 Likes

In a perfect world, the animation system would:

  • stop using strings for anything. Just take inspiration from the InputSystem and generate ScriptableObjects or generate code - anything but strings. This goes for States, Variables (Parameters) and whatever needs to be accessed
  • allow to get a START and END event that is guranteed to be exectued. Everyone struggles with this. Everyone. Please fix.
  • allow to get Custom Events that are guranteed to be executed (also not using strings, please)
  • have a way to add animations from code. Just like AudioSource → PlayOneShot()
  • get all the informations with a nice syntax that doesn’t look like “animator.GetCurrentAnimatorStateInfo(layer:0)…”
  • provide ScriptableObjects (or something alike) where it is possible to adjust Start and End Time of an AnimationClip, add Events to it, change the speed and so on. All the options that are currently in the FBX Importer Inspector → move them over to a ScriptableObject. I have no idea what maniac thought to add those things into the FBX Importer - but for the love of god, stop following his insane architecture.

TL;DR: Nice way to get and set things in the Animator from Code (no strings, nice syntax). Relyable, stable System (Events that are guranteed to be executed). Usability (in code and in the editor, no more FXB Importer Panels, no more strings).

3 Likes

I just want (for the last 10 years…) 3 things: a “simple” mode for the animator that doesn’t perform like ass when I’m animating just a camera and not a full character. It could even be a checkbox I have to tick or something.

Improvements to the animation window, say you want to have a custom curve transition from one color to another, how are you going to have the transition be exact when you can’t edit multiple weights at the same time?

Other software can do it:

Finally, I want the ability to have non linear crossfades, easily. Maybe a sine based one, or just hermite, would improve transitions so much and it should be so easy to implement. I would have been a happy camper if we got these 3 things during the last 10 years…

There are many many other things, but it boggles the mind why someone wasn’t hired to implement these silly little things to the current animation systems and instead we are forced to wait for the new systems, which let’s be blunt, is not going to solve all the issues people have with the current systems and more than likely will introduce a bunch of new ones.

3 Likes

Whilst we wait, could you put systems and reading of Animation Legacy and Animator on another thread, on another core, for all CPUs that have more than 1 core?

1 Like

One narrow thing I’m hoping out of the new system:

  • A Mathf.SmoothStep for transitions between clips (as an alternative to the linear default). Have tested those with a not viable workaround and they do make animations overall visibly smoother!