https://www.jianshu.com/p/4ae6662a40df
最近项目中要做表情,因此用到这个概念,但是却在网上找不到太多的了解,特地自己来记录一下。
要在 Maya 或者3ds Max 里面制作一个含有 Blend Shape 的形变动画 Avator。
把Avator导入到 Unity 中
给预制的 Avator 添加组件代码这里我们叫 BlendShapeDemo.cs,来控制 Avator 的表情变化,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestBlendShapeBehaviour : MonoBehaviour {
int blendShapeCount;
SkinnedMeshRenderer skinnedMeshRenderer;
Mesh skinnedMesh;
void Awake ()
{
skinnedMeshRenderer = GetComponent<SkinnedMeshRenderer> ();
skinnedMesh = GetComponent<SkinnedMeshRenderer> ().sharedMesh;
}
void Start ()
{
blendShapeCount = skinnedMesh.blendShapeCount;
}
void OnGUI()
{
//21,是指模型中设定发生形变张开嘴巴 0:左眼闭合 1:右眼闭合
if (GUI.Button (new Rect (100, 100, 150, 80), "张开嘴巴 && 闭眼")) {
skinnedMeshRenderer.SetBlendShapeWeight (0, 100);
skinnedMeshRenderer.SetBlendShapeWeight (1, 100);
skinnedMeshRenderer.SetBlendShapeWeight (21, 100);
}
if (GUI.Button (new Rect (100, 200, 150, 80), "闭合嘴巴 && 睁眼")) {
skinnedMeshRenderer.SetBlendShapeWeight (0, 0);
skinnedMeshRenderer.SetBlendShapeWeight (1, 0);
skinnedMeshRenderer.SetBlendShapeWeight (21, 0);
}
}
}
?
SkinnedMeshRenderer就是含有 blendshapes 列表的渲染器,实施更改其中的权重,来改变其中的表情。
原文:https://www.cnblogs.com/nafio/p/12598011.html