# Interpolation Curves

## Timeline

An interpolation curve in a timeline specifies how each keyframe interpolates to the next.

### Linear

The value uses linear interpolation to interpolate between the current key and the next key. The speed of change is constant.

A graph of "linear" interpolation.

### Hold

The value returned between the current key and the next key is always current key's value.

A graph of "hold" interpolation.

In technical terms, if we have two keys in a color timeline:

```[0:#0,0,0,1;H]
[1:#1,1,1,1;L]
```

and we attempt to get the value at time index [0,1), then it will always return the color #0,0,0,1. If time index == 1, it will return the color #1,1,1,1.

### Ease In

The value eases in to the next key frame. The speed of change is fast at first, then slows towards the end.

A graph of "ease in" interpolation.

### Ease Out

The value eases out of the current key frame. The speed of change is slow at first, then accelerates towards the end.

A graph of "ease out" interpolation.

### Smooth

The interpolation algorithm can best be described as a combination of "ease out" then "ease in". The speed of change is slow at first, then accelerates in the middle, then slows again towards the end.

A graph of "smooth" interpolation.

If we have two keys in a color timeline:

```[0:#0,0,0,1;H]
[1:#1,1,1,1;L]
```

and we attempt to get the value at time index == 0.5, it will return #0.5,0.5,0.5,1 as the color. Between time index [0.0,0.5), it will exhibit the properties of "ease out" interpolation. Between time index (0.5,1.0], it will exhibit the properties of "ease in" interpolation.

### Twist

Same as Smooth, except the first half of the interpolation exhibits the properties of "ease in", and the second half exhibits the properties of "ease out". The speed of change is fase at first, then slows in the middle, then accelerates again towards the end.

A graph of the "twist" interpolation.

## Camera

Interpolation curves are a string argument which specify how a camera should move.

Common options:

• LINEAR specifies that the camera should turn by the same amount each frame.
• SMOOTH combines EASE_IN and EASE_OUT so that the camera speeds up initially, then slows down near the end of the turn.

Less common options:

• EASE_IN specifies that the camera should turn slowly at first, and speed up during the early portion of the turn, then stop suddenly when the turn is complete.
• EASE_OUT specifies that the camera should turn quickly at first, and decelerate the rate of rotation near the end of the turn.
• SQUARE is like EASE_IN, but with a slightly less pronounced curve
• INV_SQUARE is like EASE_OUT, but with a slightly less pronounced curve
• TWIST combines EASE_IN and EASE_OUT inversely from the SMOOTH type, resulting in a kinked double curve.
• HOLD maintains the original value for the duration, then snaps immediately to the end value at the end of the duration.