UE4 实时虚拟角色材质篇之 Skin Material(二)面部动画贴图融合

作者:转载小公举
2020-01-05
4 2 0

作者:DanSon Tang

这篇文章将介绍 UE4 中对于数字的人制作面部表情部分。

原文来自知乎专栏 UE4 笔记,已取得作者 DanSon Tang 授权发布。

正文

在上一篇文章中我们完成了皮肤材质的制作,虽然看起来大体完成了,但是在真正3A 级游戏或者是影视的制作过程中。不论是过场动画还是影视镜头都会有人物对话的部分。所以面部都会产生相应的表情。

在制作过程中,面部表情的捕捉有多种方法,一种是绑定过后,通过插件的方式,搭配顶点变形器和骨骼做相应的动画,或者做多个模型使用 maya blendshape 进行制作。再或者如果有更好的设备可以使用面捕设备进行表情捕捉。不同的表情对应着不同的贴图。比如下面的图,他就可以对应到不同的表情贴图上。

在真正的制作过程中,最后的效果和整个流程有关,比如你在面捕的时候捕捉了多组表情数据,但是在贴图的过程中,却没有考虑到需要多少张贴图。导致最后表情动画是有了,但是没办法把皱纹显示出来,就会让玩家或者观众感觉到很奇怪。所以前期的工作需要筹备好。这篇文章中不会讲解前期的筹备过程,但是在文章的最后会有一个表情归类的文档已经整理好了。接下来主要是讲解贴图和材质的制作。

当面捕数据导入到引擎过后,我们需要在材质进行贴图的融合,根据不同表情去动态改变模型上的贴图。一般情况下会有表情贴图会有 4 张贴图,如果需要做到更细,可能会更多。漫反射4张,法线贴图4张,粗糙度贴图 4 张。根据顶点变形器的权重值去动态改变不同区域的贴图。比如,下面这张图:

她这个表情对应到的就是鼻子两侧凹陷处的法线。所以我们对应到的就是下面这张贴图红圈部分:

所以对这些贴图我们要做相应的 Mask 贴图,去映射到这些贴图的不同区域。我现在捋一下整个材质和动画结合的制作流程。

  1. 顶点变形器的名字(这个名字对应材质里面变量的命名,命名必须与材质完全一样)
  2. 在材质中制作好 mask 贴图,制定好变量的命名,命名传过来的权重值来影响贴图的切换
  3. 与美术商量每个顶点变形器影响的区域

下面这张图是开启顶点变形器到材质之间值的传递。

这样就可以将权重值传入到材质中。曲线名称必须和材质中的变量名完全一样,解析来我们在材质中写好逻辑如下图。

Mask 代表我们的遮罩图,乘上变形器传过来的权重值,这样就可以用权重值影响对 mask 对应到的贴图,权重值高的时候,代表这个曲线幅度比较大。最后做好如下图:

在整个制作流程中,最难的部分,不是材质部分的制作。而是需要制作人员对于表情的划分,以及对顶点变形器命名的规范,和与美术人员指定规则的要求。

下面是表情动作截图: