SE分享《FF7 RE》新技术:台词语音自动生成角色表情?

GameLook报道/9月2日到9月4日,日本计算机娱乐协会(CESA)在线上主办了日本最大的面向游戏开发者的会议“计算机娱乐开发者大会2020”(CEDEC 2020)。

本稿件基于会议首日关于《最终幻想7 重制版》(后文简称《FF7 RE》)动作的演讲《<FINAL FANTASY VII REMAKE>中的角色动画技术》的演讲进行报道。

全篇演讲分为两部分,前半部分讲角色的身体动作,由史克威尔艾尼克斯的动画主程序原龙先生进行解说;后半部分讲角色的面部表情,由面部指导岩泽晃先生进行解说。

虽然主要是关于关于开发技术的内容,但其中有意思的内容也不少,《FF7 RE》的粉丝也请不要说“没兴趣”,务必读一读看看。

图左为原龙先生,图右为岩泽晃先生

至今为止的动作技术的集合

包括《FF7 RE》在内的3A游戏为了让游戏中的动作显得更加真实丰富,都需要给角色制作许多的动作。为了减少这一部分的工作量,开发者们就采用了能够按照预先设定的命令,自动生成动作或者自动补完动作与动作之间的空隙的“procedual动画”技术。

首先是角色的身体动作部分。《FF7 RE》使用了大部分游戏都在使用的时下主流的游戏引擎虚幻四。原先生表示,在角色的身体动作上,《FF7 RE》中并没有使用什么特别新颖的技术,正如目前在CEDEC中说到的那样,所使用的是现存的技术的集合。

《FF7 RE》作为一款RPG,同时也是按下按键会攻击敌人,前推摇杆会闪避敌人攻击的高动作性游戏。因此,只要按下按键,游戏中的角色也必须瞬间做出反应。但是同样要保证不会做出奇怪的动作,不让动作产生破绽。

因此,本作使用了能够补完动作与动作之间的空隙的“惯性补间”技术。以往的方法是将动作与动作自动混合,在其中用动作连接起来,而“惯性补间”简单来说,就是参照即将要混合的动作的姿势数据,将它与下一个动作的最开始混合起来的方法。

惯性补间示意图

使用了这种方法之后,动画能够更加自然,随着玩家的操作而改变的动作也显得没有违和感了。同时,在面向海外开发者的大会,GDC2018的《战争机器》系列相关部分也展示了这种方法。

演讲中还按快速、慢速、通常三种速度演示了克劳德挥剑连击的动作,不管哪个挥剑动作都自然流畅。

战斗中则是由方法来决定,简单来说,如果只是要从克劳德挥剑的动作A转变到进行追击的动作B,那么这两个动作之间的动作补间自然也就不难了。但是,在移动的情况下,走、跑、停这样的动作,根据玩家的操作就需要制作很多的动作了。

因此,在从动作A能够转变到动作B、C、D这样有多个候补动作候补的情况,就要一并使用“Pose Matching”技术来比较后续动作之前的姿势,来自动选出一致的动画。

比较要转变为的动作的姿势(Pose Matching)

要转变成为的动作有多个候补的情况下,对姿势进行比较之后自动选出。

根据角色单位,可以指定追加候补动作。(Scalable)

设定Notify之后能够追加或者限制要转变为的候补的帧数。

进行姿势比较时不需要比较所有的骨骼,可以在设定时进行指定。(比如两足步行时只需要比较下半身的基本骨)

惯性补间+Pose Matching

在补间前后的姿势差距不大的情况下,惯性补间加算的值接近0,因此就算blend时间很长也不会产生违和感。

默认blend时间设定的稍长。

Locomotion = 12F(0.4sec)

Field & Battle Action = 9F(0.3sec)

Field Cinema = 30F(1.0sec)

原先生接着介绍了奔跑动作、脸的朝向、在斜面上的平衡保持等等更加细致的动作技术。

移动输入补正

根据控制器或者AI的输入对骨骼单位的回转补正进行设定。

在preview环境中,在角色做出动作的同时实时编集。

设定可通过IK Control Rig共享。

Look At

补间逻辑只有惯性补间和线形补间。

每个骨骼的重要和角速度都能设定。

在使用惯性补间的时候可以根据结束为止的时间设定Randombias。

角度限制用Pitch和Yaw进行区分。

为了维持动作姿势,可以在Mesh空间中计算骨骼的朝向。

Aim

补间逻辑只有EaseOut和线形补间。(因为对象一直在动所以不适合使用惯性补间)

在设定时对Aim Group进行定义,再从Notify中指定呼出Aim Group。

能够单独设定group×骨骼的重量和角速度。

Hand IK

算法使用了FABRIK。

IK Target有两种:

  指定global坐标的Manual设定。

  指定effector相对位置的Lock设定

因为Lock追踪的是补正之前的位置,故而可以完成因为Look At或者Foot IK姿势发生了变化时的回溯。

FABRIK(Forward And Backward Reaching Inverse Kinematics)

