人脸特效三维空间定位详细教程 附源码
在制作人脸特效追踪定位分4个阶段,下面我给人物增加兔耳朵为例:
1.准备阶段
2.三维软件中定位阶段
3.Obj文件导出
4.Json文件配置阶段
1.准备阶段
(1)在AE NUKE等视频制作软件中输出动画序列帧。(图片格式为PNG格式)(注意在输出动画序列帧时***要从000号开始)如下:
(1)将动画序列帧转换为arf格式。(arf格式是我们特有的视频格式,性能高占用空间小)
(2)这样我们就有一套动画序列帧跟一个arf格式视频,因为arf格式的视频在三维软件无法显示,不能完成在三维软件中定位,所以需借助动画序列帧在三维软件中定位,在后面的配置文件中动画序列帧将被删除。只保留arf格式的视频。(注意arf格式的视频命名要跟动画序列帧的命名要一致,)
2.三维软件中定位阶段
(1)在三维软件MAYA中打开一个标准人头模型,此模型将作为人脸特效动画在人脸上定位的参照,图2
(2)在Maya工程里建立一个与动画序列帧尺寸统一比例的面片模型,在没有特殊要求的情况下面片模型的网格分段数为1。在面片模型属性中把它命名为mash_erduo。命名规范就是mash_加动画序列帧名字(图3)
(3)把面片模型移动到标准人头模型上放到相对应的位置上,给面片模型贴上动画序列帧贴图,材质球名字命名为mal_erduo。命名规则为mal_加动画序列帧名字(注意面片模型的材质球类型要使用lambert材质,动画序列帧放在材质球的颜色通道上,在hapershader(场景模型材质库)中不能有多余的没用材质)图4
(4)当你有多套动画序列帧时你需要在大纲视图中调整模型的顺序,把距离视线最近的面片模型放在最上面,依次排列。图5
(2)在导出之前,清除场景多余内容,标准人头模型删除,全选场景中的面片,删除历史,冻结信息变换,重置轴心。在前面步骤做完后所有的面片模型的位置信息,旋转信息都为0,缩放为1。图6
4.Obj文件导出
(1)全选场景内模型导出obj,在obj格式内勾选material选项勾选on,导出obj文件名字改成你所制作人脸特效的名字,确认导出。到出后将生成一个obj格式跟一个mal格式的文件。图7
5. json文件配置阶段
(1)在json文件中把obj的名字改成对应人脸特效名字 图8(2)在完成前面所有的步骤后你的文件夹里有以下几个文件(如果你的人脸特效有多个动画序列帧,那你的文件家里就有多个arf格式视频)如图9
在整过的制作过程中要注意命名的规范,要不然会在arf格式视频替换动画序列帧中,找不到贴图路径,无法在APP应用(宝宝特效)中显示出来。
项目源码地址:Android:https://github.com/aiyaapp/AiyaEffectsAndroid
IOS:https://github.com/aiyaapp/AiyaEffectsIOS