2017年7月5日水曜日

TangoでMMDモデルを表示するUnityアプリの作成(MMD4Mecanim不使用)

Google Tango対応のスマホであるZenFone ARを購入したので、TangoでMMDモデルを表示してみました。
UnityでMMDモデルを表示させるのによく使われるのがMMD4Mecanimですが、現在スタンドアローン(デスクトップ)以外での動作については非サポートとなっているため使用できません。

そこでChromiumARブラウザでMMDモデルを表示する方法があります。

ようこそジャパリARへ! - Qiita
http://qiita.com/jyuko/items/60555fd1c84ae46498f8

MMDLoader.jsを使ってそのままモデルを読み込めるようなので簡単そうですが、ChromiumARの動作に難があるようです。
そこでUnityアプリでMMDモデルを表示する方法はないかと探したところ、見つけましたので手順を説明します。

目次はこちら
0. 前提
1. MMMでモーションをモデル似合わせて保存する
2. Blenderでモデルとモーションを合わせてfbx出力する
3. Unityでサンプルを利用してモデルを表示する
4. Build&Run

MMMのバージョンは1.2.7.3、blenderのバージョンは2.74、Unityのバージョンは5.6.0f3で行いました。

参考にしたサイト:
真面目系クズの休憩所: MMD+Unity+cardboardでダンスを眺める
http://sparks-row.blogspot.jp/2015/12/mmdunitycardboard_27.html

本記事で使用するモデル・モーション:
結月ゆかりMMDモデル無料配布中! / VOCALOMAKETS http://www.vocalomakets.com/mmd.html

【配布】MMDジャンプモーション集 - ニコニコ動画 http://www.nicovideo.jp/watch/sm26118544

※注意
MMDモデル・モーションを使用・公開する際は利用規約に従いましょう。


0.前提


MikuMikuMoving(MMM)をDLしておく
・BlenderでMMDモデルを読み込めるようにしておく
・UnityでTangoの開発ができるようにセットアップしておく

1. MMMでモーションをモデルに合わせて保存する


モデルとモーションをMMMに読み込ませます。
[ファイル]タブの[モデル読み込み]と[モーション読み込み]をクリックします。

モーションを焼き込みます。
[物理演算]タブの[物理焼き込み]をクリックします。

モーションを出力します。
[ファイル]タブの[モーション保存]をクリックします。

適当な名前を入力します。
Motion File typeは「VMD file」を選択し、ALLディレクトリにチェックを入れます。
そして[Export]ボタンをクリックして保存します。

2. blenderでモデルとモーションを合わせてfbx出力する


Blenderでモデルを読み込みます。
[ファイル]-[インポート]-[MikuMikuDance Model(.pmd .pmx)]を選択します。

読み込んだモデルを選択状態にして、[Build]ボタンを押しておきます。

[import]ボタンで1.で生成したモーションを読み込みます。

タイムラインの再生ボタンを押すとモーションが再生されることを確認します。
必要であれば開始フレームと終了フレームの数値をいじって不要な部分を消去します。
fbxでエクスポートします。
[ファイル]-[エクスポート]-[FBX(.fbx)]を選択します。

適当な名前で元のMMDモデルがあるフォルダに保存します。

3. Unityでサンプルを利用してモデルを表示する


Tango SDKのSample内の「AreaLeaning」シーンを読み込みます。

元のMMDモデルがあるフォルダ(2.で作成したモデル入り)をインポートします。
2.で作成したモデルをHierarchyにD&Dして表示します。

「(モデル名)_mesh」以外は不要なので非表示にします。

「(モデル名)_mesh」のマテリアルの質感が硬いので、"Unity-chan!" Model に含まれるマテリアルなどを使っていい感じにします。 


Project内の2.で生成したモデルに含まれるAnimation ClipをHierarchyの「(モデル名)_mesh」の親にD&Dすると、Animator Controllerが自動で生成されます。

ループさせたい場合はAnimatorウィンドウでモーションとExitを繋げます。

実行するとモーションが再生されることを確認します。かわいい。
その場から動かないモーションであれば足元に影をつけると接地感が増します。

実物大でAR表示するならこのままでもいいですが、机上に表示させたい場合は大きすぎると思うのでサイズを調整します。
その後prefab化してHierarchy内のモデルは削除します。
Hierarchy内のCanvas-GameControlpanel-ObjectPickerPanelに子を追加します。(RedMakerToggleなどをコピーする)
「On Value Changed」内の数字を3にします。

子のLabelのTextを分かりやすい文字列にします。

Hierarchy内のUIControllerの「Area Leaning In Game Controller」スクリプト内の「Mark Prefabs」のSizeを4にし、Element3にPrefab化したモデルを選択します。

4. Build&Run


Tango対応端末をPCに繋げます。
[File]-[Build & Run]をクリックし、PlatformがAndroidの状態で「Build And Run」を実行します。

アプリ内で[New Area Description]を押して遷移したら、少し待った後に追加したチェックボックスにチェックを入れ、机上や床などの平面をタッチします。
すると、モデルが動きます。かわいい。
このままではオクルージョンは機能しないので、必要であれば別途Unityの設定をいじる必要があります。


以上で説明は終わりです。
正直モーションの設定とマテリアルの設定が面倒ですので、どうしてもという方だけ試してみてください。

それでは良いARライフを!
0 件のコメント:
コメントを投稿