Motion Matching Curves
One action writes the float curves a motion matching setup reads, so a take is ready for a pose search database in a single pass. It always edits the take in place - the curves belong on the asset the database points at, not on a suffixed copy.
Panel: Motion → MM Curves. Context menu: TakeForge → Add Motion Matching Curves...
What gets written
| Curve | Value |
|---|---|
enable_warping | Flat 1, or flat 0 for takes that must not warp |
movedata_speed | Travel speed in cm/s at every frame, or one constant value |
phase | Gait phase: 0 at each left-foot strike, rising to 1 across the stride |
contact_l / contact_r | 1 while each foot is planted, 0 while it is airborne (optional) |
Re-running replaces these curves rather than duplicating them, and the whole write is a single undo step.
enable_warping
The warping alpha lives on the asset, so the Animation Blueprint can be wired
once and read it everywhere. The curve is written whether warping is on or
off: a missing curve reads as 0 in the graph, which looks exactly like a
deliberate "don't warp" - and the two are impossible to tell apart when
something goes wrong.
movedata_speed
Accurate measures how far the root travels between frames. An in-place take keeps its root parked, so there the pelvis stands in - the speed the take represents is the useful number either way, and the completion notification says when the pelvis was used.
Constant writes one value across the whole take, for clips whose speed is a
fact about the state rather than something to measure - 0 on an idle, say.
phase
A sawtooth that resets to 0 on every left-foot strike and climbs towards
1 before the next, so any frame knows how far through its stride it is.
Frames before the first strike and after the last keep cycling at the
neighbouring stride's period instead of flatlining at the clip edges.
Phase needs at least two left-foot strikes. On a take with fewer - a single step, an idle, a climb - it is skipped and the notification says so; the other curves are still written. Strikes come from the same detection as the sync markers.
Foot contact curves
The same curves Add Foot Sync Markers writes, from the same code - one detection and one set of names, whichever action produced them. They are included here because a pose search asks "is this foot down now" at every frame, which is exactly what they answer.
This tick is independent of the Add Foot Contact Curves setting, which still governs the other actions.
Options
| Option | Meaning |
|---|---|
| Speed Mode | Accurate (measure per frame) or Constant (one value) |
| Constant Speed | The value written in Constant mode (default 1) |
| Enable Warping | Ticked writes enable_warping = 1, unticked writes 0 |
| Foot Contact Curves | Also write contact_l / contact_r (default on) |
The dialog remembers your last choices.
Curve names
The graph samples curves by name, so these have to match what your Animation Blueprint and choosers already read. Every name is a setting - see Settings Reference:
| Setting | Default |
|---|---|
| Enable Warping Curve Name | enable_warping |
| Speed Data Curve Name | movedata_speed |
| Phase Curve Name | phase |
| Left / Right Foot Contact Curve Name | contact_l / contact_r |
Scripting:
ok, err = unreal.TakeForgeLibrary.add_motion_matching_curves(seq)
# an idle: no warping, speed pinned at 0, contact curves included
ok, err = unreal.TakeForgeLibrary.add_motion_matching_curves(
seq, enable_warping=False, constant_speed=True,
constant_speed_value=0.0, contact_curves=True)
From scripting, contact_curves defaults to off; the dialog defaults it on.