在 Animato Controller 中分成 3 层
(1) FaceLayer 表情基本层,主要是各种基本表情
(2) FaceBlinkLayer 表情眨眼,这个一般是在一个基本表情播放完成后,然后间隔眨眼
(3) FaceMouthLayer 口型
表情制作可能分
(1)
精细表情,这个就是整个表情和口型都是在 Animation 或者 Max 中 Key 帧中制作出来。在 FaceLayer 播放,播放完成后,在 FaceBlinkLayer 播放眨眼
(2)
基本元件,制作几种基本元件,类似哭、笑、生气等几种,然后使用这几种播放,在 FaceLayer 播放,播放完成,在 FaceBlinkLayer 间隔播放眨眼
animator controller 中遇到的问题
(1)
播放一个 blendshape 的 animationclip ,如果当前的 animationclip 没有播放完,直接播放下一个 animationclip ,会导致 blendshape 权重设置错误,口型卡主之类的
解决方法
将 blendshape 权重值全部重置初始值,然后再进行下一个 animationclip 的播放
animator controller 中多层遇到的问题
(1)
FaceLayer 中没有设置 MouthA 这个 blendshape 权重,FaceMouthLayer 设置 MouthA 这个权重,但是多层混合后,MouthA 却不是 FaceMouthLayer 设置的 MouthA 权重
解决方法
将 FaceMouthLayer 的混合方式从 Addition 改成 Override
其它层
(2)
问题
(2.1)
动画是播放了部分,例如眼睛转动没有播放,可能是 mask 不对的问题
只要添加对应的骨骼就可以了
(2.2)
blendshape 突然不起作用了,可能是 blendshape 动画导出的时候没有了
应该是
只要重新导出就可以了
(2.3)
(6)
Animator Controller 配置
(6.1)
这三层必须要有,名字必须是对应的名字
(6.2)
每一层的 Layer 名字,状态名字,动画名字必须是这个,程序要使用这些名字去替换资源
(6.3)
每一层 Mask 设置
(6.4)
新建对应的 AvatarMask
AvatarMask 设置
Humanoid 设置
Transform 目前只设置这几个
(6.5)
Prefab 上挂组件,Blink List 是随机从数组中挑选眨眼动画播放, Interval 是播放眨眼间隔, AvatarName 对应的是 Assets\AsbRes\Emotion\Mei 目录下的名字,不同 Avatar 配置不同名字,根据这个去查找资源