unity-变形_可制作面部表情

unity-变形_可制作面部表情


前篇

简单mesh变形的话, 可以使用 max 中的 Morpher (变形器) 来做, 不需要用到骨骼, 而且可以通过 权重值 来控制变形强度

复杂mesh变形才用骨骼做, 绑定点, 刷权重, k动画


TODO

  • 模型合成时, blendshapes 也合成进去

简单模型测试

以一个简答的球体变形为例

  1. 新建一个 球体a (需要导出部分), 同时复制几个球体 b,c,d (用来做变形)

  2. b,c,d 分别做不同的变形

  3. 给 a 添加一个 变形器 修改器, 加载多个 变形目标 b,c,d

  4. 导出 fbx. 勾选 动画 后, 才能勾选 变形->变形

  5. 丢带unity中测试. 在 skinned mesh renderer 组件中会有个 BlendShapes 显示所 变形目标 及其 权重值

    • 脚本中控制 权重值

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;

      [ExecuteInEditMode]
      public class MorpherCtrl : MonoBehaviour {

      [Range(0f, 100f)]
      public float val1 = 0f;
      public SkinnedMeshRenderer smr;

      void Start() {}

      void Update() {
      if (smr != null) {
      smr.SetBlendShapeWeight(0, val1); // 通过索引设置 BlendShapes 中的值
      }
      }
      }

角色测试

导出方式可以参考: 3dsmax-骨骼绑定及动作导出流程

模型及动作使用的是之前做好的, 参考: art-记一次角色合成制作流程

  1. 复制一个 袖标 模型出来做变形动画.

  2. 原有 袖标 模型上加一个 morpher 变形器 修改器, 变形器 修改器 一定要在 蒙皮 修改器下面, 才能做正确的动作及变形, 不然容易踩这个坑: [加了 *变形器* 修改器 后, 动作无效](#加了 *变形器* 修改器 后, 动作无效). (应该和顶点矩阵变换的先后顺序有关). 记得打开修改器列表下的 显示最终结果 的开关 才能看多所有修改器的效果.

  3. 在导出 骨骼和模型 的时候, 在导出动画模型的基础上 再额外勾选上 变形->变形 即可.

  4. 丢带unity中测试. 选中 袖标 节点就有个变形权值可以调整了

踩坑

加了 变形器 修改器 后, 动作无效

是因为 变形器 修改器 和 蒙皮 修改器 的顺序错了, 如图,

只需要把 变形器 修改器 放到 蒙皮 修改器 之下即可解决问题.