🗃️Channels

Lists all channels on the object or behavior.

This provides a helpful overview of an object's animation channels with additional settings and editing features.

Each channel belongs to a behavior and represents a specific property being animated.

No channels have been created

If this message is displayed in the Channels section, it simply means there are no animation channels on the object. Not all behaviors have channels, so this is normal and nothing to worry about.

Channels List

The Channels section provides a convenient way of inspecting channel setup and data. Some behaviors such as Keyframer also display a Channels section in the editor, however will only show the channels it manages. Whereas the TimeflowObject shows all channels on the object. In either case the channels may be edited the same.

Property mappings can be reassigned by clicking on the main button displaying the property name of each channel.

If a property with multiple attributes is selected, an additional set of options allows choosing an attribute (axis), or processing it as a uniform or combined value (vector). See Properties for further details.

Channel Order

In most cases the order of channels doesn't matter, however there may be times that it is advantageous to rearrange them. This can be to display them in a specific order and also determines which channels are processed first.

Channels are always processed from the top first, going down. This matches the order shown in the Object Panel, where channels can be dragged to reorder them as desired.

Channel Settings

Expand the foldout arrow to view details for any channel listed. Channels that support keyframing also display a list of keyframe times and values for direct editing.

Options and features available to each channel depend on the property type it maps to as well as the type of channel it is. Many behaviors, such as Tween, have custom channel types which do not support keyframing and does not list keyframes.

Displays the current channel link if one is assigned. For more details, see Channel Link.

Loop Settings

Displays settings that control looping a section of time. These features are covered in more detail in the Graph View documentation.

Limit Value

This option is only available for numeric data types. If enabled, all values generated by the channel (whether keyframed or procedural) are restricted to the set value range. Any values outside of the range are cropped to the Min and Max values.

Use this for any properties that require a specific value range.

Set Shader Global

When enabled, the channel outputs its value each frame to the named global shader property. This can be used to perform animations on all materials using the shader.

This is implemented through Unity's Shader class using the SetGlobal methods. Data types include float, vector, and color. This works in both edit mode and play mode the same.

Shader Graph To use this feature with Shader Graph, declare a property with the Exposed checkbox off. Enter a unique name for Reference to use with Set Shader Global.

Keyframes

Lists all keyframes in the channel. This section is only displayed if the channel supports keyframing. Keyframes may be edited directly.

Exposed Keyframes

This is an advanced feature for creating programmable or remote-controlled keyframe values. Each keyframe may be exposed using a unique ID making it globally accessible via simple scripting calls to get and set the keyframe values dynamically.

IDs are assigned at random when Expose is enabled, but maybe changed to any desired value.

If multiple keyframes have the same ID, they are affected the same.

// To set a keyframe value remotely in any script:
AxonGenesis.Keyframe.SetExposedKeyframe(ID, Value);

// To get a keyframe value:
float value = AxonGenesis.Keyframe.GetExposedKeyframe(ID, 0);

One use case for this feature is to create variations of animations and object placement determined by a game controller or setup script. It can also be used to get values and Keyframe objects for further custom processing.

For an example script, please see SetExposedKeyframe.cs.

Last updated