Hololensで初音ミクに踊ってもらった. MMDモデルとモーションの取り込み
作ったもの
Hololensでベッドの上で初音ミクに「Perfect Human」を踊ってもらいました. HololensアプリケーションにMMDのモデルとモーションを取り込んで動いています.
【Hololens】初音ミクにPerfectHumanをベッドの上で踊ってもらった
使用したもの
Hololens Tookkit for Unityに加え, 以下のものを活用させていただきました.
モデル
モーション
MMDファイルのUnityへの取り込み
MMD for Unity
開発キット
- Unity 5.5 0p2
ポイント
MMD for Unityのインポートと修正
インポート
UnityでMMDモデルを利用するにはMMD4Mecanimを利用する方法もあるようですが,現行バージョンではUWPアプリケーションが非対応になっているようです. そこで,代わりにMikuMikuDance for Unityを利用します.公式サイトからzipファイルをダウンロードし,展開したディレクトリをそのままUnityのProjectにインポートします.
修正
インポートしたMMD for Unityに修正を加えます.2017年3月現在やや古い状態なので動くようにします・(ここではとりあえず動作することを目指して,機械的に修正を加えていきますが適切かどうかはまた別な話です.)
1 APIのアップデート
取り込んだMMD for Unityのディレクトリを右クリックしてRun API Updateをクリックします.
2 コードの修正
いくつかの行がエラーになるはずなので修正方法をピックアップします.
まず,以下のコードをコメントアウト.
// AnimationUtility.SetAnimationType(clip, animation_type);
GameObject.collider, GameObject.rigidbodyのようにcolliderやrigidbodyをプロパティとして参照している箇所でエラーが出ています.そこをGetComponent<>()メソッドを使って取得するようにします.
// 変更前 parent.rigidbody parent.collider // 変更後 parent.GetComponent<Rigidbody>(); parent.GetComponent<Collider>(); // ・・・みたいに
MMDモデルとモーションの取り込み
MMD for Unityの公式サイトのドキュメントに従ってモデルとモーションを取り込みます.
MikuMikuDance for Unity - Howto
モデルの取り込み時にAnimationTypeをGeneric Mecanimを選択します.
アニメーションの設定
MMD for Unityでモーションのアニメーションまで作ったらあとは登録します. AnimationControllerを作ってprefabにanimationに設定していきます.
RigidbodyやSpatialMappingの設定
- モデルにRigidbodyやColliderを設定.
- 空間認識のためにSpatialMappingを設定.
ただ,起動直後に重力を有効にしてしまうと空間認識が完了しておらず,モデルが奈落の底に落ちてしまうため,空間認識が完了してから重力を有効にします.
まとめ
MMDのモデルとモーションを取り込んでダンスするHololensアプリケーションを作りました.