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

Storyboards Epic #18

Open
xen2 opened this issue Aug 3, 2018 · 4 comments
Open

Storyboards Epic #18

xen2 opened this issue Aug 3, 2018 · 4 comments
Labels
area-GameStudio enhancement New feature or request Epic Epic are defined on ZenHub side, but label also exists for easier visibility with GitHub

Comments

@xen2
Copy link
Member

xen2 commented Aug 3, 2018

Have an animation editor to easily create cut-scene or animate properties.

TODO: Had some specs in the past, need to find them for future reference.

@DW01
Copy link
Contributor

DW01 commented Aug 4, 2018

What sort of system would we want to aim for with this? UE4 Sequencer is still in early access but I've heard a lot of good about it on their forums, and it essentially functions like a normal NLE (or, to use a better analogy, kind of like an improved, in-engine Source Filmmaker). Do we want track-based editing (of properties, animation components, etc..) or something else?

Needless to say, we could also easily leverage ffmpeg (or even just the newly-implemented Video component) to allow exporting of Storyboards out to image sequences, uncompressed video, etc..

@xen2 xen2 added the Epic Epic are defined on ZenHub side, but label also exists for easier visibility with GitHub label Aug 4, 2018
@xen2
Copy link
Member Author

xen2 commented Aug 7, 2018

Ok, I am going to post here some confluence doc we made at the time.
Not saying this is exactly what we'll do, but it should give a good overview of what we had planned some time ago:

Motivation

  • Authoring and composition of time-based sequences (cutscenes, replayable bahaviors, etc.) that drive arbitrary properties of objects
  • Manipulation of involved animations (changing speed, cutting, possibly crossfading)
  • Editing of time-based properties as 3D curves the editor (mostly transformations, possibly more)
  • Live preview of storyboardsDesign notes

Use-cases

  • Cutscene where one story track will govern many aspects of the game like animations, curves, properties, etc.
    • Example: Cutscene where multiple characters interact with the environment and each other, possibly spawning visual and other effects
  • Looping or non-looping track where some properties are animated or events are spawned
    • Example: A slowly spinning waterwheel produces splash sounds and effects
  • Event list sampled based on animation tracks, so events can be spawned corresponding to the animation state
    • Example: When an animated character runs, climbs or punches, sounds and visual effects are spawned
  • Animating one UIElement with different properties
    • Example: Ease-in ease-out type of animation is played on a button every time the button is pressed

Design notes

Model

  • Storyboard
    • A Storyboard is authored as a StoryboardAsset and describes some time-based progression
    • The asset does not depend on a scene. It describes some time-based progression. Objects involved are not referenced by the storyboard, but bound when instantiating it
  • Tracks
    • Each storyboard consists of a collection of tracks, each describing a single property or logical sequence
    • The target of a track is identified by a property path. The target may contain
      • "slots" for a top-level objects of a certain type, which can later be bound to actual object instances
      • a nested members, component (for objects), etc.
      • custom identifiers (not describing a property of an object), that can be used by other tracks for composition, or in script to query custom values
    • A track can contain anything that implements some understood interfaces. This should support
      • Curves that can be randomly evaluated
      • Skeletal animations (later possibly whole blend trees)
      • Sounds (playing, stopping, seeking?)
      • Events (fire-and-forget and start-stop)
      • Particles (visual script-based?)
      • other Storyboards
    • Tracks might have push or pull semantics depending on the target
  • Binding of objects can be done by code, in visual scripts or creating a StoryboardComponent (and setting a Storyboard and setting up bindings) at design time

Run-time

  • StoryboardComponent
    • References a storyboard and manages object binding and playback state
  • AnimationComponent
    • might change in the future (possibly being responsible for animation blend trees?)

Design-time

  • Timeline editor
    • Tracks contain blocks/markers of compatible type
    • Tracks might be displayed as tree view, when target path have parent-child relationship
    • Curves might be special in the way they they are previewed (directly in the track). They can be edited in the curve editor.
    • Animatable properties are automatically discovered and suggested (similarily to visual scripting, etc.)
  • Storyboard preview
    • The storyboard can be previewed and played in custom 3D editor. A preview scene can be seleted and bound to the storyboard. It can then be edited using the bound objects from that scene.
    • Transformation curves are represented by 3D splines and control point gizmos. All common control-point types are supported (both here and in the 2D-curve editor).
    • The preview has video-like playback controls (play/seek/reset)

Further investigation

  • Non-linear behaviors in the timeline
  • Interaction with graph-based behaviors, e.g. blend trees (composition in both ways Storyboard <--> graph)
  • UI storyboarding

Time estimate

  • Timeline editor
    • 1w Track Control: Creating the controls to display and interact with a track (placing/moving keys, presenting key content. etc.)
    • 1w Track add/remove editor: Container of the tracks, support add/remove, possibly reorder, etc.
    • 1w Curve editor improvements: Improving performances and UX of the curve editor
    • 2w Track interfaces: track interfaces and their view model counterpart
    • 2w Property grid: drag & drop, display property of a track group, etc.
    • 1w Timeline: Control the vertical time cursor, seek, play, etc.
  • Preview
    • 3w In-scene editing: Implementing an EditorGame for the scene
    • 2w 3D tracks: Display splines in 3d, allow to modify them
    • 1w Play/seek/reset: model-side playback logic
    • 1w Camera behavior: Custom tools to edit a camera track
  • Runtime/model
    • 1w StoryboardAsset (and models for curves/events/scripts)
    • 3w UpdateEngine integration (pushing/pulling updates)
    • 1w Property discovery

@everyoneishappy
Copy link

Just wanted to check if the status of timeline tooling is is still as above?

@meriaizen86
Copy link
Contributor

meriaizen86 commented Feb 2, 2020

Just wanted to check if the status of timeline tooling is is still as above?

There is something for this fork.

https://github.com/phr00t/FocusEngine/blob/master/sources/engine/Xenko.Engine/Cinematics/CinematicAnimation.cs

Thank you for your interest.

@Eideren Eideren added area-GameStudio enhancement New feature or request labels Apr 28, 2020
Doprez added a commit to Doprez/stride that referenced this issue Apr 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-GameStudio enhancement New feature or request Epic Epic are defined on ZenHub side, but label also exists for easier visibility with GitHub
Projects
None yet
Development

No branches or pull requests

5 participants