Learned Motion Matching

论文信息: ACM SIGGRAPH 2020, Daniel Holden et al., Ubisoft La Forge / Concordia University


一、核心问题

1.1 研究背景

在游戏工业中,Motion Matching 是主流的角色动画技术,但存在内存限制问题。同时,神经网络生成模型虽然扩展性好,但质量不如 Motion Matching。

Motion Matching 的优势

  • 灵活性高
  • 行为可预测
  • 预处理时间短
  • 视觉质量高

Motion Matching 的局限

  • 内存使用随数据量线性增长
  • 无法利用强大数据处理方法(如数据增强)
  • 在多样性和预算间需要权衡

神经网络模型的优势

  • 内存使用低
  • 数据扩展性好
  • 运行时评估快

神经网络模型的局限

  • 难以控制
  • 行为不可预测
  • 训练时间长
  • 质量可能低于训练集

1.2 核心问题

如何构建一个学习型的 Motion Matching 替代方案,能够

  1. 保留 Motion Matching 的优点(质量、控制、迭代时间)
  2. 具有神经网络的扩展性(低内存、数据可扩展)
  3. 无需存储动画数据和匹配元数据

1.3 本文方法

论文提出了 Learned Motion Matching 框架:

核心思想

  • 将 Motion Matching 算法分解为独立步骤
  • 用学习的、可扩展的替代方案替换每个操作
  • 三个专用神经网络:Decompressor、Projector、Stepper

二、核心贡献

  1. Learned Motion Matching 算法

    • 用三个神经网络替换 Motion Matching 的三阶段
    • 无需存储任何数据库
    • 内存扩展性与神经网络相当
  2. 保留 Motion Matching 行为

    • 质量、控制、快速迭代时间
    • 工业界友好的特性
  3. State-of-the-art 结果

    • 动画质量
    • 运行时性能
    • 内存使用

三、方法详解

3.1 Basic Motion Matching 回顾

算法流程

每 N 帧执行:
1. 搜索动画数据库
2. 找到最佳匹配当前帧
3. 如果找到更低成本帧,插入过渡
4. 继续播放

特征向量 x ∈ R^27:
- tt ∈ R^6: 未来轨迹位置 (20, 40, 60 帧)
- td ∈ R^6: 未来朝向方向
- ft ∈ R^6: 过去轨迹位置
- ˙ft ∈ R^6: 过去轨迹速度
- ˙ht ∈ R^3: 根节点高度速度

三阶段

  1. Projection: 最近邻搜索找到最佳匹配
  2. Stepping: 推进 Matching Database 索引
  3. Decompression: 从 Animation Database 查找姿态

加速结构

  • KD-Tree
  • Voxel-based lookup
  • Clustering
  • 自定义两层 BVH

3.2 Learned Motion Matching 架构

┌─────────────────────────────────────────────────────────────────┐
│              Learned Motion Matching                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  输入:查询特征向量 ˆx                                           │
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Projector Network                                      │   │
│  │  输入:ˆx                                                │   │
│  │  输出:最近邻索引 k*                                     │   │
│  │  替代:最近邻搜索                                        │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              ↓                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Stepper Network                                        │   │
│  │  输入:当前索引 k*                                       │   │
│  │  输出:下一帧索引                                        │   │
│  │  替代:数据库索引推进                                    │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              ↓                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Decompressor Network                                   │   │
│  │  输入:特征向量 x + 潜变量 z                              │   │
│  │  输出:姿态 y                                            │   │
│  │  替代:动画数据库查找                                    │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              ↓                                  │
│  输出:角色姿态                                                 │
│                                                                 │
│  关键:无需存储任何数据库!                                      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

3.3 三个核心网络

(1) Decompressor Network

目的:从特征向量重建姿态,无需存储 Animation Database

输入

  • 特征向量 \(x\)
  • 潜变量 \(z\)(通过 Encoder 找到)

输出:姿态 \(y\)

训练

  • Encoder-Decoder 架构
  • Encoder: \(y \to z\)
  • Decoder: \((x, z) \to \hat{y}\)
  • 损失:\(||y - \hat{y}||^2\)

