Skip to content

Timeline Editor

Arno Hartholt edited this page Nov 21, 2025 · 1 revision

Purpose

Utilizing Unity’s Timeline to derive sequences of scripted events. Timeline enables control over various objects in the scene, including UI elements and virtual human behaviors.

Organization

RIDE Core package: Runtime/Timeline

Approach

References:

Notes:

  • Customized Timeline has been implemented for RIDE with following scripts:
  • RideTimelineTrack.cs: Defines track behavior and configures clip on creation/modification.
  • RideTimelineTrackMixer.cs: Manages clips when the track is playing. Similar to the ‘Update()’ loop.
  • RideTimelineClip.cs: Defines callbacks and parameters for custom clips. Every clip must derive from this class.
  • RideTimelineManager.cs: Manager script that stores cached data and provides helper methods. Scripts should go through the manager to play/stop Timelines.
  • Scene setup:
    • Every Timeline director objects for a character must be placed under a single parent object. These parent objects must also have the same order as the Characters in the scene.
    • image
    • Note: Example image above shows that order of the characters matches the order of the Timeline parent objects.
    • The following hierarchy is recommended for organizing the Timelines
\<TimelineParent\>  
   \<CharacterName\>  
      \<ModuleName\>  
         \<MasterTimelines/ParagraphTimelines\>  
            \<UtteranceTimelines\>  
  • Application loop:
    • Timeline Track and Clip is built via Editor
      • RideTimelineTrack::CreateTrackMixer() is called when there is a change in the track and renames clips on the track.
    • Start application/editor.
    • Every clip calls CreatePlayable() → Creates matching Behaviors.
    • Mixer calls ProcessFrame() every tick while the Timeline is running.
    • Mixer processes the Behaviour and calls TimelineManager to execute the Behaviour.
      • Mixer may stop Timeline from progressing if clip has been marked as waitUntilFinished.
    • Timeline Manager executes the behavior and starts coroutine to determine if Behaviour has finished running.

Limitations

  • NVBG clips may overlap and require manual review.
  • Characters are auto-filled with the one set in the Main module.
  • Audio waveform only appears when the entire clip is visible in the track editor.

Known Issues

  • Length of animation clips does not reflect the length of the animation.

Clone this wiki locally