itle: unity-变形_可制作面部表情
categories: Unity3d
tags: [unity, 变形, 面部表情, max]
date: 2019-04-16 20:32:53
comments: false

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


前篇

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

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


简单模型测试

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

  1. 新建一个 球体a (需要导出部分), 同时复制几个球体 b,c,d (用来做变形)
  2. b,c,d 分别做不同的变形
  3. 给 a 添加一个 变形器 修改器, 加载多个 变形目标 b,c,d
  4. 导出 fbx. 勾选 动画 后, 才能勾选 变形->变形
  5. 丢带unity中测试. 在 skinned mesh renderer 组件中会有个 BlendShapes 显示所 变形目标 及其 权重值
  • 脚本中控制 权重值
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中测试. 选中 袖标 节点就有个变形权值可以调整了
踩坑
加了 变形器 修改器 后, 动作无效

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

UnityAndroid 调用面部解锁 unity面部表情_面部表情

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