⌚
Timeflow
  • ⌚Introduction
  • 📗User Guide
    • â–ļī¸Getting Started
      • ✅Requirements
      • âŦ‡ī¸Installation
      • 🚀Quick Start
      • âœī¸Workflow
      • đŸŽŦRender Pipeline
      • â¯ī¸Editor vs Runtime
      • đŸĻŋHow it Works
      • â›‘ī¸Potential Issues
      • ⚡Optimization
      • 🔨3rd Party Tools
      • đŸ”ĸUpgrading Guide
    • â„šī¸Timeflow Editor
      • đŸŽ›ī¸Menu Bar
      • â˛ī¸Time
      • Local Time Scope
      • 🧰Work Area
      • âš™ī¸Settings
      • âŗUpdate Settings
      • đŸ“ēDisplay Lists
      • đŸ”ģMarkers
      • đŸ”ĩObject
      • 🏭Managed Objects
      • ⚡Quick Select Objects
      • âš’ī¸Tools
    • đŸŽŦTimeflow View
      • 🔩Toolbar
        • 🔑Auto Keyframing
        • â¯ī¸Play Controls
        • đŸĨ…Work Area
        • â¯ī¸Current Time
        • đŸŽŧMusical Timing
        • 🌐Grid and Snap
        • 🔸Keyframe Values
        • đŸ”ģMarkers
      • â˛ī¸Timeline
      • 📐Time Navigation
      • Local Time Scope
      • 🎏Track View
      • â†˜ī¸Selection
      • 📰Object Panel
      • đŸ“ēDisplay Lists
      • 🍱Channels
      • đŸŖProperties
      • 🔗Channel Link
      • đŸšĨSwitches
      • 📅Values Column
      • đŸ›¤ī¸Tracks
      • 🔸Keyframes
      • đŸ“ļAlignment Tools
      • ⌛Time Offset
      • đŸ”ĸInfo Panel
      • 📉Graph View
      • âœ‚ī¸Keyframe Tools
    • 🍰Menus & Shortcuts
      • 📃Context Menus
        • â†–ī¸Select Menu
        • 📰Object Menu
        • 🍱Channel Menu
        • đŸ›¤ī¸Tracks Menu
        • 🔸Keyframes Menu
        • đŸ”ģMarkers Menu
        • 📰View Menu
        • 📰Events Menu
        • đŸĨ…Work Area Menu
      • đŸ—ƒī¸File Menu
      • âš’ī¸Timeflow Menu
        • đŸ•ēAdd Behavior
        • đŸ”ļAnimation
        • 🍱Composition
        • đŸ“ēDisplay
        • ⏊Jump To
        • 👨‍đŸ‘Ļ‍đŸ‘ĻHierarchy
        • 🌐Mesh
        • 👉Select
        • 📚Tracks
        • 🌈Track Colors
        • â†”ī¸Transform
        • đŸ‘ī¸Visibility
        • đŸ› ī¸Editor
      • đŸ”ĩGame Objects Menu
      • đŸŽ›ī¸Presets
      • âš™ī¸Preferences
        • Assets
        • ⌛Time
        • đŸŗī¸â€đŸŒˆTracks
        • âšĒObjects
        • 🧮Channels
        • đŸ”ļKeyframes
        • 🔠Input
        • đŸ“ĨImport
        • đŸ–ŧī¸Rendering
        • đŸŽ›ī¸Overrides
        • 🍱Extras
      • *ī¸âƒŖKeyboard Shortcuts
        • Managing Shortcuts
      • âœ´ī¸Quick Menu
  • Reference
    • đŸ”ĩTimeflow Object
      • đŸĸTracks
      • 🏭Behaviors
      • ⏰Events
      • đŸ—ƒī¸Channels
    • 💃Timeflow Controller
      • đŸŽžī¸Timeflow Playback
    • đŸĒ„Behaviors
      • đŸŽžī¸Animation
        • 🔸Keyframer
        • â†”ī¸Tween
        • 🔀Blend
        • đŸŽĸMotion Path
        • đŸ‘¯Animation Clips
        • 🌴Animator Blend Trees
        • 😁Blend Shapes
      • 🤖Automation
        • 🛸Auto Bank
        • 🧭Auto Rotate
        • 📐Distance
        • ⏰Event
        • đŸ›Šī¸Flyby
        • 🏃Follow
        • 👀Look At
        • đŸŽ¯Look At Target
        • 🎲Noise
        • 🚊Place On Path
        • đŸī¸Place On Surface
      • 🔊Audio
        • 🔊Audio Track
        • đŸŽŧAudio Spectrum
        • đŸŽĩAudio Sample
        • đŸŽ™ī¸Audio Reactive
      • 🎹MIDI
        • 🎹Midi File
        • đŸĨMidi Tween
        • 📡Midi Receiver
          • đŸŽ›ī¸Minis Setup (New Input System)
          • đŸšĨMidiJack Setup (Legacy Input)
      • 🏁Rendering
        • đŸŽžī¸Render To Disk
        • 📋Render Queue
        • đŸ“Ŋī¸Video Encoding
        • 💡Tips & Optimizations
        • âēī¸Unity Recorder
      • 🔧Tools
        • â„šī¸Animator Info
        • 🧮Align Children
        • đŸ’ŦComment
        • #ī¸âƒŖFPS Counter
        • 📈Graph
        • 🔗Property Link
        • 🔄Rotator
        • ✨Particle System Update
        • 🌈Trail Renderer Update
        • đŸ“ēVideo Player Update
    • đŸ—ƒī¸Precomposing
    • 🏭Prefabs
    • đŸŽ›ī¸Editor Overrides
      • 🏹Transform Editor Override
    • 🔌Integrations
      • đŸ§™â€â™‚ī¸Adventure Creator
      • đŸŽ›ī¸MIDI Jack | Minis
      • đŸ¤ēSpine Animation
      • đŸ“Ŋī¸Unity Timeline
      • ➰Unity Splines
    • đŸĒSamples
      • đŸ•šī¸Demo App
      • đŸŽžī¸Cutscenes
      • 🏓Physics
      • 🍧Shader Properties
      • ⚡Visual Effect Graph (VFX)
    • 📖Glossary
    • 📗Scripting
    • đŸ“ŖPublished Works
    • âš ī¸Known Issues
    • 🆘Support
    • đŸ§ĒBeta
    • Roadmap
    • đŸ”ĸVersion History
    • ÂŠī¸Terms & Privacy
