渲染TA实战:角色表情制作工艺技术简析

大家好,我是来自畅游引擎部的TA小强,很荣幸能在这里跟大家分享我们关于游戏角色表情的制作流程,以下是本次分享的全部内容。

概述

角色表情在CG制作中一直都是团队绕不开的话题,大到一个CG电影,小到一个动画短片,都离不开情绪的传递,然而表情在其中就担当了主要的情绪传输媒介,优秀的表情表现会让一部作品锦上添花,甚至一个角色的收眼睑动作,都会让人印象深刻。

目前游戏中的表情制作常用的有两种制作方式,骨骼权重和网格变形(网格变形即Morpher,Blendshape,以下简称BS),两种制作方式不同,都可以实现非常优秀的表情,但是因为使用场景不同,发挥功能也就不同,按目前游戏来说,脸部的骨骼一般用于捏脸,如果再用来控制表情的话会导致骨骼权重分配冲突,然而利用Blendshape制作表情就很好的解决了这个问题,所以现在很多游戏都是利用骨骼捏脸,利用Blendshape进行表情制作!

本文重点讨论的是在有限的硬件条件上,如何平衡表情制作的精度和速度(不涉及过渡表情,表情绑定和Wrinkles),所以本文针对网格变形的表情制作方式进行制作和探讨,无论是哪种制作方式对模型的制作都有一定的要求和规范,由于项目模型涉及泄密的风险,本文案例我们使用的是《死亡搁浅》游戏中的马琳根为原型进行探讨,表情,面部绑定,渲染是由引擎部TA从业者制作完成(封面采用Maya内阿诺德渲染)。

研发阶段

开始注意到表情是通过Unity的一个韩国项目开始的,研发过程我们走了不少的弯路,试图尝试各种办法进行BS的制作,效果都很差,且没有可迁移性,后来经过不断的摸索和学习,我们接触到了《Anatomy of facial expression》和《面部表情编码系统》这两本关于解剖和编码的书籍,简单的说,前一本书告诉我们面部是由什么构成,后一本告诉我们肌肉是如何运动,通过对理论知识的学习,我们了解了人类面部的复杂构成以及面部肌肉的结构和运动走向,明白了原来人类的表情变化也可以被程序化,科学家们把面部分成了不同的单元即AU,每个单元都是一个独立的运动体系。我们在笑的时候就是AU6(收下眼睑)+AU12(提拉嘴角)+AU25(分开嘴唇)的组合,那么这些组合是什么呢?

之所以人最终所呈现的笑并不相同,是因为有长相的原因,有运动单元运动的幅度的因素,也有人类习惯,或先天疾病的因素等,所以最终表现出来就千差万别,综上所述,我们制作Blendshape的时候制作的是什么呢?制作的是每一个移动的AU单元,后期利用绑定和动画的配合将这些AU单元有序有规律的运动起来,就形成了表情,有了这套理论基础,就为我们后续角色的喜怒哀乐悲恐惊的表情奠定了基础!(推荐美术从业者去了解一下本文提到的相关书籍,可以为建模和表情动画提供很好的帮助)。

*运动规律在面部表情编码系统中有很多的介绍也讲解了很多案例,如果我们把面部表情系统学透,相信我你可以做测谎专家,和微表情分析师,在你以后的人际关系中不再有谎言,不过一个好的演员是可以骗过微表情分析师的,有时候为什么有的表情动画看起来会别扭,就是因为违背了现实的运动规律。

模型制作阶段

通常这个阶段是由项目完成,项目会针对模型的主配角进行模型精度的划分,主角网格数量会稍微高一些,配角网格数量偏低,这样可以节省一些硬件性能,但是弊端就是主角和配角的表情表现参差不齐,角色表情的品质与模型的布线精准度有很大的关系,例如一个6面立方体无论如何也调不成一个圆形,反过来却很容易实现,当然不推崇案例模型那么高的面数,但是一个适当的面数和一个标准的模型布线对于模型表情品质的提升会有很大的帮助。

模型布线

1)模型布线没有统一标准,但是布线要合理,布线应本着动则平均,静则结构(参考图一)变形幅度大的局部需要采用平均且线量充沛合理的延伸走向来布线,保证能够最大幅度的运动变化。形变少的地方,只需保证布线可以交代物件的结构变化即可,布线的运动延伸性不用考虑的那么周全。眼轮匝肌以及口轮匝肌周围运动幅度较大布线要密并且要走圈线(如图二),颧骨附近头盖骨等地方适当稀疏。图三中由于眼轮匝肌周围布线偏少,角色在闭眼时会导致贴图拉伸或者抖动。

2)五星,三星,多边形,三角面(如图四-1)的处理上需要注意多边形建模一般要兼顾圆滑,但是五星,三星,多边形,三角面,就很容易出现不平整,产生瑕疵,五星,五边形在表情上会很难控制,不能很好的伸展,一般哪里出现五星点,伸展便会在哪里截止(如图四),眼睛的伸展在黄色地方停止,脸部微笑伸展到眼部下方的五星点截止,在不可避免的情况下,尽量通过搭线的方式将五星,三星点藏在肌肉运动幅度较小或者主视线以外的地方(藏线切忌不要藏在嘴角和眼角处)。

Blendshape制作阶段

这阶段我们利用maya进行角色表情的制作,与项目进行沟通表情模板,目前我们制作表情模板分为33,40,60,90个,这些都是目前项目定制化模板,定制内容分为表情个数,名称,形态。一旦项目进入生产环节,所有角色表情即都按照此模板进行,有助于项目表情的统一化管理,以支持表情动画在unity里可以复用。

模型检查

1)拿到项目模型初期要对模型进行基本检查,是否有未合并的点,是否有历史,是否有未拆分的模型(牙齿,舌头,睫毛,眉毛)

2)项目通常会利用max进行模型制作,max和maya利用的不是统一的坐标系,所以模型通常导入maya在Y轴会有一个-90度的数值,我们需要冻结坐标(FreezeTransformations)并删除历史(History)。

Wrap包裹

1)我们会用模板模型包裹项目模型(图五为包裹变形前,图六为包裹变形后的模型)包裹完成后不难看出两个模型外形已经非常接近。

传递表情

1)maya中利用我们的插件进行表情权重的传递,传递之后项目模型就拥有几百个Blendshape(全部过程需要30分钟)

2)我们依据《面部编码系统》这本书总结了一套BS标准,在几百个BS中精选出60个BS做为基础模板(如图八)。

3)下图为我们基础模板的展示图片,模板可根据眉毛,眼睛,和口型,进行分类,当然项目可以根据自己项目需求定制BS。定制的好处在于,项目模型表情可以统一化管理,在unity里制作表情动画时角色表情可以通用,项目中期如果修改模型,表情动画也是可以继承的。

4)下图为了配合Unity制作口型动画,我们增加了口型BS,有了这些口型之后,插件识别口型会非常准确,打破了大家对手游固有的口型印象

5)然而我们在基础模板之上根据人类几种特定表情(喜怒哀乐悲恐惊)又拓展了30个表情模板。(图七)

6)下图为拓展表情测试效果。

美术资产整合

资产生成BS后,需要对资产进行整合处理,包括精修BS,合并模型,冻结坐标等相关操作。

1)插件最近增加了一键生成眉毛和眼睫毛的功能,根据眼睛和眉毛的状态会匹配眼睫毛和眉毛状态,这为调整每个BS的睫毛和眉毛节省出时间(下图睫毛状态为新增一键生成功能结果展示)

2)精修BS

i. 生成的BS修复的成本不高(单纯的修复并不难,难点在于美术对角色单个BS的艺术把控),修复工具大家使用自己熟悉工具即可,着重注意修复闭眼(闭眼之后双眼皮眼线等贴图拉伸问题要着重考虑一下)和Puff(这个太难了,我曾经把一个武侠女的这个表情修成了年画娃娃)

ii. mouthClose这个BS要配合jawOpen去调整(在jawOpen参数为1时修复mouthClose,简单调整即可,切忌不要过度去修)

iii. 如果是单面BS,修复一面即可反相过去,例如eyeBlink_L反向到eyeBlink_R,如果是对称BS可以修复一边然后镜像到另一边

iv. 注意事项:在修复嘴巴或者脸部的BS时一定要注意线框显示模式下看一下角色的鼻腔内部是否有位移(如下图)

v. 角色眼睛也要用骨骼进行绑定,因为在unity中我们要做眼神闪动,绑定师绑定眼睛一定要保证骨骼在眼球中心点,不然眼球转动会出现位置偏移

vi. 在修复模型阶段,角色的眼睛也要根据BS进行调整,例如在修复eyeLookUp,eyeLookDown,eyeLookLeft,eyeLookRight的同时要把眼睛的旋转调整好,因为在unity制作表情过程中我们的眼神朝向和牙齿的张合也是利用BS制作的,这样我们可以在unity中通过调整一个参数同时完成眼睛和眼皮的两个独立动作。

3)合并模型:

合并模型首先要保证一点就是Mesh的顶点ID不能被改变,角色模型和BS模型合并之后顶点ID必须一致,否则BS添加会出现错误。

4)冻结坐标:

合并模型之后模型坐标点会有所改变,这样如果直接添加BS会导致错误,依然要Freeze Transformations。

5)交付项目:

这个时候就可以整理一下资源,就可以交付给项目使用啦!

欢迎加入我们!

感兴趣的同学可以投递简历至:CYouEngine@cyou-inc.com

#游戏引擎##引擎开发工程师##游戏开发##技术美术#
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
预计下个星期就能开奖吧,哪位老哥来给个准信
华孝子爱信等:对接人上周说的是这周
点赞 评论 收藏
分享
听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
13 9 评论
分享
牛客网
牛客企业服务