MRが楽しい

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

hololensで画面UIを表示する

今回は新機能実装です。
前回の設計で画面表示UIオブジェクトの枠を設けたので、画面UIの表示を試しておきたいのです。
以下を参考に画面UIを実装します。
・【HoloLens】Unityでスタートメニューみたいな追従するUIを作る
 http://kzonag.hatenablog.com/entry/2016/08/14/163736

記事を元に実装を行います。HoloToolkitの利用が前提となるようです。
環境の整った追いかけっこアプリに追加します。
(更にスパゲッティ化が進みますが、プロジェクトを何個も作ると容量が増えるのです。。)

ざっくりめの記事なので折角なので本ブログでも一つ一つ確認していきます。まずはカメラ設定です。
エミュレータでのUIの見え方をhololensと合わせるため、Field of Viewの値を変更します。
f:id:bluebirdofoz:20170428020744j:plain
ここで早速分からない点があります。Field of Viewの値って幾らに設定するのが妥当何でしょうか。
以下に情報がありました。hololensアプリ開発の場合、17.82が適正と結論付けています。
・Unity Camera FOV?
 https://forums.hololens.com/discussion/6839/unity-camera-fov
・PLAYING WITH THE HOLOLENS FIELD OF VIEW
 http://www.imaginativeuniversal.com/blog/2017/03/18/playing-with-the-hololens-field-of-view/

エディタやエミュレータの環境をhololensに近づけたい場合、この辺りの角度を設定すれば良さそうです。
記事元の方も算出方法は不明ですが、17.989とこれに近い数字を設定しています。

17.82を設定してみました。
f:id:bluebirdofoz:20170428020840j:plain
こう見るとやっぱりhololensの視野角は狭い。


次にキャンバス設定です。
GameObject->UI->Canvasを選択し、オブジェクトを作成します。
f:id:bluebirdofoz:20170428020850j:plain
キャンバスの設定は記事のままに設定します。スケールを小さくしておくのは後の微調整で非常に便利ですね。


次にEventSystem設定です。
EventSystemオブジェクトに HoloLens Input Moduleを追加するとAirTap等のジェスチャーで操作できるようになるとのことです。
f:id:bluebirdofoz:20170428021023j:plain
AddComponentを押下し、Event->HoloLens Input Moduleで追加できます。
(Event側にあると気付かず、探しまくった…どちらにせよ検索で名前を入力すれば出てくるはずです)

しかし、既にタップ操作によるUIまで提供されていましたか…。早速、昨日の設計では想定していなかった事態です。
提供されているなら使いたい…要はこのEventSystemオブジェクトをゲームUIに位置付ければ良いのかな。


そしてUIオブジェクト配置です。
Canvasオブジェクト上でGameObject->UI->Panelを選択し、パネルを作成します。
更に好みに合わせてGameObject->UI->Buttonを追加し、位置を合わせると以下のようにUIが表示できています。
f:id:bluebirdofoz:20170428021055j:plain
今回、表示確認がメインなので押下時のイベントは未設定です。


最後に追従設定です。
PanelオブジェクトのAddComponentからScript->HoloToolkit.Unity->TagalongでTagalongを追加します。
更にScript->HoloToolkit.Unity->Billboardを追加し、記事を参考にステータスを設定します。
f:id:bluebirdofoz:20170428021105j:plain
実装はこれで完了です。


ビルドを行い、動作確認をしてみました。
f:id:bluebirdofoz:20170428021122j:plain
指定した位置にUIが表示されています。視線を横に動かしてみると…。
f:id:bluebirdofoz:20170428021130j:plain
UIが追従しました。成功です。
写真で見るとかなり余裕を持って追従して見えますが、実際のhololensだと視野角がもっと狭いので視界から外れたタイミングで追従しています。

直ぐに本アプリでUIをどう使うという予定はありませんが、設計としては機能追加の可能性として考慮したいところです。