---
description: Bulk operations for editing tracks and keyframes
---

# Keyframe Tools

{% embed url="https://youtu.be/UFzEsMAnisM" %}

This provides additional tools that can be used to precisely to offset or scale selected keyframes and tracks. For documentation on working with tracks and keyframes, please see the [Track View](track-view).

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FhPKfhq6K9QibZOyiIee2%2Fimage.png?alt=media&#x26;token=51824bfb-9ba1-4b5a-9192-d5be669f0cd3" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
To open and close the Keyframe Tools panel, use the toggle button in the lower right corner of the mini inspector <img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FWMKYYQqxZK8FbjSo0dhk%2Fimage.png?alt=media&#x26;token=21727080-eaf8-46d4-b2de-eada5a714c82" alt="" data-size="original"> At least 1 keyframe or track must be selected.
{% endhint %}

When the Keyframe Tools panel is active, a white bounding box is drawn around the selected keyframes for visual reference.&#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FANKULkpJnqgqv1nIjRLA%2Fimage.png?alt=media&#x26;token=3305a062-c52d-44a3-a2df-08f50901ecc0" alt=""><figcaption><p>Only the keyframes selected inside the box are affected by Keyframe Tool operations.</p></figcaption></figure>

When ready, press **Apply** to process the selection.

{% hint style="success" %}
To cancel without making any changes or when you are done using the tools, press the Keyframe Tools icon <img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F0DFRfRbaVIB247Gh4bM9%2Fimage.png?alt=media&#x26;token=bf7963c0-85dd-4e1a-ba74-13f371fa7676" alt="" data-size="original"> to close the panel.&#x20;
{% endhint %}

## Modes

This selects the type of operation to perform. Note that these changes are only applied to the current selection when the **Apply** button is pressed, and is undoable.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FGMphuslhLTJLIo8Lgb8j%2Fimage.png?alt=media&#x26;token=c7009e16-984f-4f44-a204-0cbcff92eaa3" alt=""><figcaption></figcaption></figure>

## Scale Time

This is useful for making animation faster or slower. It multiplies the time of each keyframe by the value specified with some additional options.

![](https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FMLUmJeGBJrEUlHYafzMH%2Fimage.png?alt=media\&token=e6970d07-1f24-4f38-a21f-6ab4b6659c6b)

### Center

Select the time you want to be the anchor point of the scale.&#x20;

![](https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FFBfdZ7AF4sZLoF6CSko2%2Fimage.png?alt=media\&token=a1889dd9-ddf1-4f14-b6af-4cdfb4136f3a)

### Scale

The amount to scale by. This number is multiplied with the keyframe time. For example, a value of 2 would be twice as slow (double the time), whereas a value of 0.5 would be twice as fast (half the time).

### Tangents

If enabled, the keyframe handles for Bezier curves are also scaled by the same amount. This is generally preferred to maintain the relative curves between keyframes.

### Events

If enabled, any selected events are also processed in the operation, or otherwise left unchanged.

## Offset Time

Use this mode to add time defined in seconds. Negative values can also be used to shift keyframes and tracks earlier in time. Note that this changes the keyframe times directly and is unrelated to the [Time Offset](../values-column#time-offset) value on channels and behaviors.

![](https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F677Iw0XsNZumlqFDSoPD%2Fimage.png?alt=media\&token=88ed70f3-fe78-4823-9653-bb334d753531)

{% hint style="info" %}
Sometimes bulk operations can cause keyframes to go out of the time range. If this happens the Timeflow [start and end times](../../timeflow-editor/time#start-time) may be adjusted as needed.
{% endhint %}

## Scale Values

This mode is used to scale the values of keyframes, while leaving their timing unchanged. Typically this is used with the [Graph View](graph-view) to increase or decrease the intensity or range of an animation.  &#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FLm4wqxZGYRSRmYqoCCOh%2Fimage.png?alt=media&#x26;token=b0eb1c89-4a94-476b-9e6c-0c9a82f5163f" alt=""><figcaption></figcaption></figure>

### Center

This specifies the target or center value to scale by. A custom value can also be entered for further control.&#x20;

## Offset Values

This adds the specified amount to the keyframe values without changing the timing. Negative values can also be used to subtract value. &#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F1CxCtsuI5ws7cfEK1Arv%2Fimage.png?alt=media&#x26;token=b4a02d58-517e-441e-996b-32c53f746d70" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
When working with keyframes with complex values (such as vector or color values), offset and scale are applied to each axis, which can differ in amount if desired.&#x20;
{% endhint %}

{% hint style="info" %}
To cancel or close the Keyframe Tools panel, simply click the icon <img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F0DFRfRbaVIB247Gh4bM9%2Fimage.png?alt=media&#x26;token=bf7963c0-85dd-4e1a-ba74-13f371fa7676" alt="" data-size="original">
{% endhint %}

## Smooth

Applies smoothing to time and or values of selected keyframes. Smoothing is calculated as a an average of neighboring keyframes and may be applied multiple times for additional smoothing.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FyzXi1Ntv6eMaDGvLi23G%2Fimage.png?alt=media&#x26;token=f9ea3b2d-9a82-48f7-8550-3cf284585933" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Note that smoothing is calculated with and applied only to the selected keyframes. Any keyframes not included in the selection are ignored and are not modified.
{% endhint %}

### Pin Ends

If enabled, the first and last keyframes remain unmodified.

### Smooth Values

If enabled, smoothing is applied to the keyframe values.

### Smooth Time

If enabled, smoothing is applied to the keyframe times, evening out the spacing between keyframes in time.

### Smoothing

&#x20;This slider determines the amount to smooth by and can be reduced for a more subtle effect.

## Randomize

Use this mode to apply randomization to selected track and keyframe times and/or values.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FPpd2OSfijPoOlrKnAasV%2Fimage.png?alt=media&#x26;token=ba42b5fa-520a-4372-9784-d873840c8892" alt=""><figcaption></figcaption></figure>

In the Time and Value +/- fields, enter the maximum amount of randomization offset, or set to 0 for no randomization.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FeYEpJ02jOOkxEVLI4mSb%2Fimage.png?alt=media&#x26;token=eeb9dbaa-d347-4745-b1aa-5e17f2c5d985" alt=""><figcaption><p>Before randomization</p></figcaption></figure>

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FI6EWAKUIZz77Y4oohGSB%2Fimage.png?alt=media&#x26;token=0bf3f144-5d7d-4782-a34c-4c7c04163409" alt=""><figcaption><p>After randomization</p></figcaption></figure>

### Preserve Track Lengths

Enable this option to randomize the start time of tracks only and maintain each track sections original lenght. Otherwise if this setting is off, randomizing time applies to both track start and end times.

## Resample

Use this mode to simplify selected keyframes, reducing the number of keyframes overall to match the specified time interval, defined by a framerate, timestep, or duration.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FwptmwW77sDfDoIcDXOc7%2Fimage.png?alt=media&#x26;token=5fe6b0c8-fde0-4877-a91c-b32968b17553" alt=""><figcaption><p>Before resampling</p></figcaption></figure>

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FRyID2OSIP2Vx89ojvaZ8%2Fimage.png?alt=media&#x26;token=a964a2a9-8a5b-4c11-8e3a-d61c31eaa78a" alt=""><figcaption><p>After resampling</p></figcaption></figure>

### Snap Time

If enabled, each interval step is snapped to the current grid measurement in time. Value snapping is not applied. Use Snap Time to ensure the new keyframes are aligned to the grid, otherwise if disabled the interval starts at the time of the first keyframe selected.

{% hint style="warning" %}
Resample is applied across the selected time range from the first to last keyframe in each channel keys are selected. The original keyframes selected are removed or replaced by new ones at the specified time interval. Any unselected keyframes remain unchanged.
{% endhint %}

{% hint style="info" %}
An alternate method to resample an entire channel curve is to use [Convert to Keyframes](../../menus-and-shortcuts/context-menus/channel-menu#convert-to-keyframes) from the channel context menu.
{% endhint %}

## Reduce

This simplifies a curve by removing all keyframes except the maximal peaks and troughs. This is determined by calculating the direction the value is trending from one keyframe to the next, only keeping keyframes where the value direction reverses.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FqmvUWY81qVuKEYNb5DnA%2Fimage.png?alt=media&#x26;token=a18e3f36-fd9f-4c90-9227-975b29a533e8" alt=""><figcaption><p>Before reduction</p></figcaption></figure>

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FBO8pLvS8SUudQUDIzHYD%2Fimage.png?alt=media&#x26;token=0dbe8e97-e266-4161-932b-9edd67288051" alt=""><figcaption><p>After reduction, with quadratic interpolation</p></figcaption></figure>

{% hint style="info" %}
Only selected keyframes are processed and affected by this operation. Any unselected keyframes remain unchanged.
{% endhint %}

{% hint style="info" %}
After curve reduction, change the channel interpolation to [Quadratic](../graph-view#quadratic) for smooth curves.
{% endhint %}

For more editing operations working with tracks and keyframes, please see the [Track View](track-view).
