SE分享《ob电竞》新技术:台词语音自动生成角色表情?
ashkeling报道/9月2日到9月4日,日本计算机娱乐协会(CESA)在线上主办了日本最大的面向游戏开发者的会议“计算机娱乐开发者大会2020”(CEDEC 2020)。
本稿件基于会议首日关于《ob电竞》(后文简称《ob电竞》)动作的演讲《ob电竞》的演讲进行报道。
全篇演讲分为两部分,前半部分讲角色的身体动作,由史克威尔艾尼克斯的动画主程序原龙先生进行解说;后半部分讲角色的面部表情,由面部指导岩泽晃先生进行解说。
虽然主要是关于关于开发技术的内容,但其中有意思的内容也不少,《ob电竞》的粉丝也请不要说“没兴趣”,务必读一读看看。
图左为原龙先生,图右为岩泽晃先生
至今为止的动作技术的集合
包括《ob电竞》在内的3A游戏为了让游戏中的动作显得更加真实丰富,都需要给角色制作许多的动作。为了减少这一部分的工作量,开发者们就采用了能够按照预先设定的命令,自动生成动作或者自动补完动作与动作之间的空隙的“procedual动画”技术。
首先是角色的身体动作部分。《ob电竞》使用了大部分游戏都在使用的时下主流的游戏引擎虚幻四。原先生表示,在角色的身体动作上,《ob电竞》中并没有使用什么特别新颖的技术,正如目前在CEDEC中说到的那样,所使用的是现存的技术的集合。
《ob电竞》作为一款RPG,同时也是按下按键会攻击敌人,前推摇杆会闪避敌人攻击的高动作性游戏。因此,只要按下按键,游戏中的角色也必须瞬间做出反应。但是同样要保证不会做出奇怪的动作,不让动作产生破绽。
因此,本作使用了能够补完动作与动作之间的空隙的“惯性补间”技术。以往的方法是将动作与动作自动混合,在其中用动作连接起来,而“惯性补间”简单来说,就是参照即将要混合的动作的姿势数据,将它与下一个动作的最开始混合起来的方法。
惯性补间示意图
使用了这种方法之后,动画能够更加自然,随着OB欧宝体育电竞官网的操作而改变的动作也显得没有违和感了。同时,在面向海外开发者的大会,GDC2018的《ob电竞》系列相关部分也展示了这种方法。
演讲中还按快速、慢速、通常三种速度演示了克劳德挥剑连击的动作,不管哪个挥剑动作都自然流畅。
战斗中则是由方法来决定,简单来说,如果只是要从克劳德挥剑的动作A转变到进行追击的动作B,那么这两个动作之间的动作补间自然也就不难了。但是,在移动的情况下,走、跑、停这样的动作,根据OB欧宝体育电竞官网的操作就需要制作很多的动作了。
因此,在从动作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就没有利用已经实装的内容的机会了。
和其他游戏一样,《ob电竞》中的脚部动作需要感知地面的凹凸,并自动改变脚的位置。此外本作还能仅仅固定脚部的位置,只改变腰的高度。由此在防御姿态中,角色可以在放低腰部同时自然地步行。
此外,还有不移动脚,就能让脚从地面部分离开的技术。此技术在CEDEC2016的《ob电竞》相关部分也有涉及。
Foot IK & Hip Control
检查出地面的凹凸之后进行脚的位置改变。
根据Foot Lock(脚位置固定),对腰的位置进行动态补偿。
战斗中的防御行走动作,沿用了通常的行走动画,不过由于重心下降,将腰的位置下降了10CM左右。
保证了在不移动脚的前提下,Base Height(从脚后跟到脚尖,离地面最近的高度)部分能从地面移开。
在站立或者行走的时候,根据重心脚所接触地面的高度改变腰部位置。
根据倾斜角度回转Root骨骼,对腰的位置进行补正。
Balance
使用Foot IK或者Hip Control之后,身体的主轴会偏移,根据倾斜角对骨骼进行回转补正。
能够设定的项目如下:
对应Pitch的加算值
对应Pitch绝对值的加算值
对应Roll的加算值
ob电竞APP下载引擎上的Control Rig是必须的吗?
能够在运行时间进行补正和调整作业很重要。
即使有了专用的preview环境,有时也会需要在游戏运行的同时调整参数。
积极对游戏引擎内的Control Rig进行了对应的人,在应对环境(背景物或者周围的角色)的变化导致的结果的变化时,也能更快地调整。
敌方被打倒的动画之类,则使用了史克威尔艾尼克斯正在开发中的系统。(这套系统)不是单单使用物理演算将敌人打飞,比如剑击中了敌方的手,(这套系统)能够即时生成手被击打到并倒地的动画。
BodyDriver(物理动画)
技术推进部正在开发中的物理动画系统。
在一部分角色的死亡演出中使用。
和简单的物理演算动画不同,这套系统能够运行时间生成击中手时手被压制、在行走的同时摔倒等等演出效果。
物理限制补正
使用Position Based Dynamics[MHHR07]应用物理限制条件之后进行补正处理。
将物理限制条件预置化并组合后在Mesh中设定为用户数据。
左侧是角色沿着Spline移动时对身体的扭曲进行补正。
一部分的角色同时使用了加算后生成的伤害动作和物理限制补正。
因为根据攻击的方向图像会变化,击中时会给到OB欧宝体育电竞官网很良好的反馈。
因为Mesh空间内物理模拟的负荷很小,因此简单的背景物品也使用了这种技术。
物理的开关、重力、速度之类在gameplay中很容易控制。
PBD是一种先单纯根据速度计算出物理物体的位置,再根据设定好的限制条件迭代并将位置修正之后,根据位置之间的差距确定速度的方法。
这个方法本身比较简单所以稳定性高,因为处理代价小特别适合游戏。
限制条件可以根据游戏内容自行调整,即使那些在物理上不合理的动作也能轻易实现。
此外,角色们的骨骼使用了次世代的技术,如果骨头歪了,当然角色们的肉体也会歪。使用了这种技术之后,能够根据3D角色自动生成更加正确的骨骼,自动生成的动作也能更加自然。
KineDriver(辅助骨)
科技推进部开发的辅助骨系统。
在DCCTool上能够设定实时动作的表现,在游戏实时运行中也能得到同样的结果。
使用本技术前的克劳德的右手稍稍有一点歪。
Bonamik(骨物理)
技术推进部开发的骨物理系统。
在角色的动作整体中使用。
设计者能够轻松使用,根据情况还可以在Notify中调整参数。
使用的是在《ob电竞》中积累下来的技术
参照台词自动生成表情!
以上都如原先生所说,是用已有的技术进行搭配的结果。但是在角色的表情和面部动作制作中,则使用了新的配合。
本作中角色的眼睛不会停止,而是会像人类一样上下左右摇动,不断重复进行眼球运动。此外,(角色们)在和其他人对话时,心理上也会和人类一样,眼神会无意识地飘开。而这些都是实时发生的。
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”已经在各种领域得到应用,十分值得信任了,但在游戏领域的应用,《ob电竞》还是第一个。今后也许在许多游戏中都得到应用吧。
但是也有问题,比如巴雷特常常操着仿佛发怒的腔调,就很容易被判断为发怒的表情;孩子们的声音较为高亢,则很容易被判断为喜悦的表情。
ST Emotion SDK
能够实时运作的感情解析模块。
能够从人声中检测出五种感情,各分为十个阶段。(包括喜悦、愤怒、悲伤、平常、兴奋)
在游戏领域的第一次技术合作就是和本作,此前已经有在许多项目中使用的实绩,十分值得一用。
以上就是本次演讲的全部内容,在您再次游玩《ob电竞》的时候,试着关注一下这些无心的动作或者过场动画以外的表情,也许能从新的角度来享受游戏。
本文来自,本文观点不代表ashkeling立场,转载请联系原作者。