角色动画:现状与趋势
角色动画正在进行的AI化的变革,这些技术的变革核心只有一点,就是让虚拟角色的动作越来越逼真,以至于最终玩家在虚拟世界当中无法区分是真人还是机器人。本文作者从现实案例和未来技术发展趋势的视角,观察AI与游戏行业的结合,让人非常令人期待日益“真实”的游戏世界!希望能带给大家更多AI与行业应用结合的启发~
角色动画Character Animation是游戏、影视作品中的核心组成部分,我们玩3A游戏很重要一点是被游戏的画面,角色的动作所吸引,比如The Last of US:
https://video.zhihu.com/video/1487101229653856256
那么角色动画是怎么做的呢?目前的前沿技术又是什么?
本篇Blog将简要的介绍角色动画涉及的相关技术及AI前沿
二、状态机动画
现在用的最多,技术最成熟的技术就算状态机State Machines动画了。
游戏开发者构造很多的动画片段,然后通过状态机判断当前角色的状态,然后选择播放某一个动画片段。这个动画片段可以是动画师手动k出来的,也可以是通过动捕设备采集的动捕动画。
目前手游基本都使用的状态机动画,技术比较成熟,网上也有一些比较好的状态机动画库,比如
https://video.zhihu.com/video/1487106716353753088
状态机动画有利有弊,
好的方面:
1. 技术简单,成熟
2. 能够在任意平台使用,占用内存较低
3. 速度快
缺点:
1. 动画数量有限,动画切换过渡容易失真,比如脚步打滑,穿模等
2. 工程量很大,状态机的状态数量增加,不同状态之间的转换就会指数增加,比如下面这个图,也只是一个基本的locomotion行走的状态机,就很复杂了
所以,能不能简化动画的制作流程,提升动画的效果一直是游戏行业研究的方向。Motion Matching便是这样一个变革性的技术。
三、Motion Matching
Motion Matching是2016年Ubisoft在GDC提出的全新动画技术
Motion Matching的技术原理是比较简单的:
就是对角色提取一些关键的特征,比如root 位置/速度,过去和当前的轨迹,关节的位置速度等等,然后利用这些特征去动画库里寻找最匹配的下一个动画片段,然后结合Blending播放这个动画。
之前状态机,是人工的设置动画的状态,Motion Matching则是通过算法去选择动画的“状态”,这就省去了手动设置状态的过程。
Motion Matching的原理说起来简单,但实现上涉及到的工程技术是比较复杂的:
1. 需要动捕棚,比如光学或者惯性动捕,使用一定的规则去进行动捕,比如Dance Card。
2. 对动捕的数据进行处理,提取并存储关键特征
3. 构建匹配算法,能够快速的搜索动捕关键特征库的数据进行匹配
4. 获取相应的动画进行播放
这一块,黑神话悟空的同学有一个Talk专门讲Motion Matching值得一看:
[UnrealCircle深圳]《黑神话:悟空》的Motion Matching | 游戏科学 招文勇
https://www.bilibili.com/video/BV1GK4y1S7Zw/
目前网上的Unity/UE Motion Matching插件的效果都有限,而像Ubisoft等3A大厂并没有对Motion Matching做开源,这导致Motion Matching的普及程度是比较有限的,国内掌握Motion Matching技术的团队还是很少的,基本上得自己实现。
Motion Matching在3A大作上大放异彩,其动作效果已经非常好了,但是它也不是没有缺点
Motion Matching的缺点:
1. 需要大量的动画,动画需要专门清洗,占用大量的内存。比如The Last of Us 2,据说动画就占了50GB
2. 进行动画匹配的速度和动画的数量呈正比,动画越多,速度越慢
由于以上两点,Motion Matching只能在主机端使用,要在手游端使用困难重重。另一方面,Motion Matching有瓶颈,如果有几百GB的动画,就很难处理了,要进一步提升动画品质也很困难。除此之外,动画匹配的特征不容易调整,不同的状态需要的特征可能不一样,这点也拉高了Motion Matching的实现门槛。
Motion Matching的下一步是什么呢?
——基于数据驱动的AI方法
四、 Data-Driven Motion AI:
PFNN,NSM,Learned Motion Matching and more
引入深度学习来做角色动画是一个比较自然的想法:Motion Matching是通过算法匹配动画,那么能不能由AI记忆动捕动画来直接输出下一帧的动画呢?训练就直接使用动捕动画片段的下一帧作为标签。
PFNN(Phase-Functioned Neural Networks)便是开山之作,作者是Daniel Holden,目前在Epic Games:
https://video.zhihu.com/video/1487117458310361088
一些详细的分析可以看
phase functioned network for character control
https://zhuanlan.zhihu.com/p/53596871
简单的说就是将角色的当前骨骼的位置/角度/速度,root根节点的位置/角度/速度,角色过去及未来的轨迹作为神经网络的输入,然后输出下一帧的root的相对位置/角度,下一帧骨骼的位置/角度/速度等。由于数据多,直接训练一个MLP神经网络很容易由于动作平均化而出现脚步滑动,所以作者引入了phase相位,也就是假设行走时脚步是按照类似正弦方式进行相位变化,那么就人为标注当前姿态的相位,然后让每一个相位对应一个神经网络的参数,可以认为用相位做为神经网络的条件,从而大幅提升了动画的效果。
PFNN之后,Daniel Holden的师弟Sebastian Starke,He Zhang等延续了PFNN,做出了一系列的工作:
这些工作都非常出彩,一定程度上奠定了角色动画AI这个全新领域。这一系列的工作都延续PFNN的思想,使用了MANN中提出的MoE网络架构,来尽可能的提升动画效果。当然,这一系列的工作也不是没有问题,就是做的越来越复杂以至于很难复用,同时使用AI始终面临着一个问题就是Out of Distribution (OOD)的问题,也就是在动画中一旦神经网络的输入是没有遇到过的场景,神经网络可能会输出一些奇怪的状态,导致完全不符合动画的要求,相反,Motion Matching和状态机因为都是使用原始的动画,则没有这个问题。
Daniel Holden在Ubisoft提出了Learned Motion Matching,将motion matching的思路与AI结合,目的是大幅度降低动画占用的内存,并且尽可能的限制AI的泛化,使其输出的动画都映射到动画库中,取得了不错的效果,基本上和Motion Matching的效果一致,是将Motion Matching应用到手游中值得考虑的技术。
https://montreal.ubisoft.com/en/introducing-learned-motion-matching/
EA在FIFA2022上应用了HyperMotion,应该是数据驱动角AI技术在游戏上的首次应用:
基于数据驱动的AI技术确实是角色动画的变革性技术,但它依然局限性,最大的问题就是它是运动学动画(Kinematic-based Animation),也就是所有的动画样本都是预设的(比如动捕录制),AI学的也是这些预设动作,在输出动画时,AI并没有考虑虚拟的物理环境对角色的影响,也无法触发因物理而导致的合理变化。比如角色可能依然会出现穿模或者脚步滑动的现象,或者另外一个人碰了角色的不同部位,角色也没办法做出对应的反应。要解决这个问题,实现终极的角色动画(或者超越动画的概念,角色在虚拟世界真正在动),那么必须是物理动画Physics-based Animation。
五、物理动画AI/虚拟机器人
物理动画驱动角色的方式和运动学动画的方式是完全不同的。对于运动学动画,我们直接对角色的姿态进行赋值,比如它的关节位置,而对于物理动画,我们则是像驱动机器人一样控制每一个关节的电机,由关节电机输出扭矩来改变关节的位置,同时这个过程严格受物理定律影响,使得整个动作是完全符合物理定律的。所以物理动画控制角色等价于控制虚拟机器人。
当然,物理动画可以泛指所有符合物理的动画,不仅仅是对角色的控制,所以,我们可以看到很多基于物理动画的游戏,比如Besiege围攻,你可以在里面创建各种机械,符合物理规律。
还有赛车游戏,比如GT7:
但是要在人物角色上使用物理动画就比较困难的,因为真的是要控制一个虚拟机器人,而这是目前的技术很难做到的。因此,物理动画往往使用在角色掉落等场景,不需要控制,只是让角色通过物理展现不同的死法。
怎么控制一个虚拟机器人呢?
这就要引入深度强化学习Deep Reinforcement Learning了,让虚拟角色在虚拟环境中训练,慢慢的掌握比如行走的技巧,同时引入模仿学习,让角色的行为和人真实的行为相近。
这块的开山之作当属Xuebin Peng的DeepMimic,将姿态与动捕的匹配程度及任务目标作为reward来训练角色:
在DeepMimic之后,也有一系列的相关改进工作,比如AMP: Adversarial Motion Priors for Stylized Physics-Based Character Control
最近比较酷的工作当属Daniel Holden (对,还是他)提出的SuperTrack – Motion Tracking for Physically Simulated Characters using Supervised Learning - Ubisoft Montréal
https://video.zhihu.com/video/1487129209164640256
通过学习一个world model,纯监督来训练一个policy,效果比DeepMimic还好,速度则快很多。这是model-based learning巨大的成功。虽然SuperTrack目标还只是去跟踪某一个动捕动画,但是可以期待未来实现更复杂的任务,比如泛化到各种不平坦地面的行走。
物理动画AI目前还是学术前沿,但离落地也越来越近了,动作要足够自然,拟人是物理动画需要解决的核心挑战。
六、小结
角色动画正在进行的AI化的变革,很多最新的成果令人振奋。这些技术的变革核心只有一点,就是让虚拟角色的动作越来越逼真,以至于最终玩家在虚拟世界当中无法区分是真人还是机器人,这种变化结合更好的渲染技术比如UE5将极大的改变虚拟世界的体验,让虚拟越来越真实,以至虚拟=真实!
本文来自:知乎@Flood Sung 链接:https://zhuanlan.zhihu.com/p/481381633
4.16 周六 10点
我们「门侃」线上会客厅见!
关于我“门”
▼
?一键送你进入TechBeat快乐星球