NO ENGINEER NO CRY

泣かないエンジニアはいない

【Unity】キズナアイでブレンドシェイプを試してみる

ただの備忘録です



モデルのインポートについてはこちらを参考にしました

qiita.com


ブレンドシェイプとは?

ボーンを使わずにメッシュの頂点を動かしてアニメーションする技術です
表情の制御なんかによく使われるようです

パラメータの場所

Skinned Mesh Renderer コンポーネントを探す必要があります
これはツリー構造の下層にあり、今回は U_Char/U_Char_1 にアタッチされているものを使用します

f:id:imln20:20190923014535p:plain

インスペクターを確認するとコンポーネントの一番上に BlendShapes という項目があるので開くとパラメータ群が現れます

f:id:imln20:20190923014545p:plain

ここのパラメータを0~100でいじることで、アニメーションさせることができます

f:id:imln20:20190923014917p:plain

スクリプトから呼び出す

U_Char_1 にスクリプトをアタッチします
以下は毎フレームだんだんウインクしていくスクリプトです

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class bsScript : MonoBehaviour {

    private SkinnedMeshRenderer blendshape;
    float value = 0;

    // Use this for initialization
    void Start () {
        blendshape = this.GetComponent<SkinnedMeshRenderer>();
    }
	
	// Update is called once per frame
	void Update () {
        blendshape.SetBlendShapeWeight(2, value); //(ブレンドシェイプの番号,セットする値)
        value += 1;
    }
}


(gifでアップしたかったけど圧縮大変だったから苦渋の選択でtwitter)(1時間くらい格闘した)

無理矢理動かしているだけなのであまり自然な動きではありません
三角関数とかをうまく使えばもう少し自然な動きにできそうですね


参考:
【3Dモデルの表情や形を自由自在に変えられる】Blenderでシェイプキーを作りUnityのブレンドシェイプで動かす方法 | Macアプリ開発ラボ