
赛马娘的面部表情实现原理可以参考以下几篇文章:
https://croakfang.fun/2021/03/10/json-mmd表情转换工具
https://croakfang.fun/2022/01/23/赛马娘人物表情的提取和处理(附脚本)
简单来说,区别于迷你马娘的形态键表情(UV表情),正常马娘的面部表情是靠面部骨骼的姿态来实现的。而这些骨骼的姿态又是通过一个脚本来控制,它命名为“ast_chr角色编号_服装编号_facial_target”,可以通过AssetStudio导出为json格式。
以傻了吧唧诗歌剧举例,诗歌剧的角色编号是1062,默认头模编号是00,那么其对应的该脚本为“ast_chr1062_00_facial_target.json”,保存在头模同一路径下,如下图。

诗歌剧的面部表情脚本
那我们需要的是把这些骨骼姿态信息转换为一个个形态键,从而可以让模型在其他3d软件中比较方便的实现表情。下面进入正题。
注:本教程假设已经提取出了马娘的模型文件。
首先下载Unity:https://unity.com/cn

Unity官网

跟着上图的三步走,耐心等待安装完成即可。在此过程中可能需要注册账号。
全部安装完毕后点击左侧项目,右侧点击新项目,在弹出的新窗口中选择3D模板,右下角设置项目名称和路径,然后点击创建项目。

新建一个项目

新建一个项目
创建新项目的过程可能会有些慢,请耐心等待。创建完毕后的窗口界面如下图。

新项目窗口
以诗歌剧为例,我们将提取出来的头模文件夹整个拖到Unity项目的Project区域。

导入头模
然后在该文件夹里面找到头模文件,我这里是pfb_chr1062_00.fbx,把它拖到上方的场景区域。

导入头模
可以在右侧的检查栏里调整一下模型位置,XYZ都改为0即可,就是场景正中央。

调整模型位置
在左侧的层级栏里依次往下展开,找到M_Face,双击它,可以快速将视角拉进脸模。

拉进视角
可以不用在意这里的贴图是否正确,我们主要是导出表情形态键,贴图等到blender里再上。
首先右键点击Project区域的模型文件,然后点击最下面的Properties。

事前设置
在弹出的新窗口中,确保两项设置如下图所示,即Convert Units不勾,Read/Write勾选。

事前设置
然后点击右上角的x号,继续点击Save保存设置即可。

事前设置
简单说下这两个设置项。
Convert Units如果勾选的话,距离单位会不统一,转换表情时就会导致骨骼运动幅度过大,表情鬼畜甚至模型撕裂。
Read/Write如果不勾的话,则无法对模型进行修改,也就无法添加形态键。
设置完后由于距离单位变化了,所以模型在场景中会变得更大,可以适当往远拉些。

往远拉一些视角
因为我们转换完表情后,还需要将头模导出为fbx文件,所以需要安装一个FBX Exporter插件。
在最上方的菜单栏找到Window,下拉点击Package Manager。

安装FBX Exporter
在弹出来的新窗口中,将最上方的In Project改为Unity Registry。

安装FBX Exporter
然后往下拉就能看到FBX Exporter,在右侧点击Install进行安装即可。

安装FBX Exporter
安装完成后,随便右键点击一个层级,就能看到Export To FBX的选项了。

安装FBX Exporter
首先下载表情转换脚本,在croakfang的文章最底部可以下载脚本。
https://croakfang.fun/2022/01/23/赛马娘人物表情的提取和处理(附脚本)

下载表情转换脚本
下载下来后把txt后缀改为cs。

改后缀
然后和头模一样,将脚本文件拖到Project区域。

导入脚本
在左侧选中骨骼父级,也就是第二个pfb_chr1062_00,把脚本拖到右侧检查栏的下方空位。

导入脚本
在检查栏新创建的脚本窗口里,将Facial Target右侧的None改为头模对应的骨骼姿态脚本,这里为ast_chr1062_00_facial_target。

选择对应的骨骼姿态脚本
下方的两个Mesh,Face Mesh选择M_Face,Eyebrow Mesh选择M_Mayu,没有Mayu就随便选个别的,这里我选的M_Hair。

选择Mesh
然后点击场景区域上方的播放按钮,项目会自动切换到Game模式,我们点击左侧的Scene返回场景模式。

播放按钮

切换回场景模式
这时我们拖动右侧检查栏下的Show滑块,可以看到面部已经出现了表情变化。

拖动Show滑块出现表情变化
同时点击左侧层级的M_Face,在右侧检查栏下也会发现新添加的BlendShapes下拉栏,这些就是已经转换成功的形态键。

形态键转换成功
然后我们将整个模型导出为fbx。

导出fbx
导出设置里,将Export Format选为Binary。上面两个分别为导出文件名和路径,请自行决定。确认无误后,点击下方Export导出即可。

导出fbx
到此就成功导出了带有表情形态键的头模fbx文件!

成功导出fbx
将上一步导出的fbx再导入Blender,可能出现下图这样模型姿态变形了情况。这时我们在姿态模式下清空姿态变换即可。

模型姿态变形了

清空姿态变换
然后我将多余的子网格删除,将眼睛和脸分离出来,给模型上材质,总之进行一些处理。(此处直接快速跳过)

进行一些处理
然后选中M_Face网格,在顶点组里找到Nose,把Nose以后的所有顶点组全部删除。

把Nose以后的所有顶点组全部删除

删完后
在形态键下勾选形态键锁定按钮(别针图标),然后按方向键上下遍历形态键,就能观看每个形态键对应的面部表情。

勾选形态键锁定按钮

由于眉毛(左右)、眼睛(左右)和嘴巴的形态键是互相分开的,所以我们可以进行自由组合。
比如我看中了眉毛的EyeBrow_10_L形态键,那么按下图所示将该形态键应用为基本形态。顺便同样将EyeBrow_10_R也一并应用。

应用为基本形态

应用为基本形态后
同理,将想要的眼睛和嘴巴的形态键也都应用后,就是一个完整的面部表情了。

傻不拉几的~
当确定下来表情后,删除全部形态键即可。删除形态键后才能应用骨架修改器。

删除全部形态键
最终如下图。

还是傻不拉几的~
到此,本教程结束~
有可能出现的一个问题
在第五步导入脚本以及使用脚本的时候,Unity可能会报错:“the type or namespace name ‘newtonsoft’ could not be found (are you missing a using directive or an assembly reference”。
这会导致脚本无法添加到对象上,也就无法运行脚本。
解决方法详见:
https://blog.csdn.net/weixin_43455008/article/details/113187620
https://github.com/applejag/Newtonsoft.Json-for-Unity
特别感谢CroakFang大佬提供的脚本。