给预制的 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 列表的渲染器, 实施更改其中的权重, 来改变其中的表情.
来源: http://www.bubuko.com/infodetail-3484025.html