Powered by GitBook
On this page
  • Usage Overview
  • Workflow Tips
  • Blend Editor
  • Blend Settings
  • From / To
  • Hold
  • Reverse
  • Blend
  • Manual Override
  • Edit Mode
  • Add Set
  • Capture New
  • Swap
  • Active
  • Setup
  • World Parent
  • Force World Space
  • Set Parent of
  • Set Position of
  • Set Rotation of
  • Set Scale of
  • Set Field of View of
  • Notify On Change
  • Properties
  • Sets
  • Categorize Menus
  • Color Coded
  • Sort
  • Collapse / Expand All
  • Tabs (All | Local | Parent | World)
  • Set Parameters
  • Name
  • Edit
  • Duplicate
  • Re-Capture
  • Space
  • Use Transform
  • Set Parent
  • Properties
  • Channel
  • Blend Keyframes
  • Duration
  • Start
  • Additional Notes
  • Camera Editing
  • Even More Complex Movements
  1. Reference
  2. Behaviors
  3. Animation

Blend

Create camera movements and complex transitions

PreviousTweenNextMotion Path

Last updated 2 years ago

Blend is an advanced animation tool for complex transforms, dynamic reparenting, and animating any number of properties in unison.

To add a new Blend behavior, right-click an object in the Timeflow view and select:

Add Animation > Blend

The Blend behavior has a single channel for keyframing between blend sets. This can be used for creating camera edit sequences, interpolating complex object states, and much more.

Usage Overview

Before Blend can be fully used it must be configured following these general steps.

  1. Add keyframes in the Timeflow view to create a sequence based on the sets. Each keyframe can hold on just 1 set or interpolate between any 2 sets.

Workflow Tips

Keep sets well named and organized to avoid confusion.

Before setting keyframe animation, prepare the setup, sets, and properties as much as possible to discover and fix issues early on.

Use

Toggle the enable state for selected keyframes using the keyboard shortcut 0.

A disabled keyframe becomes greyed out and is ignored. This can be helpful while editing animations to turn off specific keyframes and experiment more without deleting anything. Toggling between keyframes can let you try out and compare options, while preserving the previous option in case you change your mind later.

