Basic Infomation基本信息
- 论文题目:Learned Motion Matching
- 作者:DANIEL HOLDEN等
- 年限:2020
- 期刊:ACM Transactions on Graphics
- 论文背景:使用传统的motion matching方式会占用大量的内存
- 文章内容:提出LMM,结合了神经网络和现有的motion matching方式,兼具了两者的优点,降低了内存消耗,且在动作质量和性能等方面都取得了良好的效果。
Motion Matching 动作匹配
动作匹配(Motiong Matching)是一种是一种用于角色动画和运动控制的方法,特别是在影视游戏和交互式应用中。它的核心思想是通过搜索一个动画数据库,找到与当前上下文最匹配的动画帧或序列,以响应用户输入或环境变化。。
在游戏和动画中,需要根据角色的即时动作或玩家的输入动态从大量数据库中搜索并生成动画。在此之前的方法是使用状态机,由美术人员进行动作切换的设计。而动作匹配能够实时地从大量预捕获的动画数据中找到并合成合适的动画片段。
然而,对于传统状态机,动画是通过状态之间的转换和预定义的动画片段来播放的,可能受限于预设的动画集,通常需要动画师手动更新状态机逻辑。然而Motion Matching可以从大量动画数据中动态生成几乎无限的动作变化,提高了动作的多样性和真实性,能够更好地适应不同的情境和环境变化。
Related Work 相关工作
数据驱动的动画合成(Data-Driven Animation Synthesis)是一种利用数据集来生成动画的技术,这种方法依赖于大量的运动捕捉数据或其他形式的运动数据集,这些数据集包含了真实或模拟的运动信息。数据驱动的方法可以非常高效,尤其是在实时动画生成方面,因为它们可以快速适应新的输入条件。尽管有很多优势,数据驱动的动画合成也面临一些挑战,如数据质量、泛化能力、计算资源和模型复杂性等。在这一方面工具繁多,包括图形、线性方法、基于核的方法以及最近的基于神经网络的方法。
动作匹配(Motion Matching)最先在2015年提出,通过搜索动画数据库来匹配当前姿势和用户轨迹。后来提出了更多其他技术与优化方案。。在实践中,动作匹配技术可以被视为数据驱动动画合成的一种实现方式或特定应用。动作匹配利用数据集中的运动数据,通过搜索和匹配过程来合成动画。
Basic Motion Matching 基本动作匹配
我们如何描述一个动作的状态呢?在基本的Motion Matching中我们使用特征向量(feature vector) x x x 和姿势向量(pose vector) y y y 来描述一个动作
特征向量(feature vector)
X
X
X的描述如下
x
=
{
t
t
t
d
f
t
f
˙
t
h
˙
t
}
∈
R
27
x=\lbrace{t^t\quad t^d\quad f^t\quad \dot f^t \quad \dot h^t}\rbrace\in\Bbb R^{27}
x={tttdftf˙th˙t}∈R27
其中:
- t t ∈ R 6 t^t\in \Bbb R^6 tt∈R6:未来20、40和60帧角色局部投影到地面上的2D未来轨迹位置
- t d ∈ R 6 t^d \in \Bbb R^6 td∈R6:未来20、40和60帧角色局部的轨迹面向方向
- f t ∈ R 6 f^t \in \Bbb R^6 ft∈R6:两个脚关节在角色局部的位置
- f ˙ t ∈ R 6 \dot{f}^t \in \Bbb R^6 f˙t∈R6:两个脚关节在角色局部的速度
- h ˙ t ∈ R 3 \dot{h}^t \in \Bbb R^3 h˙t∈R3:角色髋关节的速度
姿势向量(pose vector)
X
X
X的描述如下
x
=
{
y
t
y
r
y
˙
t
y
˙
r
r
˙
t
r
˙
r
o
∗
}
∈
R
27
x=\lbrace{y^ty^r\quad \dot{y}^t\dot{y}^r}\quad \dot{r}^t\dot{r}^r\quad o^*\rbrace\in\Bbb R^{27}
x={ytyry˙ty˙rr˙tr˙ro∗}∈R27
其中:
- y t y r y^ty^r ytyr:关节局部平移和旋转
- y ˙ t y ˙ r \dot{y}^t\dot{y}^r y˙ty˙r:关节的局部平移和旋转速度
- r ˙ t r ˙ r \dot{r}^t\dot{r}^r r˙tr˙r:两个脚关节在角色局部的位置
- o ∗ o^* o∗:两个脚关节在角色局部的速度
那么对于每一帧i,我们都可以通过X和Y构建出一个矩阵,进而构建出一个动作匹配的数据库。
在运动匹配过程中,系统会根据用户输入和当前上下文构建一个查询向量 x ^ \hat x x^。这个查询向量包含了用户希望生成的动画的特征。
Basic Motion Matching算法的目标是找到匹配数据库X中与查询向量
x
^
\hat x
x^距离最近的条目。这通常是通过计算查询向量与X中每个特征向量的欧几里得距离来实现的。距离的计算公式可以表示为:
k
∗
=
a
r
g
m
i
n
k
∥
x
^
−
x
k
∥
2
k^*=\underset{k}{arg min}\lVert{\hat x -x_k}\rVert^2
k∗=kargmin∥x^−xk∥2
一旦找到最近的匹配项,如果当前帧i与最近帧 k∗ 不匹配,动画播放将从这个最近帧开始,并通过使用如惯性化混合的技术插入平滑的过渡。这个搜索和选择过程每N帧重复一次,以确保动画的连续性和对用户输入的响应性。
Motion Matching的原理可以由三个阶段来描述:通过投影(Projection)将查询向量与数据库中的动画帧进行匹配,然后通过解压缩(Decompression)将查询到的动画帧映射回目标,步进(Stepping)的目标是推出下一帧动画
- Projection:当用户输入的轨迹和查找到的目标 Frame 的轨迹不一致(或是差别很大),则需要重新搜索,通过用户模拟的轨迹和当前 pose 的状态在数据库中进行匹配,然后作为修正的Frame
- Decompression:要把查找到的目标 Frame 重新映射回目标 Pose
- Stepping:index++ 逐步推出下一个Frame
Learned Motion Matching
LMM不同于传统MM的地方在于LMM在上述的三个阶段都引入了神经网络作为解决方案,这种做法大幅减少了存储空间的消耗。试想如果采用数据库查询的方式,需要存储大量的动画资源,然而如果使用神经网络的方式,那么只需要一个神经网络的大小就可以产生接近数据库查询的效果。
Decompressor(D)解压缩器
- 功能:Decompressor的核心任务是避免在内存中存储大量的动画数据。它接受一个特征向量x和一组潜在变量z作为输入,并输出相应的完整姿势向量y。
- 工作机制:Decompressor通常与Compressor(压缩器)配合使用。Compressor首先将一个完整的姿势向量x压缩成一个低维的潜在表示z,然后这个潜在表示z与特征向量x一起被送入Decompressor,后者负责重建原始的姿势y。
- 内存和性能:由于Decompressor能够从紧凑的潜在表示中重建姿势,它有助于显著减少内存使用,并可能提高运行时性能,因为它避免了存储和检索整个动画数据库的需要。
Compressor© 压缩器
输入:姿势向量 y i y_i yi
输出:隐变量 z i z_i zi
作用:将某姿势 y i y_i yi映射到低维 z i z_i zi,使得Decompressor依靠特征向量 x i x_i xi与隐变量 z i z_i zi即可尝试重建姿势向量 y i y_i yi
Decompressor(D)解压缩器
输入:特征向量 x i x_i xi
输出:姿势向量 y i y_i yi
作用:通过 x i x_i xi预测 y i y_i yi,消除了对Y的依赖
Stepper(S)步进器与Projector(P)投影器
因为这两个网络需要协同工作,因此写在一起
Stepper(S)步进器
- 功能:Stepper的核心任务是根据当前的特征向量和潜在变量,预测下一帧的特征向量和潜在变量,从而实现动画的流畅过渡。
- 工作机制:Stepper接受当前帧的特征向量和潜在变量作为输入,并输出一个增量(delta),这个增量随后被加到当前向量上,以产生下一帧的特征向量和潜在变量。
- 训练过程:通过一个自回归的方式来完成,即在训练时,网络会使用前一帧的输出作为下一帧的输入。
Projector(P)投影器
- 功能:Projector的目标是替代传统的最近邻搜索机制,通过学习预测与查询向量(用户输入)最接近的特征向量和潜在变量,实现运动匹配。
- 工作机制:在训练阶段,Projector通过在训练数据上添加噪声并找到最近的匹配项来学习将query vector(可能包含角色的未来姿态、速度和环境特征等信息)映射到匹配数据库中最近邻的特征向量x和潜在变量z。
- 训练过程:训练过程通过优化算法(如RAdam)进行,目标是最小化预测输出和真实最近邻之间的差异。
Training 训练
尽管在几个小时内就可以获得结果,但为了获得最佳结果通常需要较长时间的训练。
指标 | 值 |
---|---|
优化器 | Radam优化器 |
Batch size | 32 |
Learning rate | 0.001 |
最大训练次数 | 500,000 |
训练设备 | Intel Xeon 3.5Ghz 12 Core CPU |
结果分析与效果对比
PFNN Phase-Functioned Neural Networks
PFNN就是使用Phase Function相位函数去循环动态改变权重,这个Phase在文中是用于指定脚的落地状态。
MANN Mode-Adaptive Neural Networks
在每一帧画面中,动作预测网络负责计算角色在给定上一帧状态和用户提供的控制信号情况下的当前帧的状态。而门网络动态地更新动作预测网络的权重,通过选择和混合所谓的针对每一个特定动作的专家权重。
指标 | 效果 |
---|---|
质量对比 | LMM在生成动画的细节保留方面优于PFNN和MANN |
性能对比 | LMM在内存使用上更加高效,相比于其他神经网络评估时间更短 •相比于基本MM,计算时间要长一些 |
训练时间 | LMM的训练时间比其他基本运动匹配方法要长(因为需要训练神经网络) |
用户调研 | 在用户研究中,参与者在区分LMM和基本运动匹配方面存在困难,很多人无法准确判断哪个是原始参考系统。 •在动画质量和响应性方面,用户对LMM和基本运动匹配的偏好差异不大,很多人认为两者之间的差异微乎其微。 |
实验结果 | 在路径跟随实验中,LMM能够相当准确地跟随预定义路径,尽管特征权重配置更侧重于动画质量而非路径跟随精度。 •在数值精度方面,LMM生成的动画在视觉上平滑,并且与真实数据相比,关节位置的平均误差较小。 |
讨论与展望
优势
- 每个网络都可以单独开启或关闭,单独训练、调试
- Decompressor可以单独使用,在动画数据库不大时可以提供解决方案
- Decompressor和Projector基于每个姿势工作,而所有动态由Stepper处理,这样的系统更加稳定、易于理解且更简单易用
- LMM系统中每个网络都有专门的分工,可能适用于其他模型
局限性
- Projector的准确性对整体质量影响很大,且其规模和内存的使用也最大
- 增加网络的隐藏层可以提升结果质量,但同时也可能导致评估时间显著增加,超出可接受的生产预算。
- 用户研究中的参与者感觉到的动画平滑性提升,可能部分源于Projector的这一局限性。
未来展望
- 未来的工作可能包括寻找提高准确性同时不牺牲性能的方法,比如利用记忆层技术。
- 探索端到端的系统训练方法,而不是当前论文中提出的分两阶段的训练过程。
以提升结果质量,但同时也可能导致评估时间显著增加,超出可接受的生产预算。 - 用户研究中的参与者感觉到的动画平滑性提升,可能部分源于Projector的这一局限性。
未来展望
- 未来的工作可能包括寻找提高准确性同时不牺牲性能的方法,比如利用记忆层技术。
- 探索端到端的系统训练方法,而不是当前论文中提出的分两阶段的训练过程。