HoloLensエミュレーターでいくつかアプリを作ってみたので、ドキュメントと合わせてまとめてみます。
MRアプリなのでUnityでの開発が主となります。
HoloLens(エミュレーター)が認識した空間を走り回るユニティちゃん
ユニティちゃんが自分の視線の先に向かって走ります。HoloLensの認識した空間を走るので、段差があると落ちます(上るのはできませんw)
HoloLens(エミュレーター)が認識した空間を走り回るユニティちゃん
Holoportation的なやつ
KinectのデータをHoloLensに表示させることで、目の前に人がいるような感覚になります。3次元情報を送っているので、回り込んだりできます(ただし、いまは一台なので、裏は見えません)。
開発環境
Untiyでアプリを作るときは、下記のツールが必要です
- Visual Studio 2015 Update 2
- HoloLens Emulator
- Unity HoloLens Technical Preview Beta 14
- Unity用UWP Runtime(UWP書き出し)
Unityの基本設定
Main Cameraの設定
- 「Position」 「0, 0, 0」 にする
- 「Clear Flags」 を 「Solid Color」にする
- 「Background」を RGBAで「0,0,0,0」にする(黒の透過にすることで重ねる)
- 「Clipping Planes」の「Near」 を0.85 (メートル)にする
MR用の設定
「Player Settings > Windows Store > Other Settings」から。
「Virtual Reality Supported」にチェック、「Virtual Reality SDKs」に「Windows Holographic」が追加される。このチェックをしなかった場合は普通のWindows付きUWPアプリになります。
Capabilities(機能)の設定
「Player Settings > Windows Store > Publishing Settings > Capabilities」から。使用する機能にチェックする。HoloLens特有のCapabilityは以下の4つ。あとはネットワークとかそういうのはアプリに合わせて
- WebCam:写真、ビデオのキャプチャを使う場合
- SpatialPerception:Spatial Mappingを使う場合
- Microphone:音声認識系を使う場合
- picturesLibrary / videosLibrary / musicLibrary:キャプチャデータを保存する場合
UWPへの出力
HoloLensのアプリはUWP(Universal Windows Platform)で作成します。一度UnityのプロジェクトをUWP用にビルドし(書き出し)てVisual Studio 2015 Update2でビルド、配置します。Unityの「Build Setting」で「Windows Store」から「Universal 10」を選択します(これがない場合には「Unity用UWP Runtime」のインストールを確認してください)。
「UWP Build Type」はどちらでも(ゲーム系はD3D、業務系はXAMLかな?)。
「Unity C# Project」にチェックを入れてビルドします。
出力先のフォルダは「UWP」にしておくと間違いなさそうです(Appにしたらほかの出力がUWPに出てうまく関連づかなかった)。
Unityからの再ビルドについて
Exporting and building a Unity Visual Studio solution
スクリプトはリンクで関連付けられているので、変更の際に再ビルドは不要です。
Unity Editor内でシーンに関連する変更を行った際には再ビルドを行います。
出力データのビルド
出力されたsln(出力先フォルダ、例えば「UWP」の下にできます)をVisual Studioで開きます。プロジェクトの設定を「x86」、実行先を「HoloLens Emurator~」にします。HoloLensはx86環境なのでx64やARMは使えません。
これで実行してビルドが通ればエミュレーターが起動します。
しばらく待つとHoloLensのOSが起動します。
さらに、もうしばらく待つとアプリが配置、実行されます。
その他雑多に
エミュレーターの起動
2GBの空きメモリが必要です。PCのメモリが16GBあるとよいでしょう。
ディスプレイ
Best practices for working with Unity and Visual Studioにもありますが、Unityで開発する際は、Unity Editor、Visual Studio(Unityのコード用)、Visual Studio(UWPビルド用)、HoloLens エミュレーターを起動します。複数ディスプレイあるとはかどります。
必要な知識
やってみると色々な知識が必要ですね。。。
- Unityでの開発知識:Unityを使うので
- VR、MR系アプリの開発知識:Oculus Riftなどでのアプリ開発のノウハウが使えます(ユーザー=カメラで、動きに合わせて視点が変わるので)
- UWPの知識:最終的にUWPで出力するので、Windowsストアアプリから続くUWPの知識が必要です
- UnityからUWPへの変換に関する知識:Unityから一度UWPへビルドしますが、その際にエラーが発生することが結構あります。例えばプラグインのDLLが使えない、コードの互換性がないなど。プラグインやアセットを使う場合には、最小構成でUWP(HoloLensエミュレーターまで持ってこられるか)まで検証すると後戻りが減ります