Orbit Motion Matching:动作、数据库与测试关卡怎样协作
在 Orbit 的动作测试关卡里,操作角色向前、侧移、走跑或停下,Motion Matching 会从已有动作中寻找适合当前运动和姿态的片段,再衔接到角色身上。理解这套结构,需要把动作素材、搜索配置、动画执行和测试环境分开。
本文以 2026 年 10 月 10 日的 UE 5.8 工程代码及原生资产引用检查为依据。文中的“当前位置”已经存在;“整理方案”已经采用,尚未执行迁移。具体参数和最新路径仍以工程内容为准。
从屏幕上的角色开始
角色模型描述身体形状,骨架描述关节关系,动画序列保存随时间变化的骨骼姿势。动画蓝图把动画处理结果交给角色网格,网格根据骨骼姿势变形,随后由材质和引擎渲染成画面。
Motion Matching 的作用在动画选择阶段:按照角色的运动与姿态信息,在数据库中搜索合适的动画姿势。Schema 定义比较的信息,Database 提供可搜索的动作数据,动画蓝图执行搜索与衔接。UE Motion Matching 官方说明。
Orbit 当前测试的完整关系是:
1 | 按键 / 手柄输入 |
角色的实际位移由 CharacterMovement 管理。当前动画实例使用 IgnoreRootMotion;动作副本中的根轨迹用于搜索数据准备,动画输出与角色移动各有职责。
三个核心动画资产
| 资产 | 回答的问题 | 当前连接 |
|---|---|---|
PSS_Locomotion |
怎样比较姿势和运动? | 指定模板骨架、轨迹及脚部特征 |
PSD_Locomotion |
去哪些动作里搜索? | 使用上述 Schema,引用 17 段动作 |
ABP_MotionMatching |
每次更新怎样得到角色姿势? | 使用 Database,并连接姿态历史收集节点 |
PSS 是 Pose Search
Schema,即搜索规则。当前配置采样双脚的位置和速度,以及轨迹中的水平速度。选择哪些骨骼和运动信息,会影响搜索结果;具体权重由资产和编写代码维护。
PSD 是 Pose Search
Database,即动作数据库。它为动作建立搜索索引;动作文件仍是独立的
Animation Sequence,数据库通过引用组织它们。
ABP 是 Animation Blueprint,即动画蓝图。当前 AnimGraph
的姿势连接为:
1 | Motion Matching → Pose History Collector → 最终姿势 |
History Collector 保存后续查询需要的姿态信息,当前也启用了轨迹生成。Graph 中的连线表示姿势流;查询时还会使用历史和预测信息。
实际使用的模型与动作
测试角色借用 UE 模板的 Manny 网格与 Mannequin 骨架。它们位于:
1 | Content/Reference/UnrealTemplates/Characters/Mannequins/Meshes/ |
数据库引用的 17 段动作是八个方向的行走、八个方向的慢跑和一段待机,位于:
1 | Content/Reference/UnrealTemplates/MotionMatching/Animations/ |
这些 AN_MM_*
是从模板动作生成的测试副本。现有准备入口为副本添加搜索所需的根轨迹,保留模板原动作。模型、骨架和动作继续由测试资产引用,无需在测试目录再复制一套。
这套数据库当前服务于模板角色的动作实验。正式角色接入时,需要核对骨架、动作、运动方式和搜索规则,再决定哪些配置可以复用。
让实验能操作、能观察的文件
当前 Characters/MotionMatching 中有 14
个资产。其中三个是上述核心配置,其余十一项提供独立测试环境。
| 文件 | 责任 |
|---|---|
BP_MotionMatchingTestCharacter |
配置测试身体、动画蓝图、摄像机和输入资产 |
BP_MotionMatchingTestHUD |
显示操作说明、当前状态及实际选中的动画 |
BP_MotionMatchingTestMode |
为测试关卡选择默认角色和 HUD |
IA_TestMove、IA_TestLook、IA_TestRun |
移动、视角和跑步操作 |
IA_TestReset、IA_TestFacing、IA_TestSlowMotion |
重置位置、切换朝向方式和慢放观察 |
IMC_MotionMatchingTest |
将键盘、鼠标和手柄按键映射到这些操作 |
M_M_TestFloor |
测试地面的外观 |
L_MotionMatchingTest
是额外的一张关卡,用来摆放地面、灯光、出生点,并指定测试
GameMode。GameMode 在这里负责选择关卡使用的角色和 HUD。
对应源码分为两部分:
| 代码 | 运行时机与职责 |
|---|---|
Source/orbit/Private/Core/Debug/MotionMatchingTestCharacter.* |
游戏运行时:处理测试输入、重置、慢放及读数 |
Source/orbitEditor/Private/Player/Characters/MotionMatchingAuthoringLibrary.* |
编辑器编写时:准备动作数据、配置 Schema/Database/AnimGraph、构建索引 |
Scripts/Art/ImportArtRevision.py 的
motion-matching
入口负责调用现有编写能力并连接测试内容。生成完成后,UE
使用保存下来的资产运行。
当前位置与已采用的整理方案
当前动画配置和测试辅助资产位于
Content/Orbit/Characters/MotionMatching,关卡位于
Content/Orbit/Maps/Tests/L_MotionMatchingTest.umap。
已采用的方案将整套实验收拢到测试关卡旁:
1 | Content/Orbit/Maps/Tests/MotionMatching/ |
这里的 Animations
包含动画执行与搜索配置。实际动作序列仍留在模板参考来源中。测试目录保存当前实验需要的内容;正式角色采用时,再按实际使用关系提取配置。
文件先归对象或功能,子目录按需要建立。成组的动画配置和输入适合分组;单个测试地面直接并列,借用的模型保持原引用。
怎样检查这套结构
先看 L_MotionMatchingTest 是否配置测试 Mode,再沿 Mode →
Character → ABP → Database → Schema
检查引用。然后检查数据库动作是否存在、骨架是否匹配、索引是否构建成功,以及输入是否能驱动角色。
当前可用入口为
Scripts/Start-Development.ps1 -Map /Game/Orbit/Maps/Tests/L_MotionMatchingTest;迁移后该路径需要同步更新。
原生资产审核确认了这套引用链。运行行为由现有
Orbit.Player.MotionMatching
自动化覆盖,手感、脚步滑动和画面衔接需要在实际关卡中观察。本文写作没有重新执行完整动作测试。
动作经过骨骼变形后,还需要材质与灯光形成外观,这部分见角色着色与渲染结构。