Skip to Content
Welcome to Diffusion Studio Core v3.0 - Now Available! šŸŽ‰

Keyframe

The Keyframe object is the core of animations. You can instantiate it like this:

import { Keyframe } from '@diffusionstudio/core'; const keyframe = new Keyframe( [0, 12], // input range in frames [0, 100], // output range as numbers );

Keyframes are always relative to the start of a Clip. In this example, a particular property will be 0 at frame 0 and 100 at frame 12. What happens after frame 12 is determined by the extrapolation behavior of the keyframe. The default is clamp, causing the value to stay between 0 and 100 outside the input range. Alternatively, extend will extrapolate the values beyond the input range.

Here is an example with all available properties:

const keyframe = new Keyframe( [0, 12], // input range in frames [0, 2 * 360], // output range in degrees { easing: 'easeIn', // default is 'linear' extrapolate: 'extend', // default is 'clamp' type: 'degrees', // default is 'number' } );

You can apply Keyframes to various properties such as:

  • Position x
  • Position y
  • Translate x
  • Translate y
  • Rotation
  • Opacity

Example

In this example, multiple values of the Text Clip will be animated.

const text = new core.TextClip({ text: 'Hello World', position: 'center', rotation: new core.Keyframe( [0, 15], [45, 360 * 2], { type: 'degrees' } ), translate: { x: 0, y: new core.Keyframe( [15, 30], [40, 0], { easing: 'easeIn' } ), }, alpha: new core.Keyframe( [0, 5], [0, 1] ), scale: new core.Keyframe( [0, 10, 20], [0.3, 1, 1.3] ), });

Keyframes are not limited to just two values, you just need to make sure the lenght of the input range equals the lenght of the output range.

Last updated on