Press "Enter" to skip to content

角色动画:现状与趋势

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

角色动画正在进行的AI化的变革,这些技术的变革核心只有一点,就是让虚拟角色的动作越来越逼真,以至于最终玩家在虚拟世界当中无法区分是真人还是机器人。本文作者从现实案例和未来技术发展趋势的视角,观察AI与游戏行业的结合,让人非常令人期待日益“真实”的游戏世界!希望能带给大家更多AI与行业应用结合的启发~

 

一、前言

 

角色动画Character Animation是游戏、影视作品中的核心组成部分,我们玩3A游戏很重要一点是被游戏的画面,角色的动作所吸引,比如The Last of US:

 

https://video.zhihu.com/video/1487101229653856256

 

那幺角色动画是怎幺做的呢?目前的前沿技术又是什幺?

 

本篇Blog将简要的介绍角色动画涉及的相关技术及AI前沿

 

二、状态机动画

 

现在用的最多,技术最成熟的技术就算状态机State Machines动画了。

 

https://docs.unrealengine.com/4.27/zh-CN/AnimatingObjects/SkeletalMeshAnimation/StateMachines/Overview/

 

游戏开发者构造很多的动画片段,然后通过状态机判断当前角色的状态,然后选择播放某一个动画片段。这个动画片段可以是动画师手动k出来的,也可以是通过动捕设备采集的动捕动画。

 

目前手游基本都使用的状态机动画,技术比较成熟,网上也有一些比较好的状态机动画库,比如

 

https://video.zhihu.com/video/1487106716353753088

 

状态机动画有利有弊,

 

好的方面:

 

1. 技术简单,成熟

 

2. 能够在任意平台使用,占用内存较低

 

3. 速度快

 

缺点:

 

1. 动画数量有限,动画切换过渡容易失真,比如脚步打滑,穿模等

 

2. 工程量很大,状态机的状态数量增加,不同状态之间的转换就会指数增加,比如下面这个图,也只是一个基本的locomotion行走的状态机,就很复杂了

 

所以,能不能简化动画的制作流程,提升动画的效果一直是游戏行业研究的方向。Motion Matching便是这样一个变革性的技术。

 

三、Motion Matching

 

Motion Matching是2016年Ubisoft在GDC提出的全新动画技术

 

https://www.youtube.com/watch?v=KSTn3ePDt50

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,做出了一系列的工作:

 

https://www.starke-consult.de/portfolio/index.html

这些工作都非常出彩,一定程度上奠定了角色动画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/虚拟机器人

 

https://www.youtube.com/watch?v=JZKaqQKcAnw

物理动画驱动角色的方式和运动学动画的方式是完全不同的。对于运动学动画,我们直接对角色的姿态进行赋值,比如它的关节位置,而对于物理动画,我们则是像驱动机器人一样控制每一个关节的电机,由关节电机输出扭矩来改变关节的位置,同时这个过程严格受物理定律影响,使得整个动作是完全符合物理定律的。所以物理动画控制角色等价于控制虚拟机器人。

 

当然,物理动画可以泛指所有符合物理的动画,不仅仅是对角色的控制,所以,我们可以看到很多基于物理动画的游戏,比如Besiege围攻,你可以在里面创建各种机械,符合物理规律。

 

Besiege围攻

还有赛车游戏,比如GT7:

 

但是要在人物角色上使用物理动画就比较困难的,因为真的是要控制一个虚拟机器人,而这是目前的技术很难做到的。因此,物理动画往往使用在角色掉落等场景,不需要控制,只是让角色通过物理展现不同的死法。

 

怎幺控制一个虚拟机器人呢?

 

这就要引入深度强化学习Deep Reinforcement Learning了,让虚拟角色在虚拟环境中训练,慢慢的掌握比如行走的技巧,同时引入模仿学习,让角色的行为和人真实的行为相近。

 

这块的开山之作当属Xuebin Peng的DeepMimic,将姿态与动捕的匹配程度及任务目标作为reward来训练角色:

 

https://xbpeng.github.io/projects/DeepMimic/index.html

 

在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

 

Illustration  b y Aleksandr Smetanov  from i cons8

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。