对照IK Target移动末端骨骼时,不使用回转行列就能将各骨骼的位置配置并决定到线上的方法。

因为不需要逆行列计算,只需要很少的计算就能得到近似解。

本案例中在 Hand IK/Foot IK中使用。

因为Sub Base,Fullbody IK就没有利用已经实装的内容的机会了。

和其他游戏一样,《FF7 RE》中的脚部动作需要感知地面的凹凸,并自动改变脚的位置。此外本作还能仅仅固定脚部的位置,只改变腰的高度。由此在防御姿态中,角色可以在放低腰部同时自然地步行。

此外,还有不移动脚,就能让脚从地面部分离开的技术。此技术在CEDEC2016的《生化危机7》相关部分也有涉及。

Foot IK & Hip Control

检查出地面的凹凸之后进行脚的位置改变。

根据Foot Lock(脚位置固定),对腰的位置进行动态补偿。

战斗中的防御行走动作,沿用了通常的行走动画,不过由于重心下降,将腰的位置下降了10CM左右。

保证了在不移动脚的前提下,Base Height(从脚后跟到脚尖,离地面最近的高度)部分能从地面移开。

在站立或者行走的时候,根据重心脚所接触地面的高度改变腰部位置。

根据倾斜角度回转Root骨骼,对腰的位置进行补正。

Balance

使用Foot IK或者Hip Control之后,身体的主轴会偏移,根据倾斜角对骨骼进行回转补正。

能够设定的项目如下:

对应Pitch的加算值

对应Pitch绝对值的加算值

对应Roll的加算值

游戏引擎上的Control Rig是必须的吗?

能够在运行时间进行补正和调整作业很重要。

即使有了专用的preview环境,有时也会需要在游戏运行的同时调整参数。

积极对游戏引擎内的Control Rig进行了对应的人,在应对环境(背景物或者周围的角色)的变化导致的结果的变化时,也能更快地调整。

敌方被打倒的动画之类,则使用了史克威尔艾尼克斯正在开发中的系统。(这套系统)不是单单使用物理演算将敌人打飞,比如剑击中了敌方的手,(这套系统)能够即时生成手被击打到并倒地的动画。

BodyDriver(物理动画)

技术推进部正在开发中的物理动画系统。

在一部分角色的死亡演出中使用。

和简单的物理演算动画不同,这套系统能够运行时间生成击中手时手被压制、在行走的同时摔倒等等演出效果。

物理限制补正

使用Position Based Dynamics[MHHR07]应用物理限制条件之后进行补正处理。

将物理限制条件预置化并组合后在Mesh中设定为用户数据。

左侧是角色沿着Spline移动时对身体的扭曲进行补正。

一部分的角色同时使用了加算后生成的伤害动作和物理限制补正。

因为根据攻击的方向图像会变化,击中时会给到玩家很良好的反馈。

因为Mesh空间内物理模拟的负荷很小,因此简单的背景物品也使用了这种技术。

物理的开关、重力、速度之类在gameplay中很容易控制。

PBD是一种先单纯根据速度计算出物理物体的位置,再根据设定好的限制条件迭代并将位置修正之后,根据位置之间的差距确定速度的方法。

这个方法本身比较简单所以稳定性高,因为处理代价小特别适合游戏。

限制条件可以根据游戏内容自行调整,即使那些在物理上不合理的动作也能轻易实现。

此外,角色们的骨骼使用了次世代的技术,如果骨头歪了,当然角色们的肉体也会歪。使用了这种技术之后,能够根据3D角色自动生成更加正确的骨骼,自动生成的动作也能更加自然。

KineDriver(辅助骨)

科技推进部开发的辅助骨系统。

在DCCTool上能够设定实时动作的表现,在游戏实时运行中也能得到同样的结果。

使用本技术前的克劳德的右手稍稍有一点歪。

Bonamik(骨物理)

技术推进部开发的骨物理系统。

在角色的动作整体中使用。

设计者能够轻松使用,根据情况还可以在Notify中调整参数。

使用的是在《最终幻想15》中积累下来的技术

参照台词自动生成表情!

以上都如原先生所说,是用已有的技术进行搭配的结果。但是在角色的表情和面部动作制作中,则使用了新的配合。

本作中角色的眼睛不会停止,而是会像人类一样上下左右摇动,不断重复进行眼球运动。此外,(角色们)在和其他人对话时,心理上也会和人类一样,眼神会无意识地飘开。而这些都是实时发生的。

Saccade(眼球运动)

视线移动时,眼球会在短时间内不断重复移动和停止。(12.5-17.5Hz)

已经移动过的角度会产生限制。

仅在移向视线指向的对象物体时会线性移动。

因为Micro Saccade,视线在没有移动的时候眼球动作也不会停止。这时移动和停止的周期比Saccade还要短。(0.5-3.0Hz)

Gaze diversion(移开视线)

即使在注视着什么东西时,视线也会无意识移开。

