前々回も紹介しましたが、HoloLensアプリには以下の3種類があります。
- Body Lock(常に目の前に表示される)
- World Lock(HoloLensが持つ三次元空間の中の絶対位置に配置される)
- 排他的表現(いわゆるフルスクリーン)
HoloLens講演。ホログラムの表示方法は3つ。1.BodyLock:どの方向を見ても常に表示(GoogleGlassとかはこれのはず)、2.WorldLock:自分の周辺空間に表示、3.排他的表現:特定アプリ起動時だけ表示。 #decode16
— Riftup@HoloDeveloper (@WheetTweet) 2016年5月24日
公式ページでUnityによるアプリ開発方法は、「排他的表現」に該当します。しかし、実際はUnityでもWorld Lockのアプリを作ることができたので、今回はその方法を解説します。
なお、以下の環境で動作を確認しています。
- Unity 5.5.0 f3
- Windows 10 Pro
- Visual Studio Update 3
1. 準備
まずはUnity側で何か準備します。私の場合は、1年ぶりにuGUI minimapのアセットのサンプルシーンを使ってみました。uGUI minimapの概要や詳細については、下記をご確認ください。
【Unity】任意のシーンからマップを作るアセットUGUI MiniMapの使い方概要とTips紹介 - CrossRoad
uGUI minimapをインポートしたら、サンプルシーンを開きます。なお、この方法ではHoloToolKitは使いません。
2. ビルドとデプロイ手順
UnityのBuild Settingsを開き、現在開いているシーンをビルド対象にして、下記のように設定します。
Player Settingsは下記のようにします。Virtual Reality Supportedにチェックを入れない、が重要です。
ここまでできたら、Buildボタンを押して適当なフォルダを指定し、UWPのプロジェクトファイルを出力します。
(ここは通常のHoloLensアプリの作り方と同じです)
この後は、Visual Studioでプロジェクトを開きます。(拡張子slnをダブルクリックしても開きます)
Target Deviceをx86に指定します。
続けて、Deploy Solutionを選択します。
これでHoloLensにアプリがデプロイされます。
3. 動作確認
HoloLensの実機でアプリを起動ます。通常の作り方だと、視界全体にMade with Unityのロゴが出ますが、今回はWindowの中に表示されています。
動かすとこのようになります。
UnityのFPS ControllerのカメラワークをHoloLensのヘッドトラッキングで操作しています。前進移動は、キーボードの上キーです。また、HoloLensの注視カーソルも生きていて、uGUIかOnGUIのボタン上でAirTapすると、タップ相当の操作もできます。動画の中でも見づらいですが、小さな白い点が常に表示されており、これが注視カーソルです。
このように、他のアプリケーションを表示させることもできます。
ただし、World Lock表示したUnityアプリを操作できるのは、UnityアプリのWindowがフォアグラウンドであるときだけです。
4. 終わりに
UnityでWorld Lockアプリができると、ユーティリティアプリとか、ゲーム以外にもUnityの特性を活かしたアプリができそうですね。こんな感じで、また色々調べてみたいと思っています。