MRが楽しい

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

hololensの空間マッピングデータをUnity上で利用する

今回はおいかけっこアプリの改修枠(+hololensの技術調査)です。
本日、会社でhololensに関する勉強会があったのですが、その中で会社の先輩にUnityのゲームオブジェクトとして、hololensで記録したマッピングデータが利用できることを教えてもらいました。

おいかけっこアプリに取り込んでみたので、実施手順を以下にまとめます。

まず、hololensのデバイスポータルを開き、「3DView」ページで「Update」ボタンを押下し、最新のマッピングデータを確認します。
f:id:bluebirdofoz:20170608000819j:plain
バイスポータルの設定方法は以下を参照。
azure-recipe.kc-cloud.jp

そのまま「Save」ボタンを押下すると、マッピングデータがobjファイルとしてダウンロードできます。
f:id:bluebirdofoz:20170608001001j:plain

後はそのobjファイルをunityのプロジェクトに取り込んで…。
f:id:bluebirdofoz:20170608001018j:plain

ゲームオブジェクトとしてドラッグ配置するだけです。あら簡単。
f:id:bluebirdofoz:20170608001029j:plain

今回の場合、中心座標が何もないところになっていたので、位置を合わせる等の微調整は必要となりました。
丁度、人影が写っていたので、大きさを比較しました。
サイズについては、ちゃんとUnity内の「Scale:1」=「1メートル」になっており、変更する必要がありませんでした。
f:id:bluebirdofoz:20170608001120j:plain
更にマテリアルを変更してマッピングデータを見やすくしています。

これでUnity上で疑似的にSpatialMappingでのゲームの動きを確認できます。
実際のマッピングでは床に微妙な凸凹があったり、階段などはどうマッピングされるのかという問題や疑問があります。
予め、hololensでマッピングしたデータを取り込むことで、階段をキャラクタが登ることができるのかなどのデバッグに重宝しそうです。


早速、おいかけっこアプリを起動して動きを確認してみましょう。「再生」ボタンをクリックします。
f:id:bluebirdofoz:20170608001330j:plain
……ユニティちゃんがマップを突き破り、奈落の底へと飲み込まれていきました。

objファイルをそのまま読み込んだ状態では、ゲームオブジェクトに衝突判定がないためでした。
キャラクタが立てるようにするにはメッシュコライダーを設定しておく必要があります。
f:id:bluebirdofoz:20170608001410j:plain

きちんと床に立ちました。成功です。
f:id:bluebirdofoz:20170608001427j:plain

キャラクタが床の上を歩けたり、シグナルに応じてメッシュ変更のスクリプトがきちんと動くことも確認できます。
f:id:bluebirdofoz:20170608001453j:plain

新規オブジェクトの反映がスムーズに行くのは、再設計でフィールドViewを切り分けた成果です。実に素晴らしい。