# BlendPoint

> Talos next · Since 0.6

## Fields

| Field | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
| `clip` | `string` | yes |  |  |  |
| `at` | `number[]` | yes |  |  | The coordinate this clip sits at, one number per parameter: one for a `linear` tree, two for a `cartesian` one. |
| `speed` | `number` | no |  |  | Playback rate of this clip inside the tree, a multiplier: 1 (the default) plays it as authored, 2 twice as fast, 0 holds it. Finite and 0 or more (`animator-speed-invalid`). The tree's clips share one phase, so the tree plays at the blend-weighted average of its points' speeds: a `Run` authored for 5 m/s placed at 6 with `speed: 1.2` keeps its feet planted at the top of the range. |
| `refSpeed` | `number` | no |  |  | The ground speed, in m/s, this clip covers at playback rate 1, for a stride-matched tree: it replaces the speed the engine measures from the clip's feet or root. For a clip whose measurement is wrong (a stylised run whose feet cover less ground than the character, a clip the feet are not found on) or one the game paces its own way. 0 plays the point at 1, like an idle. Absent, the measured speed (`GET /feel`, `animators[].strides`). Finite and 0 or more (`animator-speed-invalid`). |
| `loopStart` | `number` | no | `0` |  | Where this clip's loop begins, as a fraction of its duration in 0..1 (like an event's `at`). With `loopEnd`, the clip plays from its first frame once and then loops between the two, for a clip whose cycle starts after a lead-in. Default 0. Only on a looping state; `loopStart` below `loopEnd` (`animator-loop-range-invalid`). |
| `loopEnd` | `number` | no | `1` |  | Where this clip's loop ends and wraps back to `loopStart`, as a fraction of its duration in 0..1. Default 1, the clip's last frame (`animator-loop-range-invalid`). |
