UnityでBlenderのシェイプキーを使う

投稿者: | 2020-02-04


Blenderでシェイプキーを設定したモデルをUnityに持っていって、表情などを動かしてみます。

まずBlenderでデフォルトのCubeを消して、Shift +A -> Mesh -> Monkeyで猿を配置します。

オブジェクトモードでTキーでツールシェルフを表示しSmoothをクリックします。

プロパティの逆三角形のマークをクリックして、オブジェクトモードのまま、Shape Keysの+ボタンを3回押します。

すると、Basisの後に2つのシェイプキーが追加されます。

Key1を選択します。

この状態でTabキーで編集モードに切り替え、猿を変形させます。

Proportional Editingで回りの点も一緒に動くようにすると変形しやすいです。

Blenderの編集モードの基本操作

表情ができたら、再度Tabキーでオブジェクトモードに戻します。

このままShape KeysのValueの値を変えると、デフォルトから変形させた状態へシームレスに表情が変化します。

同じ操作でKey2にも表情をつけて、FBXファイルでエクスポートしてUnityにもっていきます。

UnityでAssets -> Import New Asset…からインポートしたら、インポートしたものを選択して、インスペクタでImport BlendShapesにチェックが入っているか確認します。
チェックが入っていなければチェックを入れてApplyをクリックします。

これをシーンに配置します。

猿のオブジェクトを選択してインスペクタを見ると、Skinned Mesh RendererコンポーネントにBlendShapesという項目があり、Blenderで設定したシェイプキーが表示されています。

シェイプキーの横のスライダーでValueを変えると表情が動きます。

複数のシェイプキーのValueの値を上げると表情が合成されます。

このValueの値をプレイ中に変えてみます。

スクリプトで制御する

SkinnedMeshRendererコンポーネントのSetBlendShapeWeight()メソッドを使うとシェイプキーの値を変更できます。

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


public class ShapeKeyScript : MonoBehaviour
{
    SkinnedMeshRenderer skinnedMeshRenderer;

    // Start is called before the first frame update
    void Start()
    {
        skinnedMeshRenderer = GetComponent<SkinnedMeshRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.Alpha1))
        {
            skinnedMeshRenderer.SetBlendShapeWeight(0, 100f);
        }
        else
        {
            skinnedMeshRenderer.SetBlendShapeWeight(0, 0f);
        }
   
        if (Input.GetKey(KeyCode.Alpha2))
        {
            skinnedMeshRenderer.SetBlendShapeWeight(1, 100f);
        }
        else
        {
            skinnedMeshRenderer.SetBlendShapeWeight(1, 0f);
        }

    }
}

第一引数にはシェイプキーのインデックスを入れます。1つ目のシェイプキーの値を変更するときは0を入れます。第2引数にValueのfloat値を入れます。

アニメーションで制御する

アニメーションのファイルを作ってAdd Propertyを見ると、シェイプキーが選択できます。

これでシェイプキーを使ったアニメーションを作ることができます。

Unityでアニメーションを作成

デフォルトではアニメーションの動きが早かったので、アニメーターコントローラーでこのアニメーションが設定されたステートをクリックし、Speedを変えています。

コメントを残す

メールアドレスが公開されることはありません。