Blend Editor

Select the object to view its settings in the Inspector.

Blend Settings

Once configured and sets have been added, the section at the top of the inspector shows the current sets being displayed. Before adding any keyframes, these values can be set directly to preview blending between any two selected sets.

Once keyframes have been set on the Blend channel (and the channel is enabled) the display shows the currently active keyframe based on the current time in Timeflow. If multiple keyframes have been set, you'll notice that the display updates when moving the current time.

When the label * Editing current keyframe is displayed, any changes made are applied to the current keyframe. However, the Blend slider cannot be changed directly since it is controlled by time. Use Manual Override for full control.

From / To

Specifies the From set as the starting point of the blend transition and the To set as the end.

Hold

If enabled, only this set is displayed and no blend transition is performed.

Use Hold for locked off camera angles and any sets that don't require interpolation.

Reverse

If enabled, the blending operation is performed To -> From instead From -> To.

You can also click the Swap button to exchange From and To without using Reverse.

Blend

Manual Override

To bypass the keyframe animation and to explicitly set the blend from and to settings, enable Manual Override. When enabled, it is highlight in a yellow box to clearly indicate that override mode is enabled. Generally manual override is only used when editing to quickly test and preview blending from one set to another without affecting animation on the channel.

Direct Control

If enabled, the target transform may be set directly bypassing all blend sets and animation on the channel. This mode can be useful to take control over object placement temporarily in preparation to capture a new set.

Edit Mode

Click the Edit button to directly view and edit any set. This temporarily enables override mode and displays 'Editing Set'. While editing, all animation on the channel is ignored and only the current set is displayed.

Use edit mode any time to quickly make adjustments to any set.

Be sure to press Done to exit editing mode and return to normal operation.

Add Set

Creates a new set with default values. This basically creates a new "empty" set ready to be configured further. The new set is immediately viewed in edit mode to allow direct editing.

Capture New

Adds a new set using the current position, rotation, and values of any properties. This is helpful to capture the target object(s) as-is, saving it as a new set. This also immediately invokes editing mode for further editing.

Swap

Switches the From set with To set to reverse their order.

Active

Shows the current set(s) being viewed for quick editing. This updates to display whichever sets are currently displayed, making it easier to adjust settings on each set.

Setup

Use this tab to assign the target transforms and which features are used.

World Parent

This sets the transform to use when performing world space placements and calculations. A transform is wanted here to avoid null parents and to keep objects contained under one global parent. By default, this uses the Timeflow instance, though can be set to any other object.

Make sure the World Parent transform is set to 0, 0, 0 and scale 1, 1, 1 otherwise it may introduce unwanted offsets.

Force World Space

If enabled, all sets are processed in world space regardless of whether using local or parent mode for particular sets. Use this option if you want to ensure that all calculations are in world coordinates.

Set Parent of

Dynamic parenting can be used to hand objects off from one parent to another and animate between them. For example, if working with a camera rig, one set may attach the camera to a moving vehicle and another set to a fixed location on the ground. Each set maintains its relative relationship so that you can easily switch between camera views and even animate between them.

Set Position of

If enabled, the transform is repositioned by the sets. This defaults to the transform component on the current object though may target any other object as needed.

Set Rotation of

If enabled, sets the rotation of the specified transform. This typically is the same transform as Set Position, however may be a separate object for more complex rigs.

Set Scale of

If enabled, scale is applied to the specified transform.

Set Field of View of

When using Blend to control camera views, enable this to allow each set to define the camera's field of view. This can be used to create wide and narrow camera angles and animated between them.

Notify On Change

Integrates Blend with other scripts. This requires a Blend Update component which provides methods for updating.

The update script can be applied to the same object or any another. The base class by itself doesn't do anything other than output a message to the console, but is showed here for demonstration purposes.

Create your own custom blending behaviors by deriving from the BlendUpdate class and overriding the methods OnBlend and OnBlendChange. Each frame the component receives an update call with the current time, keyframes being interpolated, and the blend value.

/// update method called each frame upon processing Blend 
public virtual void OnBlend(float time, Keyframe keyA, Keyframe keyB, float blend)

Writing a script is not required but is an option for developers that need specialized integration with game or scene controllers. One use case for this might be to change the UI or a HUD display according to the current camera view, which could be determined by looking at the BlendKey data, which can be accessed through the Keyframe parameters.

