> For the complete documentation index, see [llms.txt](https://animotive.gitbook.io/animotive-kimodo/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://animotive.gitbook.io/animotive-kimodo/working-in-sequencer/constraints-track.md).

# Constraints Track

The **Kimodo Constraints** track is the companion of the **Animotive Kimodo** track. It carries the per-frame pins that tell the generation which parts of the body must stay where your character is putting them, on the frames you choose. Where the Animotive Kimodo track answers "what motion, and over what time range," the Constraints track answers "which body parts are nailed down, and when."

## What it is

The Constraints track is a sibling track of the Animotive Kimodo track on the same body skeletal-mesh binding. It is created automatically the moment you choose **Add Animotive Kimodo Track** on a body binding — both tracks appear in the Sequencer outliner in a single undo step.

The track exposes six trigger channels. Each channel is a row under the track in the outliner, and each row is an independent keyable timeline. A keyframe on a channel marks a frame at which that channel is "active" — at solve time, the corresponding body region is treated as pinned to whatever your character is doing at that exact frame.

There is no standalone way to add a Constraints track. The track is created only as a companion of the Animotive Kimodo track. If you do not see the Constraints track on a binding, ensure the Animotive Kimodo track was added (see [Animotive Kimodo Track](/animotive-kimodo/working-in-sequencer/animotive-kimodo-track.md)). If you deleted the Constraints track but kept the Animotive Kimodo track, choose **Add Animotive Kimodo Track** again — the entry reappears and re-adds the missing companion without disturbing the surviving track.

## Six trigger channels

The track has six channels. Each channel is a boolean trigger timeline — a keyframe on the channel means "at this frame, hold this region."

| Channel        | What it pins                                                  |
| -------------- | ------------------------------------------------------------- |
| **Full-Body**  | The entire pose at that frame is held — strongest constraint. |
| **2D Root**    | The root's horizontal position and facing direction are held. |
| **Left Hand**  | The left wrist's position and orientation are held.           |
| **Right Hand** | The right wrist's position and orientation are held.          |
| **Left Foot**  | The left foot's position and orientation are held.            |
| **Right Foot** | The right foot's position and orientation are held.           |

The channels are independent. You can key any combination on any frame. Each keyed frame on a given channel becomes a sample point the generation must match for that region.

> A Control Rig keyframe that moves the **pelvis** automatically registers as a **2D Root** sample at that frame — no manual Constraints key required. This lets you rough in scene movement with pelvis poses on the Control Rig alone and have Kimodo respect the root path without ever touching the Constraints track. Key the **2D Root** channel explicitly only when you want to sample the root at a frame where the pelvis isn't already keyed.

## Authoring a constraint

To add a constraint at a specific frame:

1. Expand the **Kimodo Constraints** track in the Sequencer outliner to reveal the six channel rows.
2. Select the channel row you want to use — for example, **Left Foot**.
3. Scrub the playhead to the target frame.
4. Press **Enter** (or right-click the row and choose **Add Key**) to add a trigger key on that channel at that frame.

Multiple keys per channel are allowed. Each key marks a sample frame; the generation samples your character's pose at every constrained frame on the keyed channel and fits a motion that matches those samples while still respecting the prompt and the start / end key poses on the Animotive Kimodo track.

To remove a constraint, select the key on the channel row and press **Delete**, or right-click the key and choose **Delete**.

> **Full-Body keys snapshot the Control Rig (once, on add).** Adding a key on the **Full-Body** channel snapshots the live pose and keys the binding's sibling Control Rig at that same frame, so the held pose has a matching Control Rig key to sample from. This happens however you add the key — **Enter**, right-click **Add Key**, or paste. It is a **one-shot** snapshot, not a standing lock: afterward those Control Rig keys are ordinary keys you can freely re-pose or **delete** — deleting one does **not** re-add it. (Re-adding a Full-Body key at the same frame takes a fresh snapshot.) The Control Rig keying is a separate undo step, is a no-op when the binding has no Control Rig, and deleting a Full-Body key never touches the Control Rig keys. Applies to the **Full-Body** channel only — 2D Root, hand, and foot channels stay independent.
>
> **Dragging a Full-Body key moves its paired pose with it.** When you drag an existing **Full-Body** key to a new frame, the Control Rig pose paired with it is relocated to the new frame too — the exact pose is preserved (it is moved, not re-snapshotted from the new playhead position), the old frame's Control Rig keys are cleared, and any existing Control Rig keys at the destination frame are overwritten. The move settles \~0.2 s after you release the mouse and is a single undo step. (Earlier builds sprayed a Control Rig key onto every frame the marker passed over — that is fixed.) As with the snapshot, this is **Full-Body**-channel only and a no-op when the binding has no Control Rig.

## What "constrained" means at solve time

At a constrained frame, the channel's body region is held to whatever your character is doing in Sequencer at that frame. The plugin reads the pose from one of two sources, in order of preference:

1. **Control Rig.** If the binding has a Control Rig section covering the constrained frame, the pose is read from the Control Rig at that frame.
2. **Animation track.** If there is no Control Rig but there is a skeletal-animation track on the binding, the pose is read from the evaluated animation track at that frame.

The generation then interpolates a motion between your key poses and the prompt, subject to the constraint that the named regions match what was sampled at each constrained frame. The prompt continues to drive the overall character of the motion; constraints just remove freedom on the specified channels at the specified frames.

Use constraints sparingly. Every keyed frame on a channel reduces Kimodo's degrees of freedom — too many constraints can produce a stiff or over-determined result. A handful of well-chosen keys typically outperforms a dense channel of keys on every frame.

## Disable globally

The Constraints track has a track-level **Enabled** flag in its details panel (selected when you click the track header). It is **on** by default.

Toggling **Enabled** off omits the `--constraints` flag from the export entirely. The keys you have authored remain on the track — they are simply not sent to the backend. This is useful for A/B comparison: run a generation with constraints, toggle **Enabled** off, run again with the same prompt and the same start / end poses, and compare. Toggle back on when you want the pins to take effect again.

## Warning conditions

The Constraints track surfaces two warning indicators on its outliner row when the generation is likely to behave unexpectedly:

* **Control Rig track on this character is disabled.** Tooltip: *"Control Rig track on this character is disabled — generation will fall back to the animation track or 2D-root sampling."* This appears when the Control Rig section the constraints would otherwise read from is muted or absent. The generation still runs, but pose samples on non-root channels come from the animation track instead of the Control Rig — and if there is no animation track either, only the **2D Root** channel will contribute. *Note: if the Control Rig is merely **muted**, hitting **Generate with Kimodo** (or the Assistant's **Generate**) now unmutes it automatically before sampling, so this warning only persists for an absent or non-overlapping Control Rig.*
* **Constraints keys exist but character has no CR and no anim track.** Tooltip: *"Constraints have keyframes but this character has no Control Rig and no animation track — only Root2D channel keys will contribute; other channels will be ignored."* This appears when keys are present on the Constraints track but the binding has nothing to sample a pose from. The generation still runs, but only **2D Root** keys are honoured; all other channels are silently ignored.

Both warnings are non-terminal — they appear on the track row and as a `⚠` indicator on the corresponding entry in the **Kimodo Monitor**. The generation proceeds in both cases.

## Channel combination patterns

The six channels combine to express a range of authoring intents. A few common patterns:

**Plant a foot.** Key **Left Foot** (or **Right Foot**) on the frames where the foot must stay on the ground. The character must actually be holding the foot in place at those frames — typically via a Control Rig keyframe with the foot positioned as desired. Use this when a stride or stance needs the foot pinned for a specific window of the generation.

**Hold hands on a prop.** Key both **Left Hand** and **Right Hand** at the frames where the wrists must remain on the prop. The character's Control Rig must place the hands at the prop's location at those frames. Use this for actions like pulling, pushing, or carrying where both hands track a shared object.

**Pin root position only.** Key **2D Root** at frames where the root must match the scene — the start, the end, and any intermediate beat. The upper body remains free, so the prompt fully drives the gestures and posture while the floor footprint stays correct. This is the cheapest constraint to author and is often enough on its own for cinematic blocking.

**Snapshot whole pose.** Key **Full-Body** at the exact frame where the entire pose must match the scene. This is the strongest constraint — every channel of the pose at that frame is held, and the sibling Control Rig is automatically keyed at that frame so the held pose is captured. Use sparingly: a Full-Body key on every frame effectively eliminates the generation's freedom and reduces Kimodo to playback of your Control Rig keys.

## No standalone add menu

There is no separate **Add Kimodo Constraints Track** menu entry. The Constraints track is created only as a companion of the Animotive Kimodo track, in the same undo step, on the same body binding. The single source of truth for adding the pair is **Add Animotive Kimodo Track** on the binding's right-click menu.

If you do not see the Constraints track on a binding, either the Animotive Kimodo track has not been added yet or the companion was deleted. Either way, right-click the body sub-binding and choose **Add Animotive Kimodo Track** — the missing track is re-created (and a surviving Animotive Kimodo track is left untouched). See [Animotive Kimodo Track](/animotive-kimodo/working-in-sequencer/animotive-kimodo-track.md) for the eligibility rules that govern which bindings can host the pair.

## See also

* [Animotive Kimodo Track](/animotive-kimodo/working-in-sequencer/animotive-kimodo-track.md) — the parent track that drives the prompt and the time range, and that triggers the Constraints track's creation.
* [Keying Poses](/animotive-kimodo/working-in-sequencer/keying-poses.md) — how to author the Control Rig keyframes that the Constraints track samples from at solve time.
* [Recipes](/animotive-kimodo/going-further/recipes.md) — task-oriented walkthroughs that use the Constraints track in combination with prompts and key poses.
* [Recipes → Foot-planted walk](/animotive-kimodo/going-further/recipes.md#foot-planted-walk) — the foot-planted authoring pattern that uses these channels.
