> For the complete documentation index, see [llms.txt](https://help.intangible.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.intangible.ai/compose/animation.md).

# Animation

Animation in Intangible is keyframe-based. All keyframes live on the **scene timeline** – one shared timeline per scene. Shots are not separate timelines; they are windows into the scene timeline, each covering a specific span of scene time. When you select a shot and scrub the Scene Timeline tab, you're looking at that shot's slice of the scene's animation data, not a private timeline belonging to that shot.

![Compose mode with the Scene Timeline at the bottom, showing per-object tracks for Shot 1, Shot 2, Shot 3 with keyframes visible on the camera and subject tracks](/files/td66nDKuyc0GwiFgpixO)

## What it does

The animation system supports per-scene keyframing on:

* **Camera** position, rotation, lens, and aim target.
* **Object** position, rotation, scale.
* **Character pose** (when the character is rigged for it).

Every keyframe lives on the scene timeline. When you select a shot in the Scene Timeline tab, you're viewing the portion of the scene timeline that falls within that shot's time range – not a separate timeline. Two shots that overlap the same scene time will show the same animation data. Duplicated shots point to the same scene time and will show identical motion.

Build mode reflects the scene's permanent (non-animated) starting state. Compose-mode transforms on a selected shot become keyframes that override that starting state for the duration of the shot. Switching to Build mode to adjust a permanently placed object – a building, a set piece – won't create unwanted keyframes. Moving that object in Compose mode will.

See [Animation and shot time](/overview/concepts/animation-and-shot-time.md).

Smooth interpolation between keyframes is on by default.

## How to use it

The timeline lives at the bottom of Compose mode in the Scene Timeline tab. The playhead is the blue vertical line with the frame number in a blue box at the top. The tracks are horizontal rows, one per animatable property of the active selection.

1. **Pick a shot.** Click a thumbnail in the storyboard. The shot becomes active; its timeline appears below.
2. **Park the playhead at frame zero.** Drag the playhead (the blue vertical line) to the leftmost position. The state of the scene at this moment is the shot's start.
3. **Set the start state.** Move the camera and any subjects to where they should be at the start.
4. **Move the playhead forward.** Drag the playhead along the timeline to where the next keyframe should land – or click the playhead's time label and type a time to jump precisely; see [Setting the playhead by time](#setting-the-playhead-by-time). The default shot duration is approximately two seconds; the default scene duration is five seconds. To extend a shot, open the Scene Timeline tab, find the shot's segment (the horizontal span covering the shot's time range), and drag its right edge.
5. **Move objects to the next state.** Drag, rotate, scale. The keyframe doesn't appear until you actually move the object – moving it is what creates the key, not just positioning the playhead.
6. **Scrub to confirm.** Drag the playhead back and forth. Values between keyframes interpolate. If the motion looks wrong, add an intermediate keyframe at the moment that needs adjustment.

Animation can also be authored from a prompt: ask [AI Composer](/build/ai-composer.md#animating-from-a-prompt) to move an object or orbit the camera, and the resulting keyframes land on the scene timeline as ordinary editable keys.

## Setting the playhead by time

The playhead's blue time label is editable. Click it (a click without dragging), type a time, and press `Enter` to commit – or click away, which also commits. `Esc` cancels.

![The Scene Timeline with the playhead's blue time label open for editing, a new time typed in](/files/HGkAzSzaPzJfkQLYlvMc)

Three formats work:

* `MM:SS:FF` – minutes, seconds, frames (e.g. `00:05:12`)
* `MM:SS` – minutes and seconds (e.g. `01:30`)
* A raw number of seconds (e.g. `5`)

Two behaviors to know:

* **A selected keyframe moves with the seek.** If a keyframe is selected when you enter a time, the keyframe moves to that frame – unless that object already has a keyframe there, in which case it stays put. This is the fastest way to retime a key precisely: select it, type the destination, `Enter`.
* **The scene extends if needed.** Entering a time past the current scene duration extends the scene, up to 60 seconds beyond the current duration. Times further out than that are rejected.

Dragging still scrubs. A mousedown-and-drag on the label scrubs the timeline as before; only a clean click opens the input.

## Interpolation modes

Each keyframe carries an interpolation choice that controls the speed and shape of motion leaving it. Six modes:

* **Easing** (the default). The motion starts slow, runs at roughly constant speed through the middle, and slows into the end. What most people expect from "smooth" animation.
* **Smooth.** Takes the surrounding keyframe positions and fits a smooth curve through them. Use when you have several linear or mismatched keyframes and want the overall path to flow instead of kink at each one.
* **Linear.** Constant speed between this keyframe and the next. Use for mechanical motion or anything where the move should feel deliberate and uninflected.
* **Ease In.** Starts slow, accelerates toward the end.
* **Ease Out.** Starts fast, decelerates into the end.
* **Step.** No interpolation – the value holds, then jumps to the next keyframe. Use for hard state changes or stop-motion looks.

Interpolation is **per keyframe**, not per track. A single track can mix modes: easing out of frame 0, linear into frame 60, step at frame 90.

{% hint style="info" %}
**Mixing modes creates small bumps at transitions.** Crossing from linear into ease-out produces a slight velocity bump at that keyframe. If smooth motion across a mixed-mode track matters, use the Smooth mode at the transition keyframe.
{% endhint %}

**Keyframes inserted mid-segment are always Easing.** When you scrub to a point between two existing keyframes and move an object, the new keyframe is created with Easing interpolation regardless of what the surrounding keyframes use. Change its mode afterward if you want a different feel.

![Six primitives in one scene, each on its own track in the Scene Timeline with a different interpolation mode, animating together when the playhead runs: the stepped object jumps to its position while the eased objects glide in at different rates](/files/yP8pG2YDIdvVOMMvmqS9)

## Editing keyframes

Three operations on an existing keyframe:

* **Insert mid-segment.** Scrub the playhead between two existing keyframes and edit the object. A new keyframe lands at the playhead, splitting the segment in two. Each half gets its own interpolation choice. This is how you correct an in-between value without re-keying the start or end of the move.
* **Retime.** Drag a keyframe along its track to shift when its value lands. Surrounding segments stretch or compress to match. Use this to slow a specific beat down or rush past one without redoing the keyframes themselves.
* **Delete.** Select a keyframe and delete it. The motion reverts to whatever the surrounding keyframes describe. If the deleted keyframe was the only one on the track between frame 0 and the end, the object holds its frame-0 state for the rest of the shot.

### The start keyframe: open vs filled diamond

The diamond at the start of a track tells you where the object's start state comes from:

* An **open (empty) diamond** means the object is starting from its **Build-mode position**. You haven't keyed a start state in Compose; the object begins wherever Build placed it.
* The diamond **fills solid** the moment you change the object's position at the start time. That gives the object its own Compose start keyframe, which overrides the Build position for this shot. The Build position itself is unchanged.

To repoint the start without touching Build: create a keyframe elsewhere on the track, then drag it on top of the open start diamond. It overrides the start keyframe and becomes the new start state. The object's Build-mode position stays as it was, so the rest of the scene is unaffected.

## Pose animation for characters

Characters with rigs animate per-pose, not per-bone. The contextual menu on a character object exposes a **Pose** dropdown with dozens of preset poses; pick a pose at one keyframe, pick another pose at a later keyframe, the character interpolates between them.

Set a pose at frame 0 (e.g., "standing"), set another at a later frame (e.g., "running"), the character animates the transition.

## Parented animation

Parent–child relationships are honored during playback. A child follows its animated parent while keeping its own keyframed motion – the two compose. Animate a car, parent a driver into it, and the driver rides along; give the driver their own keyframes and that motion plays on top of the car's.

The cases that work:

* **Only the child is animated.** A bike rides down a static mountain. Parenting doesn't change the motion.
* **Only the parent is animated.** A car drives down a street with a driver inside. The driver follows for free – no keyframes needed on the child.
* **Both are animated.** A ship's wheel spins while the ship banks through a turn. The wheel's spin composes against the ship's motion.
* **Parent removed mid-project.** A skydiver parented to a plane jumps: clear the parent and the skydiver's own keyframes take over in world space.
* **Parent changed.** An arrow loosed from horseback sticks into a running deer: re-parent the arrow from the archer to the deer.

A child's keyframes are stored relative to its parent. Changing or clearing a parent recomputes the child's existing keyframes so its world-space motion is preserved. The parent relationship itself is not animatable – you can't keyframe a parent swap. To stage a handoff like the arrow example, change the parent and adjust the child's keyframes around the moment of transfer.

Set and clear parents with the [Parent tool](/build/working-with-objects.md#parenting) in Build mode.

## Camera-aim animation

When a camera has a target object (see [Aim Camera and Target](/compose/aim-camera-and-target.md)) and the target is animated, the camera follows automatically. No manual rotation keyframes needed. This is the cleanest way to do follow shots: animate the subject, let the camera track.

Using a camera aim target restricts certain camera moves. Because the camera must constantly point at the target, tilt and pan are no longer freely keyframeable – the target controls where the camera looks. You can still track (move laterally), boom (move vertically), and roll the camera on its axis. If you need to break away from the target mid-shot, remove the aim constraint first.

## Authoring crane moves, dolly arcs, and complex camera trajectories

Keyframe-based animation is the path. Place the camera at frame 0, scrub the playhead forward, place the camera at the next keyframe, repeat for as many waypoints as the trajectory needs. The smoothing default does the curve work between keyframes for most cinematic moves.

If a move needs a precise curve, key the position more densely – four or five keyframes across a two-second move usually carry the shape cleanly.

## How the three Compose-mode tabs relate

The Compose-mode bottom panel exposes three tabs:

* **Storyboard** – every shot in the project as a card grouped by scene. Author-time view. See [Storyboard view](/compose/storyboard-view.md).
* **Sequence** – the assembled cut, shots end to end as time-bound segments. Edit-time view. See [Timeline](/compose/timeline.md).
* **Scene Timeline** – per-object animation tracks within the active scene, the most granular view. Animation-authoring view.

Think of the three as viewing filters into the same time-based scene data. Storyboard groups by scene. Sequence orders by playback time. Scene Timeline drills into per-object keyframe tracks for the **one selected shot** – it shows only the currently active shot, not all shots at once. To see multiple shots in time order, use the Sequence tab. The same animation data underlies all three views; switching tabs only changes which dimension you're looking at.

## Common mistakes

{% hint style="warning" %}
**Don't author motion in Build mode and expect it to animate.** Build-mode transforms commit globally to the scene's permanent state. Only Compose-mode transforms (with a shot active) become keyframes. If your render came back static, this is the most likely cause.
{% endhint %}

* **Animating without keyframing the start state.** A keyframe at frame 30 with no keyframe at frame 0 means the start state is "whatever the scene was when you last touched it", not "at the start of this shot". Always set frame 0 first.
* **Moving permanent objects in Compose mode.** If you need to reposition a building, a backdrop, or any scene element that shouldn't animate, go back to Build mode to do it. Moving objects in Compose mode (with a shot active) creates keyframes – that building will now move during playback. Return to Build for any placement that should be static.
* **Cross-shot animation is continuous, not per-shot.** Because all animation lives on the scene timeline, a character walking at frame 10 keeps walking through frames that fall under any shot covering that range. You don't need to re-set up the same motion in each shot. To review how motion reads across a cut, use the Sequence tab – the Scene Timeline only shows one shot at a time.

## Limits and known issues

* **The default shot duration may not match your edit duration.** The default shot duration is approximately two seconds; the scene timeline defaults to five seconds. To extend a shot, open the **Scene Timeline** tab (not the Sequence tab) and drag the right edge of the shot's segment.

## Where your animation lands in Visualize

The keyframes you set in Compose feed directly into video generation. Two paths to know about:

* **Default video modes.** The visualizer reads the per-frame state of the scene and passes it through to the chosen video model. Most models honor the motion within their own interpretation. See [Generate video](/visualize/generate-video.md).
* [**Video (From Animation)**](/visualize/video-from-animation.md)**.** A dedicated visualizer mode that uses your keyframes as the explicit motion source. It offers motion-guided AI model options plus [Direct Render](/visualize/direct-render.md) (non-AI wireframe capture); see [Video (From Animation)](/visualize/video-from-animation.md) for the current options. Reach for this when motion fidelity to your blocking matters more than the model's interpretation.

## Related

* [Animation and shot time](/overview/concepts/animation-and-shot-time.md)
* [Shots](/compose/shots.md)
* [Aim Camera and Target](/compose/aim-camera-and-target.md)
* [Timeline](/compose/timeline.md)
* [Storyboard view](/compose/storyboard-view.md)
* [Video (From Animation)](/visualize/video-from-animation.md) – how your keyframes drive video gen.
* [Direct Render](/visualize/direct-render.md) – capture the animated scene as wireframe video, no AI.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.intangible.ai/compose/animation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
