【UE4】对自定义角色进行 动作捕捉面部捕捉
【其他相关】
【导图】

可以下载苹果官方的51个Blendshape上手测试一下。


自定义模型blendshape参考上面第三个链接。

一、制作51个Blendshape

- brown 眉毛 5个
- eye 眼睛 14个
- 左右眨眼 2个
- 左右眼球上下左右转 8个
- 挤眼睁眼 4个
- cheek 脸颊 3个(cheekPuff 嘴充气)
- nose 鼻子 2个
- jaw 下巴 4个
- mouth 嘴巴 23个
合计 51个
其实有些是可以重新归类,还有些是重复的(区别程度不大),有些不分左右。
比如 cheekSquintLeft/Right 是外眼睑区域收敛,eyeSquintLeft/Right 是内眼睑区域收敛。
eyeWideLeft/Right 就是 eyeOpenedMax,眼睛睁到最大。
【mouth】相近系列 14个
- mouthSmileLeft/Right 的程度只比mouthDimpleLeft/Right(Dimple=酒窝)大一点点。
- mouthPress Left/Right 嘴角端平

- mouthFrownLeft/Right,左右嘴角斜向下拉伸,愁眉苦脸状
- mouthLowerDownLeft/Right,上嘴唇不动,下嘴唇动
- mouthStretchLeft/Right(Stretch=拉伸),上嘴唇动,左右嘴角向各自下方拉伸,咦~
- mouthUpperUpLeft/Right,下嘴唇不动,上嘴唇动

【Lower Upper】系列 4个
- mouthRollLower/Upper,上下抿嘴
- mouthShrugLower/Upper(Shrug=耸肩),上下撅嘴

【单个嘴变动大】系列 5个
- mouthLeft/Right,大嘴左右挪动
- mouthFunnel(漏斗),口型对应 失~
- mouthClose,嘴关闭
- mouthPucker(折叠/起皱),口型对应呜~

14+4+5=23个,嘴的blendshape就这些了,其他都没啥。
Shift加选可以创建link,改一个其他也会变动,比如Ctrl+A,选中全部Morph Target,键入0,可以归零。

以下是Wrap自带的Blendshape。


二、绑定骨骼刷权重
(其实只刷眼球就可以了,下巴已经有了blendshape,如果想让开合程度可调节的话,可以加上骨骼)

如果人是个整体,不像小男孩只有个脑袋的话,就基本只有这些骨骼:
- neck——控制脖子以上
- head——控制脑袋整体
- eye_left&right——控制左右眼球
- jaw——控制下巴(张嘴用)
其他eyelid控制眼睑(眼皮),blendshape里面已经有一些了,可加可不加,当然加上效果更好一点。

三、制作21帧 骨骼+相应Blendshape动画
这里的动画主要是骨骼动画(嘴巴和眼球),加上Blendshape进行混合制作。

第一帧(0帧)一定要是空的,作为基础模型参照,跟blender中 shape keys 的Basis一样。
然后转换成Pose Asset 以供动画蓝图使用,其实就是把单帧抽离出来,跟blendshape一样通过0~1 来变换表情(眼球和口腔)。

- cheek 2个(Squint)
- eye 14 个
- 左右眨眼 2个 (blink)
- 左右眼球上下左右转 8个(look in/out left/right)
- 挤眼睁眼 4个(squint +wide)
- jaw 4个
- 前、左右、张嘴
jawopen涉及到的口腔牙齿舌头动画可以做成blendshape,单独的牙齿舌头模型(一个jawopen blendshape),然后Shift加选主体脑袋(选中jaw open blendshape),然后Ctrl+J合并一下就好啦。
加上参考帧,共21帧。
涉及骨骼变动的有 9个 :
- 左右眼 上下左右转 共 8个
- 下巴(口腔) 张开 1个
如果你嫌做动画麻烦的话,可以把它们也整合到Blendshape当中。就不需要用Pose来驱动了。


四、制作动画蓝图
注意以上blendshape/骨骼 命名要跟Face AR项目中的命名一样,这样就可以直接进行替换,省得再连线了。
【4.1】添加head Pitch/Roll/Yaw 曲线以控制 头部骨骼Rotation


【4.2】Modify Curve
所有导入进来的Morph Target 都会自动转换为Anim Curve以供动画蓝图使用。
- 节点右键可添加/移除 Curve
- 可以调节曲线混合模式(添加/覆盖/混合等,当时打包app,以为是设备的问题,面捕始终不起效,最后检查是这里的问题)

【4.3】眨眼校正
眨眼有0~1,眼睛一闭一睁,还有中间不闭不争,嚎~
然后中间不闭不争的时候,比如眯眼的时候,眼睛还有上下左右移动(Blendshape,不是骨骼)

【4.4】骨骼动画
通过Pose 驱动眼球旋转,口腔开合。


五、录制动捕+面捕动画
当时用的是Orion 的Ikinema,效果很棒,毕竟是基于定位器的红外线捕捉嘛。
【5.1】用Layer Blend Per Bone 节点进行混合动捕面捕数据
用Layer Blend Per Bone 节点 混合身体动作和面部表情 。

如果想要在Sequencer定序器中混合面部和身体动画的话,需要添加Slot(相当于给动画打组,跟Blender Vertex Group给顶点打组一样)。
然后在定序器中右键指定动画的Slot插槽即可。
定序器预览毕竟方便嘛,可以左右来回拖动时间轴。

【5.2】用Sequence Recorder 进行录制动捕面捕动画
主页窗口,加选角色,用Sequence Recorder 进行录制动捕面捕动画。

录制完成后当即生成动画序列。
- 骨骼Transform数据——身体
- Anim Curve 数据——面部

然后Notify添加配音特效啥的。
录制过程,结果演示 开头第一个文章链接中已经有了,这里就不再放了。