Houdini integration
MotionAtelier changes your scene only when you press Commit Keys or run a Key Tool. Everything else (editing, generators, effects, recipes, history, preview) happens inside the panel. While nothing has been written, the status line ends with scene unchanged.
| Action | Reads the scene | Changes the scene |
|---|---|---|
| Get Keys | Yes | No |
| Editing, SHAPE, Motion Stack, recipes, history, preview | No | No |
| Commit Keys | Yes | Yes, one undo step |
| Key Tools, except Inspect Selection | Yes | Yes, one undo step |
| Inspect Selection | Yes | No |
The normalised curve
Section titled “The normalised curve”The curve in the graph always runs from time 0 to 1. A shape describes how a value travels between two keys, not which values. When it is committed, time 0 and 1 land on an interval’s first and last key, and the curve’s start and end values land on those keys’ values. The same curve can therefore be applied to a 0→10 move, a 5→−3 move or 40 channels at once.
Get Keys
Section titled “Get Keys”Get Keys loads existing motion into the Ease curve so you can edit it.
- Select at least two keys of one channel in a Channel Editor, or in the playbar.
- Press Get Keys.
What is read:
- One channel. If several channels are selected, the first valid one in path order is read. The status line notes how many others were ignored.
- The whole span. The curve covers every key from the first to the last selected key, including unselected keys in between, so the existing motion is reproduced.
- Normalisation. Time is scaled to the selected span; value is scaled from the lowest to the highest selected key value.
- Tangents. Bezier segments are read with their tangents. Other segment types (linear, constant, expressions) are read with flat tangents, and the status line reports how many.
- Value jumps. Keys with a different incoming and outgoing value are read at the outgoing value, with a note.
The scene is never changed. Get Keys is one local undo step in the panel; press Ctrl+Z in the graph to get the previous Ease curve back.
A channel cannot be read when it is not a numeric (float or integer) parameter, has fewer than two selected keys, its selected keys share one time, or its selected keys all have the same value. See Selection behavior for where the selection comes from.
Commit Keys
Section titled “Commit Keys”Commit Keys writes the current curve, including any active Motion Stack effects, onto the keys selected at the moment you press it. It does not reuse the Get Keys selection, so you can read one channel and commit onto others.
For every valid selected channel:
- The first and last key of each interval keep their time and value.
- Keys strictly inside an interval are removed and replaced by the curve’s knots, written as Bezier keys.
- Keys outside the committed range are never written. The side of a boundary key that faces outside is rewritten with the slope and acceleration Houdini was already using, so neighbouring motion does not move. If those were automatic tangents, they are fixed at their current value, and the status line says so.
- A value jump on a boundary key inside the committed range is removed.
Apply To: each interval or whole range
Section titled “Apply To: each interval or whole range”The two buttons left of Commit Keys choose how the selected keys are grouped. The choice is remembered.
| Button | Behaviour |
|---|---|
| Apply to each interval (left) | The curve is applied between every pair of adjacent selected keys. Every selected key stays. |
| Apply to whole range (right) | The curve is applied once per channel, from its first to its last selected key. Keys between them are replaced. |
- Apply to each interval
- Original keys (linear for reference)
- Apply to whole range
- Original keys (linear for reference)
Equal end values
Section titled “Equal end values”If an interval’s two keys have the same value, the curve cannot scale between them and the interval is written flat at that value; the status line reports how many intervals.
Effects and key count
Section titled “Effects and key count”Without effects, or with only Contrast and Arc Bias, the curve is written exactly, with one key per knot. Sampled effects (Noise, Gaussian Smooth, Sharpen, Jiggle, Spring, Lag, Delay) produce a dense result. It is fitted to a small set of keys within 0.5 % of the value range before writing, and the status line notes the reduction (effects fitted to <before> -> <after> keys). If no reduced fit stays within that tolerance, Commit Keys is refused instead of writing one key per sample.
Safety and undo
Section titled “Safety and undo”Every commit and every Key Tool runs as one verified transaction:
- Check. Houdini undo must be enabled. Each channel must still exist, match what was just read, and be unlocked and editable. Channels failing a check are skipped and reported.
- Write. All changes on all channels go into one Houdini undo group, named for example MotionAtelier: Commit Ease or MotionAtelier: Reduce Keys.
- Verify. Every written key is read back. Every other key must be unchanged, and the channel must evaluate identically outside the committed ranges.
- Roll back on failure. If anything differs or fails, the whole group is undone and the status line reads
… every channel was restored. If the scene could not be restored exactly, the status line starts with CRITICAL and names the channels to check.
To revert a successful commit, use Houdini’s Edit ▸ Undo once. The panel’s own Ctrl+Z undoes curve edits only, never scene changes.
Channels that are skipped
Section titled “Channels that are skipped”Commit Keys and Key Tools skip a channel, and say why in the status line, when it:
- is not a numeric (float or integer) parameter;
- is locked, or belongs to a node that cannot be edited (for example a locked asset or a take);
- has fewer than two selected keys (Commit Keys, Remove Interior Keys, Reduce Keys, Match Durations);
- would get two keys closer than 0.01 frame;
- needs a tangent handle reaching the full length of its segment, which Houdini cannot store.
Other valid channels are still committed. See Troubleshooting for every message.