以前、記事で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ファイルをインポートする必要があります。
アーマチュアの選択でなく、全てのボーンが選択された以下の状態です。
デフォルトだとボーンは非表示なので、アウトライナーから表示すると選択しやすいです。
この状態でインポートすると……。
Blenderの中でキャラクタが踊りました!
モーション元のキャラクタと背の高さが合っていないため、ところどころ無理のある姿勢になるところもありますが、Blender上なので講座で勉強したことを元に修正すればよい話です。
ひとまず、MMD->Blenderのモーション取り込みは成功です。
微修正は後からでもできますので、次回はこのBlenderで作成したモーションをUnityのhuman mecanimに適用する方法を調べていきます。