译/依光流
紧接着前几期的分享,本文将分享《赛马娘》如何有效利用有限的开发周期,实现高品质的对话场景制作。
对话剧情的制作涉及多个部门,本次我们将聚焦到动作组、剧本组,来分享3DCG模型的构造、动作的制作、对话场景的制作等内容。先介绍一下动作组,动作组为3DCG部门的其中一个小组。
动作组的主要工作,是制作对话动作、育成演出动作、 围场动作、门口动作、赛跑动作、技能动作、胜利演出动作、演唱会动作、大厅动作、迷你角色动作等,在赛马娘内登场的所有3D角色动作。
此外,剧本组主要负责将事先做好的剧本、角色动作、音乐、场景等要素组合起来,制作成最终的对话场景。
目前,动作组和剧本组正合力制作对话场景,而包括我们在内,所有参与创作赛马娘的制作者们,最重视的就是两个核心:
1,对赛马的尊重。
2,呈现赛马娘的真实存在感。
基于此,制作对话场景的要务,就浓缩成了两方面,其一,在动作方面,必须提高以真实赛马为原型的赛马娘的真实存在感,制作出能让训练师们惊讶和感动的内容品质。我们希望,通过自由组合,能做出「让人感到赛马娘是鲜活的、充满生命力的」动作。其二,在对话场景方面,则需要通过真实存在感的塑造,让训练师形成对赛马娘的喜爱。
为了实现这两个目标,我们来看以下三个部分的制作。
01
3DCG模型的构造设计
要量产对话场景,势必需要让制作好的动作,与大量的赛马娘进行适配。因此,所有的赛马娘的3DCG模型构造,都需要进行统一化处理。然而与此同时,我们又不得不表现出赛马娘不同的个性,因此身高、体型、脸部构造都会存在差异。此外,作为赛马娘的特色要素,耳朵和尾巴也需要负责呈现情感。
更重要的是,这60多名赛马娘,都有着各不相同的决胜服装,要导入共通的模型并不简单。为了攻克这个难题,我们在以下5个方面进行了对策处理。
1.骨骼接点构造。
在量产赛马娘动作的时候,势必需要设计适用于所有赛马娘的泛用动作。制作时首先进行的处理,就是接点构造的统一化。所有赛马娘的接点构造,从各个接点的位置、四肢长度,到整体比例,都是共通的。
身高差的设定,可以通过基于身高的缩放来实现。比如西野花、特别周、菱曙这三名角色,身高设定分别为135cm、158cm、180cm。可以看到她们在同身高设定下的状态,以及适用了缩放以后的效果。
由于接点构造是相同的,即便身高不同,也能适用相同的动作。值得一提的是,实际的赛马菱曙是一匹壮马,在围场里总是显得特别占位置,衍生出不少相关话题。因此角色的大小,也是赛马娘非常重视的细节要素。
此外,每个赛马娘都应用了不同的体型、身高、三围,而头部和身体为了切换服装和体型设计了独立的模型数据。基于节点构造的共通化,通过切换各个参照数据,就可以让模型切换成其他角色。不同赛马娘的不同体型数据,都依靠CSV来管理,可以很方便地一键切换。
做好这些步骤后,大量动作的共通化使用的准备就完成了。
2.表情制作。
为了控制赛马娘表情的变化,游戏中采用基于骨骼接点的移动、旋转、缩放等机制。
表情制作的一个难点是,由于各个赛马娘的眼睛、眉毛形状都不同,接点位置也不同,所以无法使用相同的动画。要改变表情,就需要放置多个接点,要把这些全做成动画,数据量就太庞大了。
因此,我们使用Maya工具的驱动键来解决。它能将选定的多个信息整合起来进行控制,基于这一点,我们实现了直接调用出事先做好的喜怒哀乐等表情的机制。
角色模型组会事先录入被称作表情目标(Facial target)的表情集,其中包含了用来表现喜怒哀乐的眉毛、眼睛的形状;还有表现惊讶等表情时瞳孔变小的各种形态;嘴唇部位也包含了发声的口型、舌头的形状、大小等变量的目标;以及让嘴唇上下左右调节的变量目标等。
这些表情会以驱动键的形式,分别录入左右眼、左右眉、嘴唇等部位。基于这一点,不论哪一名赛马娘,都可以依靠调用相同的驱动键,在保留眼睛、眉毛的形状和位置差等角色特性的情况下,呈现出相同含义的表情。
以下是角色特别周在G2胜利动作内的表情动画,通过调用Maya里录入的驱动键,在动画轴里进行调整表情强弱、呈现时机等细节,就可以像这样呈现出丰富且自然的表情效果。通过这类手法,不仅能明确呈现喜怒哀乐等表情,还可以呈现出更细腻的表情。
3.耳朵。
实际的赛马的耳朵,也被用来呈现赛马的情绪。比如放松时,耳朵会随意乱动,注意到什么的时候,耳朵会往相应的方向竖直。赛马娘也十分重视赛马的细节表现,因此将耳朵定在「无意之间呈现角色情感」的位置。
由于每位赛马娘的耳朵形状不同,所以我们没有使用旋转控制,而是采用类似表情目标的耳朵目标(Ear target)来制作耳朵的形状,耳朵也同样采用驱动键来控制动画。如此,就能实现用耳朵控制情感表现。
此外,除了用驱动键制作的动画外,我们还使用了模拟来呈现摇摆的耳朵动作。比如角色成田大进的耳朵形状改变后,也会基于这个形状产生摇动动作。通过上述的手法,不论在哪个场景,都可以基于耳朵呈现出角色的情感。
4.尾巴。
尾巴的动作,除了用来呈现情感,还可以塑造出角色的可爱性质。因此,我们一边留意实际赛马的动作,一边进行相关制作。为了让尾巴能自然地应对不同状态呈现动作,我们选择仅在尾巴根部进行动画控制,其他部分基本交给模拟动作来实现。如图,仅依靠根部的动画,就能呈现出自然的动作。
不过当动画呈现效果更好的情况出现,我们也会舍去模拟动作而用动画来呈现。比如呈现角色惊讶情绪的时候,尾巴的动作就没用模拟,而是使用动画来呈现的。赛跑时呈现奔跑状态的尾巴动作,也是使用动画来控制的。通过以上手法,就能实现尾巴的丰富情感表现。
5.保持基本构造的手法。
对于前面讲到的结构共通化手法,我们实际上遇到了如下的问题:部分姿势下角色的手会与胸、腰等部位,会基于三围差异、体型差异、服装差异而产生穿模、浮空等问题。解决手法,同样是使用IK碰撞功能。
在本作里,首先会在角色身穿紧身衣的情况摆出姿势,然后再配合其他不同的衣服、体型判断碰撞体,来回避穿模问题。具体来说,就是依据裙摆、腰间的宽度、胸围大小来设定碰撞体,再通过IK设定碰撞效果,进而避开穿模。
如图,对身穿学校泳衣和决胜服的大和赤骥应用相同的动作流,会看到决胜服腰间与手产生穿模,但打开IK碰撞以后,就不再穿模。
又如,相同身高的成田大进和美丽周日胸围不同,美丽周日如果采用与成田大进相同的动作,手便会和胸穿模,打开碰撞效果后,这个问题就解决了。
进一步来看,身穿学校泳衣和决胜服的好歌剧,抱起双手的时候,在决胜服状态下,她的双手会穿进衣服里。与这种动作类似,当手腕位置、手肘位置都需要调节的情况下,仅依靠一个IK碰撞体会很难避免穿模问题。
解决手法,就是在常规动作的基础上,制作分支动作,跟角色ID进行绑定,依靠自动调用分支动作的方法应用,以此极力避免产生穿模的问题。实际来看,打开分支动作功能时,穿模的问题得到了解决。
通过上述IK碰撞和分支动作的手法,就可以一边维持相同动作的基本构造,一边消化体型差异的问题。
总体来看,通过活用节点构造的统一、驱动键、IK碰撞等手法,我们实现了让所有赛马娘适配相同模型构造的目标。然后在耳朵尾巴等部位,平时使用模拟实现摇动和情感呈现,必要的时候随时可以设定动画效果。最后通过IK碰撞和分支动作,在保留服装、体型特征时,呈现出了毫无破绽的动作。整体上,提高了赛马娘的真实感、存在感。
02
如何高效量产动作
说到为什么要量产动作,原因是要配合剧本、配音,去呈现角色最自然的、宛如天生的动作,进而让演技的真实感大幅加强。为此,我们必须制作大约1200个动作,而且不单单是做到这个数量级,更重要的是,我们还必须搭建一套能极其自然地、高效地衔接不同泛用动作的机制。
结合当时一些失败案例,我们来具体看对应的制作手法。
制作动作,一般用到的都是手K和动捕两种手法。赛马娘里,奔跑的动作是完全手K出来的。作为游戏基底的奔跑动作,需要呈现出每小时70Km的奔跑感和真实性,因此这种正常人无法持续进行的奔跑动作,有必要完全以手K的形式制作。
所以相比一般的动作制作,这种理想化高精度的制作手法,缺点就是花的时间非常多。
此外,由于动捕方便高效,因此在赛马娘里除了奔跑以外的几乎所有动作,全都交给动捕来制作。
要注意的是,包括动画感浓烈的技能特效动作,以及其他非现实的动作,我们都会通过动捕来录制,但并非录制好了就用,而是会进行相当程度的处理后,再来使用。
由于动捕只做速度快,所以能够快速实现剧作和文案的需求,如下图摔东西、挥扇子跳舞、举打分牌子的动作,都可以轻松地应对。基于这一点,我们才能快速做出约1200种动作。
接下来,我们继续分享如何让这1200种动作更自然地呈现出来,具体分为五个部分:
1.镜像动作。
镜像动作/左右反转动作,会在动作制作的过程中自动生成,也就是我们制作一种动作,就会自动生成两种动作。这样一来,就可以通过翻转来避免赛马娘动作对身边角色的影响,制作的时候也增加了动作选择空间。
要注意的是,镜像动作并不包含在刚才提到的1200种动作里。
2.姿势动作。
角色独特的站立姿势,换言之也是能用在各种各样的场景中的待机动作,比起通常的循环动作来说,我们会把它的动作幅度做得更大一些。
在角色对话的时候,由于幅度大,可能看起来显眼且别扭,所以我们会让循环动作先输出最初的一帧,然后让它与循环动作进行叠加运算,小幅度控制循环。由于不需要分别制作强弱的分支动作,所以也能节省制作时间和数据容量。
3.手的覆盖。
这一功能可以指定手部拿住小道具的位置,并将指定位置的模型和动作数据进行覆盖。这样一来,就可以让在角色拿着水瓶的情况下,覆盖现有动作,同时就生成了角色自然地拿着水瓶,并进行动作演出。
4.叠加动作。
主要指的是,把头部的角度变化、点头摇头等动画,叠加到现有的动作上。不仅是头部,也能实现身体的倾斜等自然的叠加效果。不过要注意,泛用动作本身不会改变手脚的IK设定,因此手的位置不会变化。
5.对话动作的构成。
游戏中,所有赛马娘都会制作一个独有的待机动作/站姿。从待机动作开始,要迁移到配合对话和角色情感的对话动作,通常都需要制作衔接动作,这样一来,就需要基于所有角色独立动作的衔接动作。相当于需要角色数乘以衔接数这一庞大的动作数量,放在实际情况下,势必会占用能制作的动作总数。
如果用混合处理,由于它的数据储存是线性的,所以会导致动作衔接变得非常机械。比如下面的动图里,就产生了手插在身体里这类正常人不可能出现的破绽。
于是,我们把所有的对话动作,都设计成由开始、循环、结束三个部分组成的结构。开始部分,包含了衔接其他动作所需要的类似预启动的动作。循环部分,则是最初与最后都是相同姿势的连续动作,即在特定动作做完之后仅剩下呼吸动作、走路动作等反复持续动作的状态。结束部分,则是彻底停止循环内的动作后,重新以动作匹配到开始部分,以确保其他动作能够顺利衔接。
把相同的姿势设置在动作的开始和结束,通过混合开始和结束两个二部分,就不会出现穿模,也能够大幅度减少动作衔接的不自然感,顺利衔接到其他所有动作上。
接下来具体看一个泛用动作的实用案例。
随着赛马娘的开发,制作组在闲聊的时候偶然提到「想试试3D的变形」,然后逐渐发展出「对角色各个地方使用缩放」的情形,最后就诞生了赛马娘的迷你角色。迷你角色会在游戏中匹配画面、社团画面中出现。
这些角色,一般都是删除了不需要的骨骼节点构造,维持剩下的各个部位时,对各个骨骼的比例进行缩小以后制作出来的。只不过,直接使用这么做出来的迷你角色,会出现脸和手穿模的问题。
于是我们在Maya上给骨骼埋好IK碰撞体、打开对应功能,就做出了一套能直接沿用动作的系统。修改起来相当轻松。
沿用之后,再配合迷你角色的特征,将动作调快、调得更戏剧化,就完成了整个迷你角色的制作。
以下这首迷你角色代表曲的制作,也全靠现有动作的沿用系统,只用很少的工序就制作完成了。最终,我们彻底实现了可爱又自然的迷你角色。
总体来说,我们首先以动捕为基础量产了大量的泛用动作;然后运用镜像、叠加、覆盖等形式,增加了动作的变种;最后利用衔接动作,实现了动作之间的自然过渡。此外,这套工作流还让我们在低成本、短周期的前提下,制作了迷你角色。
03
对话场景的制作实例
赛马娘发售之初,便受到很多玩家的好评,其中不仅充满魄力的赛跑场景、演唱会演出效果深受喜爱,基于高品质3D角色制作的对话场景,也成了游戏的一大魅力。下面就来分享一下,这些对话场景是怎么做出来的。
赛马娘的对话场景分为纵画面和横画面两类。
其中,纵画面包括主线剧情场景、养成场景、辅助卡剧情等。由于纵画面对话场景会出现在赛马娘养成过程中,所以更重视画面的热闹感,也就是主要设计成强调赛马娘动态印象的逻辑,基本上,每一句文本,相对应的角色表情和动作都会变化一次。
此外,由于养成中播放的脚本量非常多,所以这部分里,语音用到的是对应情感和场景的声部,赛马娘的演出,用到的是事先准备好的表情动作组。这种手法的烘托下,养成的进展便能给人很强的节奏感。
横画面对话场景,则包含了赛马娘故事、除了一部分比赛场景的主线剧情,以及活动剧情。横画面的对话场景,相比纵画面,几乎不存在演出手法上的限制条件,语音采用全语音模式,赛马娘的演出也配合脚本进行了单独设计。此外,主线剧情里还用到了运镜,呈现出TV动画的完成度。
如前文所说,剧本组的任务,就是把各种要素组合起来,制作出对话场景。而对话场景的制作量不仅特别大,还要想办法让所有的对话场景,都能给玩家产生对赛马娘的喜爱,都要做出真实感。
尽管现在我们已经建立好能实现这些目标的制作环境,但在开发早期还不够完善。开发早期我们采用了常规的文本制作流程,但是要制作基于3D的对话场景,文本形式的制作有很多缺点。首先是测试的时候要在Unity上导入一遍文本,而且如果要仔细检查,每次都要花20分钟左右的时间。此外,在实际测试确认之前,需要靠想象来设定表情和动作,越是不擅长想象,试错成本越高。
在制作大量文本的时候,这些问题更加严峻。为了解决这些问题,剧本组、动作组、技术美术组综合了各方意见,向程序提出需求,制作了自主工具「对话场景编辑器」。这套工具可以实现包括动作、表情、背景和静止画、BGM和SE、镜头特效等,制作对话场景时要用到的所有演出设定。
下面大致分为两块来说明一下这套工具的特征。
第一点,也是最大的特点,是可以依靠直觉来操作和编辑。对话场景编辑器,可以在Timeline上实时编辑和显示各种设定。这样一来,测试运行的时间成本为0,还可以随时确认整体光感来进行操作。
除了常规的播放外,还可以在任意时间点确认运行情况,所以也能利用它检查动作和表情的衔接细节。此外,各种快捷键一应俱全,所以替换、调整等编辑操作也非常简单。
第二点,是可以实现极其自然的动作衔接。如下是动作编辑画面,对话场景编辑器由于采用Timeline形式,所以也可以对时间轴进行可视化的管理。比如动作的混合区域等于两条动作轴的重合区间,这样一来,伴随可视化管理,动作衔接的调整也更方便。
如下图,文本形式的编辑下,必定会用到相同的动作数据,比如衔接到相同的站姿时,就会出现图片左侧手腕不自然抬起的现象。使用自主编辑器后,完全可以做到不调用结束动作和开始动作的表情,就像图片右侧一样,能做到完全自然的动作衔接。
这里我们只展示了衔接到站姿的案例,但实际上不仅限于此,伴随动作的组合,制作者可以打磨出任意的衔接方式。这些就是自主编辑器的特征。
最后,我们通过三个案例,来看一看实际上用了这套工具以后,我们开发的对话场景产生了多大的变化。
第一例是川上公主的个人剧情。为了表现她的活泼感,我们用到了单手叉腰、举起拳头等各种动作的连续组合。用了这么多动作仍然显得自然,也是多亏了对话场景编辑器「不用夹带特定动作也能衔接多个动作」的功能。
第二例是爱丽数码的个人剧情。她是一个表情非常丰富的角色,因此我们最大限度使用工具,呈现出了最符合她性格的原创表情,不仅如此,由于我们还针对语音和场景对她的表情进行了细微的逐一调整,使得她的表情不论切下哪一段,都能和其他所有表情不相雷同。
最后一例是一段活动剧情。尤其是在活动剧情中,由于基本会有各种各样的赛马娘登场,所以在一名角色说话的时候,也需要特别注意加入其他听众的演出细节,这样才能保证不丢失赛马娘的真实感、存在感。
总体来说,为了实现惹人喜爱的赛马娘对话场景,我们使用了自主研发的对话场景编辑器,编辑器能实时确认编辑内容,并加入了很多能凭直觉操作的系统和功能。基于这一点,哪怕是没有3D动作制作经验的员工,也能用过工具制作出如上完成度的对话场景。
本次分享内容就到此为止了。为了让赛马娘表现得更有魅力,可以说我们在各个方面都倾尽了全力,而且我们在今后也会持续创造出大家未曾见过的、充满魅力的赛马娘。「一切都为了不断奔跑向前的赛马娘!」
文本作者:游戏葡萄V