优势

  • 无需存储姿态数据库
  • 支持多样性(通过不同 \(z\))

(2) Projector Network

目的:执行最近邻搜索,无需存储 Matching Database

输入:查询特征向量 \(\hat{x}\)

输出:最近邻索引 \(k^*\)

训练

  • 监督学习
  • 真实标签:实际最近邻索引
  • 损失:交叉熵或对比损失

优势

  • 无需加速结构(KD-Tree 等)
  • 固定推理时间

(3) Stepper Network

目的:预测下一帧索引,无需手动推进

输入:当前索引 \(k^*\)

输出:下一帧索引

训练

  • 从数据中学习过渡模式
  • 损失:预测索引 vs 真实下一帧

优势

  • 学习平滑过渡
  • 处理非线性时间推进

3.4 网络变体

根据需求,可使用不同组合:

变体使用网络特点
FullDecompressor + Projector + Stepper完整替代
Partial任意组合根据需求调整
Hybrid部分网络 + 部分数据库过渡方案

四、训练细节

4.1 数据集

  • 大规模动捕数据集
  • 包含多样化 locomotion 动作
  • 用于训练三个网络

4.2 训练配置

网络架构输入维度输出维度
DecompressorMLP27 + latent姿态维度
ProjectorMLP27索引 (分类)
StepperMLP索引索引 (分类)

4.3 训练策略

  1. 预训练 Decompressor

    • 先训练 Encoder-Decoder
    • 学习姿态 - 特征映射
  2. 训练 Projector

    • 使用预训练的 Decompressor
    • 监督学习最近邻预测
  3. 训练 Stepper

    • 基于 Projector 输出
    • 学习过渡模式

五、实验与结论

5.1 评估任务

  1. Locomotion 控制

    • 行走、跑步、跳跃
    • 轨迹跟踪
  2. 复杂场景

    • 崎岖地形
    • 角色交互
    • 场景道具使用

5.2 对比基线

  • Motion Matching (原始算法)
  • PFNN [Holden et al. 2017]
  • 神经网格生成模型

5.3 评估指标

指标含义
Memory Usage内存占用
Runtime运行时间
Animation Quality动画质量
Control Accuracy控制精度

5.4 主要结果

内存对比: | 方法 | 内存 | |------|------| | Motion Matching | 随数据线性增长 | | Learned MM | 固定(网络权重)|

性能对比

  • 动画质量:与 Motion Matching 相当
  • 运行时间:实时
  • 迭代时间:快速

5.5 工业应用

  • 已用于多个 AAA 游戏
  • 支持复杂交互场景
  • 与现有工具链兼容

六、局限性

  1. 训练时间

    • 需要训练多个网络
    • 比原始 Motion Matching 长
  2. 精度损失

    • 网络预测 vs 精确搜索
    • 可能有轻微质量下降
  3. 泛化能力

    • 依赖训练数据
    • 新动作需要重新训练

七、启发

7.1 方法学启发

  1. 算法分解思想

    • 将复杂算法分解为独立阶段
    • 逐阶段用学习替代
  2. 工业界友好设计

    • 保留原有行为
    • 改进关键限制
  3. 混合方案可能性

    • 部分网络 + 部分数据库
    • 灵活权衡

7.2 与相关工作对比

方法内存质量控制扩展性
Learned MM
Motion Matching
PFNN
VAE

八、关键公式

原始 Motion Matching: $$k^* = \arg\min_k ||\hat{x} - x_k||^2$$

Learned Decompressor: $$\hat{y} = \text{Decoder}(x, z), \quad z = \text{Encoder}(y)$$

Learned Projector: $$k^* = \text{Projector}(\hat{x})$$

Learned Stepper: $$k_{next} = \text{Stepper}(k^*)$$


笔记说明:Learned Motion Matching 是 SIGGRAPH 2020 工业向工作,核心贡献是将 Motion Matching 三阶段用神经网络替代,在保留质量的同时实现低内存占用。这是工业界 (Ubisoft) 与学术界合作的典范,展示了如何用深度学习改进现有技术而非完全替代。