げぇむぷろぐらみんぐ

日々の生活で得た知識、経験を書きます

【Unity】Blenderからモデルを書き出してBlendShapeをやってみた

はじめに

最近社内勉強会などでBlendShapeという単語をよく聞くのですが、概念を知っているだけで動かしてみたことがなかったのでやってみました。 何事も試してみるのが大事。

環境は、

Blenderはほぼ触ったことないのでかなり古いかもしれないですが、動いたので一旦良しとします。

動かした結果

実際にUnity上に持っていて、以下のような感じで動きました。 すごく単純なモデルなのでほぼ感動がないです…モデリングできるようになりたい…

f:id:siguma_sig:20190512170043g:plain

BlendShapeとは

BlendShapeとは、モデルのアニメーション手法の一つです。
あるベースとなるモデルAに対して、そのモデルAの頂点を動かして別の形状にしたモデルBを用意し、AとBをブレンドしつつ変形させるアニメーションを行います。
ゲームでは、よくフェイシャルのアニメーションに使用されるそうです。他にフェイシャルのアニメーションを行う手法としては、ボーンを変形させて行うものもあるそうです。

参考に、Unityちゃんのフェイシャルのアニメーションは、BlendShapeを用いて実装されていました。

BlenderでBlendShape作成

今回は、Unity上で実際にBlendShapeを試すために、まずはBlenderでBlendShapeの値を持ったモデルを作成します。 以下のようにBaseを立方体として、Key1とKey2として少し崩した形のモデルを作成しました。

f:id:siguma_sig:20190512153325p:plain

実際に作成した手順は以下です。

1.ShapeKeysの+ボタンを押してShapeを追加する

f:id:siguma_sig:20190512164349p:plain

2.作成したShapeKeyを選択して、それぞれEditモードで頂点を動かす

f:id:siguma_sig:20190512164524p:plain

3.再びObjectモードにして、Valueを動かして動作確認

f:id:siguma_sig:20190512164922g:plain

4.Fbxを書き出し

UnityでBlendShapeアニメーションする

1.先程書き出したFbxをUnityにインポートします。

2.Fbxをシーン上にドロップし、インスペクタのSkinMeshRendererを確認

f:id:siguma_sig:20190512165635p:plain

3.AnimatorControllerとAnimationClipを作成

4.先程確認したSkinMeshRendererのBlendShapesという欄のKeyの値をAnimationClipで調整

f:id:siguma_sig:20190512165856p:plain

5.Animation再生

まとめ

BlendShapeをUnityで動かしてみました。 Unity上だとすごく簡単にBlendShapeができることがわかりました。

3D系の経験値が著しく低いので、今後もこうやって知識として知っているがやってみたことのないことをいくつかやっていきたいです。