Unity + ARkit + MMDモデル + MMDモーションの実現
現実とバーチャルを横断したい
今回、習いたてのUnityでタイトルにあるものを作ってみました。 結構ハードル高かったですが、色々な記事を参考にして作りました。
目標
Unity上でMMDモデルとMMDモーションくっつけてそれをARkitで現実世界に召喚しよう!
動作環境
参考サイト
お借りしたもの
手順
全体の流れとしては、
UnityのARkitプラグインをimport
お好きなMMDモデルとモーションデータ(vmdファイル)をproject内に移動
MMD4Mecanimパッケージをimport
MMDモデルとモーションデータをUnity上で動かせるようにMMD4Mecanimで変換(fbxファイルの生成)
アニメーションの作成
ARkitに対応づけ
です。以下で細かく見てみましょう。
まずARkitプラグインをAssetStoreからimport しましょう。Freeです。素晴らしい。
次にいきなり厄介なのですが、MMD4Mecanimをimport します。どうもこの手順が一癖あるようで(バージョンにもよると思いますが)、丁寧にやっていきます。
まず現時点で最新版の
MMD4Mecanim_Beta_20180523
のpackageを全てimportしてきます。次に、MMD4Mecanim_Beta_20160815
のPMX2FBX
の項目のみをimportします。こうしないとMMDモデルからUnity上で扱えるFBX形式のモデルに変換が出来ないようです。↓のような具合になると思いますではここからfbxモデルの生成に移ります。キズナアイフォルダの中に
kizunaai.MMD4Mecanim
というものが出来ていると思うので、規約に同意の上、動かしたいモーションをVMD欄にD&Dしてprocess無事fbxモデルが生成されると、指定したパスにモデルが出来上がります。
これをやる必要があるのか検証してないですが、モデルのRigをHumanoidに設定してApplyするとエラーが出る箇所があります(Genericでも動くらしい?)。importメッセージを見ると、
joint_hidariteoyayubi
が 重複して参照されてしまってるよ、という事なので、configから実際に見てみるといかにもえらってそうな赤が見つかります。これを右手のものと比べながら正しいもの(joint_hidaritekubi)に設定してやると、解消できました。ここへきてようやくモデルをsceneに移します。各自の嫁を召喚しましょう。HitCubeの子の位置に持ってきてやります。
あとは自由にチューニングしてください。自分の場合、このままではモデルが小さすぎると思ったのでscaleを3倍の3に設定して、HitCubeも邪魔なので消しました。あとocclusionも表現したかったので、
GereratePlanes
オブジェクトのPlane Prefab
がdebug plane
だったものをocclusion plane
に変更しました。これによってカメラから検出した平面にモデルが重なったらモデルを隠してくれるようになります。
出来上がり!
unity + arkit + MMDをやってみました!
— ざわざわ (@zawazawatw) June 9, 2018
オクルージョンもやってます。
キズナアイモデルとメグメグ☆F・E・Nモーションをお借りしています。 pic.twitter.com/hi89aB9x0S
おわりに
ARkit2.0が発表されましたね!縦平面の検出とか状態保存とか端末同期とかで実現できることがたくさんありそうでワクワクします!(まだベータ版ですが)