MRが楽しい

MRやVRについて学習したことを書き残す

UnityにMMDのダンスモーションを取り込んでモーションとして利用する(その1)

以前、記事でMMDキャラクタの取り込みを行いました。
bluebirdofoz.hatenablog.com

しかしMMDの魅力はキャラクタ配布だけではなく、多彩なダンスモーション配布も魅力の一つです
今回はそのダンスモーションをUnityプロジェクトに読み込んで使ってみます。

キャラクタ同様、配布者ごとに利用規約が異なります。データを取得した際は付属するテキストをよく読みましょう。
今回利用したモーションはこちらです。
seiga.nicovideo.jp

取り込みにはキャラクタ同様、MMD for Unityを利用します。取り込み方は公式ページを参照します。
MMD for Unityの使い方
 https://mmd-for-unity-proj.github.io/mmd-for-unity/howto.html

一部、そのままでは動かなかったので修正。Unityのバージョン変更によるものと思われます。
・VMDInspector.cs

  // エラー発生のため修正
  // pmdPrefab = (GameObject)EditorGUILayout.ObjectField("PMD Prefab", pmdPrefab, typeof(Object), false);
  pmdPrefab = (GameObject)EditorGUILayout.ObjectField("PMD Prefab", pmdPrefab, typeof(GameObject), false);
  vmd_config.OnGUIFunction();

しかし、正常に動作せず。そもそもhuman mecanimに対応していないようで、Animationファイルしか出力しません。
これではUnityちゃんとのモーション共有ができません。


よってMMD for Unityによる取り込みを早々に諦め、他の手段を模索しました。
真っ先に思いついたのはVMD(MMDのダンスモーションフォーマット)をFBX(3D製作ツールの汎用フォーマット)に変換することです。
元々、Blenderで作成した自作モーションをhololensアプリに反映することを考えています。
ならば、MMD->Blender->Unityの流れが実現できるなら、その形でもOKということです。
MMD->Blenderの方法についてはBlenderのアドオンが有志により提供されているのでそれを使います。
github.com
blender.u5kun.com

読み込みの際の注意点ですが、ボーンを全て選択した状態でVMDファイルをインポートする必要があります。
アーマチュアの選択でなく、全てのボーンが選択された以下の状態です。
f:id:bluebirdofoz:20170709035958j:plain
デフォルトだとボーンは非表示なので、アウトライナーから表示すると選択しやすいです。
この状態でインポートすると……。
f:id:bluebirdofoz:20170709040020j:plain
Blenderの中でキャラクタが踊りました!
モーション元のキャラクタと背の高さが合っていないため、ところどころ無理のある姿勢になるところもありますが、Blender上なので講座で勉強したことを元に修正すればよい話です。

ひとまず、MMD->Blenderのモーション取り込みは成功です。
微修正は後からでもできますので、次回はこのBlenderで作成したモーションをUnityのhuman mecanimに適用する方法を調べていきます。