特别是在对话时,视线的移开是一种无声的交流,如果凝视对方则是敌对心的表现。

因为完全按照条件来会造成较重的负担,根据时间随机移开视线就不会有这种问题了。

眨眼基本上是随机发生。在突然改变视线的位置或者脸的朝向时也会眨眼。此外,(眨眼时)也不会到完全合上眼皮的程度,而是会保持眼睛仍然稍稍张开,在此前提下,结合动作blend技术和一些随机要素,游戏中会发生各种各样的眨眼。这些都是根据身体的动作和脸的朝向自动生成的。

眨眼

随时间经过周期性眨眼,在2-10秒内之中随机发生。

因为剧烈的眼球运动而发生的反射性眨眼。在Look At对象位置发生大幅移动时发生。

在完全闭眼的眨眼发生时无视Saccade的移动角度限制。

根据身体动作自动生成Saccade

根据身体和脸的朝向自动生成眼球运动(saccade)。

Jenkin中所有对应身体动作的curve都经过bake。

在没有从AI处得到Look At要求时使用。(fieldgimmick或战斗动作)

此外可以说是本次演讲的一大焦点的则是一个叫做“HappySadFace”的自动口型(lip synchronization)生成系统(和角色台词的声音对应,好像正在说出这种语言一样的口型)。

这个口型是参照声音数据和文本输出数据,生成的口型动画。演讲中还展示了本作支持的日语、英语、法语、德语四种语音下同样的台词对应的克劳德的不同口型。

日语语音对应的口型

英语语音对应的口型。能看到英语特有的咬下唇的动作。

HappySadFace(自动口型)

科技推进部开发中的自动口型系统。

从声音和文本中输出专用格式,用Maya和虚化4生成口型动画。

支持日语、英语、法语、德语。

因为时间线数据是简单的文本数据,为了使动画整体更加流畅可以整体进行过滤。

HappySadFace(自动口型)

因为从语音中将音素抽出的形状数据的目录被做成了时间轴,如果改变了形状数据,(口型)也会同样变化。

音素与形状的对应表根据语言的不同分别制作。

为了表现因感情产生的表情变化,形状数据的预设也做了替换。

有了这个系统之后,即使不用人工去做,也能做出与语言对应的大量台词的口型。但是“HappySadFace”也还有作为参考的文本数据可能有错误,声优如果即兴发挥,口型的对应就会变难的问题。而且,自动生成的口型如果出现不与语音对应的错误的话,目前只能通过人眼看来发现。

此外,还有能够从语音的音量自动生成眉毛动画的“ST Emotion”技术,这一技术还可以从声优们的声音中推定感情的参数,自动对感情的表情进行blend。由于有此技术,就算仅仅有台词,也能在任何场景都用很像人类的表情表现角色们的对话。

根据语音音量生成眉毛动画。

感知语音的起始,根据音量生成眉毛上扬的加算动画。

因为是加算所以在一小段时间内连续重复放送也没问题。

准备好眉毛上扬状态的姿势动作,根据blend率进行加算。

根据语音音量生成上半身加算动画。

感知语音的起始,根据音量生成上半身前后倾,头和脖子扭动的加算动画。

因为是加算所以在一小段时间内连续重复放送也没问题。

加算值用IK Control Rig作为预设定义。具体再放送哪个预设,需要在再放送时随机决定。

根据声音生成表情动画。

使用ST Emotion根据声音推测感情。

对符合感情参数变化的各种表情进行blend。

感情参数并不是以一种语音为单位,而是一种时间轴数据,所以即使在一种语音中也会出现表情的变化。

虽然推测的精度能够达到70%,但如果发生差错,表情的含义可能完全不同。

以上的表情都是由设计者指定后手动输入的,场景也很宏大,但游戏中也有不进行指定就进行对话的场景。如果将以上技术全部结合起来就能够不用过场动画,在吃饭、动作、自然的对话等等场景中品味表情丰富的对话了。

使用这些技术之后,表情更有人味

岩泽先生表示,“ST Emotion”已经在各种领域得到应用,十分值得信任了,但在游戏领域的应用,《FF7 RE》还是第一个。今后也许在许多游戏中都得到应用吧。

但是也有问题,比如巴雷特常常操着仿佛发怒的腔调,就很容易被判断为发怒的表情;孩子们的声音较为高亢,则很容易被判断为喜悦的表情。

ST Emotion SDK

能够实时运作的感情解析模块。

能够从人声中检测出五种感情,各分为十个阶段。(包括喜悦、愤怒、悲伤、平常、兴奋)

在游戏领域的第一次技术合作就是和本作,此前已经有在许多项目中使用的实绩,十分值得一用。

以上就是本次演讲的全部内容,在您再次游玩《FF7 RE》的时候,试着关注一下这些无心的动作或者过场动画以外的表情,也许能从新的角度来享受游戏。

 

 

 

本文来自,本文观点不代表GameLook立场,转载请联系原作者。

关注微信