pose_search
Pose Search schema and database assets for Motion Matching.
What it's for
Motion Matching in Unreal is driven by two assets: a Pose Search schema, which describes the skeleton and the feature channels the matcher compares against, and a Pose Search database, which holds the animation entries searched at runtime. This namespace builds both from your assistant, so you can stand up a Motion Matching setup without hand-authoring the assets in the editor.
You would reach for it when you want to scaffold a schema bound to a specific skeleton, create a database that points at that schema, and populate the database with animation sequences. Each operation follows the normal editor create-and-save path, so the resulting assets open and edit like any hand-made ones.
The three operations compose: create the schema first, create a database that references it, then keep appending sequences as your animation set grows. You can seed the database with sequences at creation time, or add them one at a time afterward with an explicit sampling range.
Examples
Create a schema bound to a skeleton
Start the Motion Matching setup by authoring a schema with a position channel against your character skeleton.
You: Make a Pose Search schema for SK_Mannequin with a position channel.
call("pose_search.create_schema", {assetPath:"/Game/MM/PSS_Locomotion",
skeleton:"/Game/Characters/SK_Mannequin_Skeleton",
channels:[{kind:"Position"}]})
→ {ok:true, assetPath:"/Game/MM/PSS_Locomotion"}
Done. Schema created and bound to the skeleton.
Create a database that references the schema
With the schema in place, create a database wired to it and seed it with a couple of sequences.
You: Create a Pose Search database using that schema, seeded with my idle and walk clips.
call("pose_search.create_database", {assetPath:"/Game/MM/PSD_Locomotion",
schema:"/Game/MM/PSS_Locomotion",
animations:["/Game/Anims/A_Idle", "/Game/Anims/A_Walk"]})
→ {ok:true, assetPath:"/Game/MM/PSD_Locomotion"}
Done. Database created with 2 sequence entries.
Append a sequence with an explicit sampling range
Add one more clip to an existing database, sampling only the middle of the sequence.
You: Add A_Run to the locomotion database, but only the 0.5 to 2.0 second span.
call("pose_search.add_database_animation", {assetPath:"/Game/MM/PSD_Locomotion",
sequencePath:"/Game/Anims/A_Run",
samplingRange:{min:0.5, max:2.0}})
→ {ok:true, assetPath:"/Game/MM/PSD_Locomotion"}
Done. A_Run appended over the 0.5-2.0s range.