【Unity】キズナアイでブレンドシェイプを試してみる
ただの備忘録です
モデルのインポートについてはこちらを参考にしました
ブレンドシェイプとは?
ボーンを使わずにメッシュの頂点を動かしてアニメーションする技術です
表情の制御なんかによく使われるようです
パラメータの場所
Skinned Mesh Renderer コンポーネントを探す必要があります
これはツリー構造の下層にあり、今回は U_Char/U_Char_1 にアタッチされているものを使用します
インスペクターを確認するとコンポーネントの一番上に BlendShapes という項目があるので開くとパラメータ群が現れます
ここのパラメータを0~100でいじることで、アニメーションさせることができます
スクリプトから呼び出す
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; } }
ぶれんどしぇいぷ pic.twitter.com/ml3m0fesST
— ぴ (@hgs_pie) September 22, 2019
(gifでアップしたかったけど圧縮大変だったから苦渋の選択でtwitter)(1時間くらい格闘した)
無理矢理動かしているだけなのであまり自然な動きではありません
三角関数とかをうまく使えばもう少し自然な動きにできそうですね
参考:
【3Dモデルの表情や形を自由自在に変えられる】Blenderでシェイプキーを作りUnityのブレンドシェイプで動かす方法 | Macアプリ開発ラボ