Refer to BlendUpdate.cs for further information.

Properties

Use this to tab to configure properties under controlled by this Blend. Any number of properties of various types may be added to create complex transitions and state changes across multiple objects.

Add Property

Click this button to create a new property field. The new property will need to be mapped after is created and initially appears unassigned.

Clear All

Removes all properties listed, clearing their fields and values from all sets.

Edit Names

Toggles displaying the name fields for property list for editing.

Naming properties helps clarify and streamline the blend settings to your liking.

When viewing details for a set, each property is listed in order by number and name.

Click Reset Names to restore all properties to their original names.

Sets

Use this panel to manage all of the sets in the Blend.

Categorize Menus

If enabled, the set names are organized into submenus by coordinate space when selecting from a drop down menu. This helps to manage set lists and to aid in selecting sets of like type.

The Parent submenu is further organized by parent name to quickly find sets with the same parent.

Color Coded

If enabled, sets are shaded in green for Parent sets, and blue for World sets. This is only as a visual aid in the editor to know which type each set is at a glance. This is optional and may be disabled if preferred.

Sort

Sorts the list of sets first by Space (Local, Parent, World) and then alphabetically by name.

Collapse / Expand All

Shows or hides the details for all sets listed.

Tabs (All | Local | Parent | World)

These tabs filter the view depending on what you want to view. Use this while editing to help focus on sets of the same type.

Set Parameters

Name

Give each set a meaningful name that is descriptive but short. Being clear and concise in your naming will avoid confusion when animating and make things easier for you overall.

Edit

Duplicate

Makes a copy of the set. This is often helpful to make an alternate version of a set or to use it as a starting point for creating another.

Re-Capture

Updates the set with the current position, rotation, scale, and property values, overwriting its previous values. Often this can be useful to capture a blend between two other sets, or even the current set and another.

When editing a blend between two sets, re-capture can be a helpful tool to make adjustments to bring one set closer to the other. Adjust the blend to the desired position and then re-capture to update the set to the current values.

Space

The coordinate space the set operates in. This is important depending on the type of result desired and each has its use case.

Local

Position, rotation, and scale are all set in local coordinates on the target objects.

Parent

World

Defines coordinates in world space.

Use Transform

If enabled, a transform may be used to provide placement instead of defining it in world or local space. This makes it much easier to smoothly transition between local and world space by working with the world coordinates of the transforms. This method takes a little more setup but more complex behaviors can be achieved.

Any game object may be used as a transform. You can also create a new empty game object and make it a child of the object you want to attach to with positioning relative to the parent. This is a good alternative (or addition) to using Parent space for dynamic reparenting.

Convert to Transform

This creates a new empty game object and places it the coordinates currently defined by the set, then assigns this with Use Transform.

Use this to quickly setup a new transform for the current set, instead of creating and assigning it manually. This can also make blending between a Parent and World or Local space set possible.

Convert to World Coordinates

Converts the current set to World space with world coordinates for the current position, rotation, and scale. This breaks any prior connections to a parent or transform, leaving just the current world position.

Set Parent

This field is only visible for Parent sets. Assign the game object to be used as a parent. The coordinates are then in local space as a child of the parent object.

Setting the parent dynamically in animation can only be initiated by the From set. If the To set specifies a different parent, then it is ignored and only local space calculation is applied. This is because there is no way to smoothly interpolate or define a blend from one hierarchy position to another, unless Use Transform is enabled.

Properties

It is recommended to set up properties before creating sets when possible. New properties may be added at any time, however existing sets are given a default value for the new property which may not be the value intended. It could require going through each set to assign the value desired.

Channel

Select the Channel tab to view the settings for the blend channel. Use this to display a list of keyframes for inspection and editing. This list appears empty if no keyframes have been set.

Blend Keyframes

Keyframes are added to the Blend channel to animate between sets. These are a special type of keyframe with additional data for performing blend operations. Each keyframe can either hold the values of a particular set, or blend from one set to another over time.

Duration

Sets the time in seconds it takes to blend From => To. This is only displayed if Hold is not enabled. If Reverse is enabled, then the blend is To => From.

Each keyframe is displayed in the Timeflow view with a trailing bar indicating the duration. If it ends before the next keyframe, the ending state of the blend is held.

