• 中文
    • English
  • 注册
  • 查看作者
    • Unity表情动画第二弹

      在Unity中实现BlendShape表情和骨骼动画混合

      表情实现机制

      一般都是三种中选一种

      1 换模型面部贴图,UV动画实现

      优点:换贴图的话,如果做得精细,可以表现得内容特别多,表情丰富,2D、3D都可以使用

      缺点:贴图内存占用是个问题,美术制作麻烦,还需要代码逻辑实现

      2 面部骨骼动画

      缺点:动作美术工作量问题,权重分配受限,可能没啥突出优点,都没在网上找到过类似例子……

      3 BlendShape表情

      优点:美术控制Morphing参数,每个表情额外只占用一个动画信息,10-20K,表情也可以很精细,导出表情动画不需要代码,动画状态机控制

      缺点:2D不能用

      综上,选用了BlendShape表情,网上已有关于BlendShape表情的文章,都是代码来控制SkinnedMeshRenderer上BlendShape的权重,表现很僵硬。所以,为了要生动的表情动画,本文直接使用美术导出的表情动画,而不是程序控制,这样就会完美还原美术制作的表情动画。

      先放一张效果图,希望大家多多关注我们公司的游戏《王牌御史》~

      Unity表情动画第二弹

      代码很少,下面直接上教程。

      BlendShape表情

      BlendShape表情,主要工作量在美术,美术制作好表情动画之后,导入Unity中按照下面设置播放即可

      表情动画制作

      美术方面:美术额外导出一个FBX,带有蒙皮信息、骨骼动画只保留一个造型、单独面部的动画信息(Morphing)

      经过测试,只有美术网格、骨骼、蒙皮、Morphing动画一起导出来的Fbx才能保留表情动画信息

      表情动画导入

      导入到Unity中,基础模型要开启Import BlendShape

      对应的面部SkinnedMeshRenderer上会多出BlendShape的配置(调整这些值就可以看到表情变化了)

      Unity表情动画第二弹


      ModelImporter

      Unity表情动画第二弹


      SkinnedMeshRenderer

      按照美术的制作,裁切动画片段,下面的每一个动画片段,就包含了美术制作的表情动画

      Unity表情动画第二弹


      动画导入拆分

      也可以每个表情动画导出一个fbx,根据项目选择一个FBX然后拆分多个动画 或 每个动画单独一个FBX 都可以

      设置动画状态机正确设置Layer

      双层状态机:为了面部表情独立出来,不与基础动作绑定死,可以通过代码逻辑自由组合播放

      左图第一层控制角色动作,基础骨骼动画(跑、跳、肢体的害羞动作等)

      右图第二层控制表情动画,表情动画(面部表情,开心 难过 眨眼 等)

      Unity表情动画第二弹


      基础动画状态机

      Unity表情动画第二弹


      表情动画层

      使用AvatarMask

      对于上面第二层状态机,需要有一点注意一下,小齿轮中Mask,需要制定一个AvatarMask,受这层状态机影响的骨骼或蒙皮

      Unity表情动画第二弹



      AvatarMask(动画遮罩):可以控制哪部分骨骼或蒙皮受影响

      FaceLayer中的Mask只需要开启面部蒙皮,这样只有面部受第二层状态机影响

      在Project试图 右键 然后 Create/Avatar Mask 可以创建AvatarMask,然后指定对应Fbx中的avatar,就可以导入模型骨骼蒙皮信息

      设置如下图,只需要选择面部的蒙皮

      Unity表情动画第二弹


      播放逻辑

      控制播放的逻辑,播放基础动作的时候,配套播一个面部表情,这里可以根据项目情况,角色动作和表情自行组合

      animator.Play(actionState, layerIndex); 可以播放指定层的动画 Unity表情动画第二弹

    • 0
    • 0
    • 0
    • 308
    • 请登录之后再进行评论

      登录
      • 大版主
      • 小版主

      暂没有数据

      暂没有数据

    • 发表内容
    • 实时动态
    • 偏好设置
    • 到底部
    • 单栏布局 侧栏位置: