Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

What is the Roadmap for TimeLine?

Discussion in 'Timeline' started by msl_manni, Jul 19, 2017.

  1. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    What is the full Roadmap for TimeLine?

    It will help to understand the importance of TimeLine for my project and to adapt a more realistic approach to gamedev.

    Especially
    1. Jump / Hold / Rewind TimeLine from within the track. For AI logic and Boss Battles.
    2. Additive tracks.
    3. Conditional Tracks. Only execute track if condition is true.
    4. Avatar Masks.

    etc...


    And what is current state of TimeLine in Beta versions of Unity?
    Is it okay to get Beta version to try new features?
     
  2. seant_unity

    seant_unity

    Unity Technologies

    Joined:
    Aug 25, 2015
    Posts:
    1,516
    Hi,

    Let me try to answer your particular concerns.

    1. This one is tricky to answer, because there are several ways to do it. Right now you can write custom tracks that manipulate the playstate and time of the playable director. The animation team would like to also be able to embed timelines in state machines, which may be an alternate solution to the problem (I don't know when the release would be for this, but possibly 2017.3).
    2. It is currently not on near term roadmap. But it's a feature that people are requesting, so plans may change.
    3. There are no specific plans for it, but runtime muting of tracks has been requested, however it likely would not appear until at least 2018.1.
    4. Already in the 2017.2 beta (along with waveform preview).

    Yes, it's perfectly acceptable to get the new beta!
     
  3. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    What is the full Roadmap for TimeLine? You have not given reply to this question. :)

    And can we animate bones of the character in TimeLine?

    I cant find any example to use Control Track. Please provide an example of how to use it,

    Can playables be nested?

    We need more examples to learn. :)
     
  4. mbinfield

    mbinfield

    Joined:
    Jul 7, 2017
    Posts:
    1
    Hello!

    Not sure if there's a better place for suggestions, but while we're talking about Timeline's roadmap, I have a request!

    Override track / clip weight - so I can have an anim blended on top, but not restricted to 100% only - maybe I'd prefer just 25% or something...

    Also, another vote for additive tracks.

    And please put some documentation up! There's nothing in the Unity 2017 docs at present.

    Thanks!
     
  5. seant_unity

    seant_unity

    Unity Technologies

    Joined:
    Aug 25, 2015
    Posts:
    1,516
    The Unity Roadmap is here, but you are right, the Timeline section is a bit sparse at the moment and not yet updated.


    For 2017.2, major timeline additions are
    - Avatar Masks on Animation Tracks
    - Waveform Preview on Audio Clips

    For 2017.3, major additions we are trying to add
    - Improved Clip Editing
    - Markers (0 length points on a timeline that can be used to do features like Events)
    - Playmode Capture to Animation Tracks

    2018.1 roadmap is still fairly tentative, and likely to change based on feedback we are receiving. The above doesn't account for minor features, workflow fixes, performance improvements and additions from external teams (e.g. other teams at Unity are free to add their own features to Timeline, either as part of the product, or as a separate extension).

    To answer your questions

    - You can animate bones on Generic Characters, not Humanoid. (I assume you mean using the recording feature)
    - Assign a gameobject to a control track. It will manage the time of any particle systems or playable directors attached (you can use it to preview particles). Yes, it needs more docs and examples (in progress)
    - Yes, but can you be more specific?
    - Agreed. We are working on more learning features!
     
    hippocoder likes this.
  6. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    I'm planning on it for boss battles myself, and various gameplay shenanigans. If I was all that bothered about movies I'd render and play back movies! I'm much more interested in realtime things like troops embarking, boss phases and so on...

    Any info about that would be great for the future, blog or whatever :)
     
  7. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    -

    Say I have different playables of a character and want to sequence them on a master playable. I suppose Control Track should be used for that.


    Code (CSharp):
    1. if (intValueold != input.intValue) {
    2. // Then Do Stuff
    3.                         _sendMsgTo.SendMessage (input.sendMsg, input.intValue, SendMessageOptions.DontRequireReceiver);
    4.                         _sendMsgTo.GetComponent<Test> ().diag = input.diag;
    5.                     }
    6.                     intValueo = input.intValue;
    7.  
    I use this logic to trigger oneshot events.
    If you can compare the clipID and with old clipID then also it be a oneshot logic so you wont need a - Markers (0 length points. :)

    This for sure is much needed. :) An animation capture of a selection of gameobjects will be very handy.


    I suppose a node base graph editor will be great for Mixing playables, Blending weights and Conditional Logic for that. TimeLine is Linear in workflow. :)



    And do you have BlackBoard for the PlayableDirector so that we can create necessary variables, and gameobjects array that can be read in MixerBehaviour and act as needed. This will simplify many things. :)
     
  8. seant_unity

    seant_unity

    Unity Technologies

    Joined:
    Aug 25, 2015
    Posts:
    1,516
    Yes, a control track can be used for that for one timeline controlling another (which is one form of nesting). There are better workflows we will investigate to for embedding multiple timelines, but that's still a few releases away.

    For events, what you have should work fine!

    And Timeline is simply one tool for creating PlayableGraphs. Animation State Machines are another, and we have more in development, with the larger goal of having them work together. An example is a timeline being a state in a state machine (as opposed to just a clip). Or a timeline animation clip actually being a state machine.

    The playable director doesn't have an explicit blackboard. It implements an exposed reference table for game object references from clips (which I guess can be thought of a as a variation of a blackboard), but you can provide your own blackboard reference on custom mixers/clips.
     
  9. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    Thanks for info.

    The problem arises as I have to attach the blackboard reference to each Clip then.

    How can I get the GameObject that is attached to this PlayableDirector so that I can access the blackboard attached on the gameobject itself - from the ProcessFrame of Mixer.

    And also how can I get Clip ID in the - ProcessFrame of Mixer so that I can check if a new clip is being processed. I suppose each clip has unique id.
     
  10. AlienMe

    AlienMe

    Joined:
    Sep 16, 2014
    Posts:
    93
    This is the workaround we found:
    Code (CSharp):
    1. var director = playable.GetGraph().GetResolver() as PlayableDirector;
    This relies on Timeline's PlayableDirector being used as their Resolver. If Unity changes this, this code will break.
     
    msl_manni likes this.
  11. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272

    Thanks for the code. Possibly the code wont change. :)
     
  12. seant_unity

    seant_unity

    Unity Technologies

    Joined:
    Aug 25, 2015
    Posts:
    1,516
    The resolver (as posted) is a workaround that works. You can also add a binding to your track (if there isn't one), which passed in the ProcessFrame.

    Each clip doesn't have a unique id. You would need to add it to your clip playable behaviour.
     
  13. AndrewKaninchen

    AndrewKaninchen

    Joined:
    Oct 30, 2016
    Posts:
    149
    Another workaround for that relies on passing the Director to the TrackMixer when it is created. It also works for passing the Track the Mixer belongs to, which I use to set the trackbindings from the track itself.

    Code (CSharp):
    1. public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount)
    2.     {
    3.         var mixer = ScriptPlayable<T>.Create(graph, inputCount);
    4.         mixer.GetBehaviour().track = this;
    5.         mixer.GetBehaviour().director = go.GetComponent<PlayableDirector>();
    6.         return mixer;
    7.     }
    Really liking the sound of that.
     
  14. msl_manni

    msl_manni

    Joined:
    Jul 5, 2011
    Posts:
    272
    Please provide example code for both cases.:rolleyes: Thanks.





    Thanks for the code. Will check your package too. :)
     
  15. seant_unity

    seant_unity

    Unity Technologies

    Joined:
    Aug 25, 2015
    Posts:
    1,516
    For the track binding, there are plenty of examples here: https://assetstore.unity.com/packages/essentials/default-playables-95266

    For a unique clip ID, something like this should work fine (assuming it doesn't need to be persistent across runs)
    Code (CSharp):
    1.     public class MyClipBehaviour : PlayableBehaviour
    2.     {
    3.         private static int s_Ids = 0;
    4.         public readonly int uniqueID = s_Ids++;
    5. ...
    6.  
     
  16. halley

    halley

    Joined:
    Aug 26, 2013
    Posts:
    2,367
    I only recently discovered the Timeline, as even in 2018.2 it's not that obvious how to find it. I guess I never distinguished "Sequencing/" from "Animation/" in my head.

    At first I thought it was going to be really great, especially for cut-scene implementation. One timeline could disable my player's controls, start shoving around a bunch of props and cameras, trigger some NPCs to expose some dialogue, throw up some UI effects, and so on. When it was done, I could re-enable the player's controls and off they go.

    But my first few attempts to do anything with the Clip Editing were pretty frustrating. You can't seem to copy keyframes, force add keyframe at the current value, or drag keyframes around in time. Sometimes opening the curve bands helps. Sometimes the curve bands just disappear in sections, but if I click around they show up again. This made it hard to synchronize two objects' relative actions. If I go back and forth between Recording and not recording, I get disjoint "Recorded" clips instead of a single clip which contains all that track's new keyframes. I can't seem to combine two clips into one (so I can loop both).

    As you mentioned, you don't yet support Events and others are also pointing this out in other threads. Being able to put something in a Timeline which says "pause here until <X> criteria is met" (maybe user input, maybe succeeding in a task) would also be really powerful for interactive cut-scenes, tutorials and dialogue.

    But until the editing is rounded out as above, I can't really expect to use Timeline much more.
     
  17. Whatever560

    Whatever560

    Joined:
    Jan 5, 2016
    Posts:
    505
    Any news on adding mecanim state machine support and events ?
     
  18. seant_unity

    seant_unity

    Unity Technologies

    Joined:
    Aug 25, 2015
    Posts:
    1,516
    Events look likely to land in 2019.1. We added playable support for 'notifications' in 2018.3. That's the system Timeline events are built on but the UI and UX in editor needed a bit more iteration and we didn't feel it was ready at the time - the feature cutoff for 2018.3 has already passed.
     
    elhispano likes this.
  19. FlorentFal

    FlorentFal

    Joined:
    Nov 20, 2015
    Posts:
    55
    Hello @seant_unity

    Any insights on timeline roadmap !? Please, be more transparent on roadmap, it's very important to your customers ! ;)
    Any infos on following features ?
    "Playing backward" a timeline
    Change speed of a timeline (of all its animations, nested timeline)
    Change duration of a timeline (cascading duration change to all its tracks)

    Where can I suggest some improvements ?

    Thanks
     
    Last edited: Nov 27, 2019
  20. seant_unity

    seant_unity

    Unity Technologies

    Joined:
    Aug 25, 2015
    Posts:
    1,516
    Hi @FlorentFal

    As for a roadmap, there are not a lot of additions currently being made to Timeline, and most changes are bug fixes because the team is also focused on making Timeline work with DOTS. While I would expect DOTS-related timeline features sometime in 2020, there is no explicit timetable set yet.

    Any changes will be minor, like adding API calls to expose existing functionality, or minor UI/UX improvements.

    More specifically:
    Not planned. Not all clip types can be played backwards.

    Not planned, but already possible by adding a Monobehaviour script to the playable director that calls playableDirector.playableGraph.GetRootPlayable(0).SetSpeed(newSpeed);

    Unless I misunderstand, Timeline already supports this - set the timeline asset to fixed duration using the context menu on the timeline end marker. Or it can also be set on the timeline asset by selecting it in the project window and changing it in the inspector.
     
  21. vamky

    vamky

    Joined:
    Aug 9, 2014
    Posts:
    70
  22. seant_unity

    seant_unity

    Unity Technologies

    Joined:
    Aug 25, 2015
    Posts:
    1,516
    Unfortunately not. The only workaround is to use a custom track that writes only the translation or rotation.