Auto Duration

Enable this to set the duration automatically up to the next keyframe time.

Auto Duration makes it easier to chain together sequences. Suppose for example you had a series of sets A, B, C, D. You could create keyframes that blend between each pair:

A=>B - - - - B=>C - - - - C=>D

Start

Shifts the starting time of the blend forward or backward (in seconds), affecting the overall duration.

Adjust Start to delay the beginning of a blend (holding the From position longer), or to begin partway through the blend. This can be useful to lessen the extremes between the From and To points and only perform part of the transition. Similarly, the duration may be adjusted to trim or extend the end.

Additional Notes

Camera Editing

If Blend is being used to control a camera rig, the animation can be thought of as an edit sequence, with each keyframe being a particular shot or sequence in the cinematography. This makes it possible to create as many camera angles and setups as you wish while only using 1 camera, whether that be a locked-off position, traveling along a path, or anything imaginable.

Since the From and To sets have (hopefully) been given meaningful names, you can think more like a director pulling from your shot list to create all the different camera angles and moves you want. If you need a different angle, just add a new set, or capture one from another point in the timeline.

Even More Complex Movements

Blend is inherently limited in that it can only blend between 2 sets at and given time and doesn't provide any sort of spatial control. However, don't overlook all of the other potential behaviors that could be combined with Blend to create unlimited possibilities.

For example, a Motion Path could be used to provide all sorts of complex motion which can then be used as a parent reference by sets in a Blend. With the possibility of using transform and dynamic parenting, any conceivable movement or camera transition could be made.

In the Inspector, go to the tab and assign the target transform(s) and enable the features you intend to use.

Go to the tab and add any additional properties, or skip this if none are needed. Properties can also be added later.

Go to the tab and begin adding sets. Each set defines a particular placement and set of values which is later used in keyframing. For example, if animating a camera one set could be "Close Up" and another "Wide Angle", setting the transforms and properties of each accordingly. Any number of sets may be created.

Use the tab and to test transitions from one set to another.

For common panels see and .

To ignore keyframe animation entirely while editing, disable the channel in the Timeflow view by clicking the small watch icon on the left. This greys out the channel and prevents it from processing and can then be re-enabled at any point.

Use the blend slider to interpolate between the From and To set, using the selected .

See for further details.

If enabled, the transform assigned to this field may be dynamically reparented by sets using Parent mode. See below.

It is often helpful to use multiple transform nodes to separate rotations from other behaviors in the hierarchy. This allows a greater degree of freedom and can avoid conflicting issues and gimbal lock.

When blending between sets that don't share the same parent, local coordinates are assumed (relative to the From set). This may not create the desired behavior when using parenting, since it not possible for Blend to interpolate dynamic reparenting. To work around this, the From and To set must have the same parent or operate in world space. it may also be helpful to use world space with .

See above.

The universal common denominator is World space. It is possible with a little extra setup to make all sets work in world space with , covered below.

This mode is used for dynamic reparenting where the target object () is made a child of the object designated by this set. The position, rotation, and scale are processed in local coordinates relative to the new parent.

If is enabled, no reparenting takes place and instead it is assumed that the transform assigned is already parented as it needs to be.

This is only true world space if the hasn't been moved, rotated, or scaled.

Any properties that have been added in the , are displayed in each set with a field to set its value, which varies by type. When blending between sets, all values are interpolated based on the selected.

Please refer to previously covered topics and .

Please note that some of these fields have already been covered .

Select a keyframe in the Timeflow view to edit its settings in the . Each keyframe sets a blend state, which can be a continuation of the previous set, or cutting immediately to another set. Each keyframe also defines a duration to blend over time, creating smooth movement and transitions between the From and To sets.

This method of working also makes it fast to test out new ideas and to A/B test different sequences. See the above for more.

đŸĒ„
đŸŽžī¸
🔀
Menu Bar
Update Settings
Info Panel
Setup
Properties
Sets
Active
Current Blend
Set Parameters
Set Parent
Use Transform
Edit Mode
Use Transform
Set Parent of
Use Transform
World Parent
setup
interpolation mode
above
Workflow Tips
interpolation mode
Loop Time
Exposed Keyframes
This section displays grey as shown above only when no keyframes have been set on the channel yet.
When Blend is being controlled by its keyframe channel, this section is highlighted in the display color.