読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

HoloLensエミュレーターでいくつかアプリを作ってみたのでまとめる

HoloLens

HoloLensエミュレーターでいくつかアプリを作ってみたので、ドキュメントと合わせてまとめてみます。

MRアプリなのでUnityでの開発が主となります。

HoloLens(エミュレーター)が認識した空間を走り回るユニティちゃん

ユニティちゃんが自分の視線の先に向かって走ります。HoloLensの認識した空間を走るので、段差があると落ちます(上るのはできませんw)


HoloLens(エミュレーター)が認識した空間を走り回るユニティちゃん

 

 Holoportation的なやつ

KinectのデータをHoloLensに表示させることで、目の前に人がいるような感覚になります。3次元情報を送っているので、回り込んだりできます(ただし、いまは一台なので、裏は見えません)。

research.microsoft.com


Holoportation的なやつ

 

開発環境

Install the tools

Untiyでアプリを作るときは、下記のツールが必要です

  • Visual Studio 2015 Update 2
  • HoloLens Emulator
  • Unity HoloLens Technical Preview Beta 14
  • Unity用UWP Runtime(UWP書き出し)

Unityの基本設定

Unity development overview

Main Cameraの設定

  • 「Position」 「0, 0, 0」 にする
  • 「Clear Flags」 を 「Solid Color」にする
  • 「Background」を RGBAで「0,0,0,0」にする(黒の透過にすることで重ねる)
  • 「Clipping Planes」の「Near」 を0.85 (メートル)にする

f:id:kaorun55:20160428114618p:plain

MR用の設定

「Player Settings > Windows Store > Other Settings」から。

「Virtual Reality Supported」にチェック、「Virtual Reality SDKs」に「Windows Holographic」が追加される。このチェックをしなかった場合は普通のWindows付きUWPアプリになります。

f:id:kaorun55:20160428115041p:plain

Capabilities(機能)の設定

「Player Settings > Windows Store > Publishing Settings > Capabilities」から。使用する機能にチェックする。HoloLens特有のCapabilityは以下の4つ。あとはネットワークとかそういうのはアプリに合わせて

  • WebCam:写真、ビデオのキャプチャを使う場合
  • SpatialPerception:Spatial Mappingを使う場合
  • Microphone:音声認識系を使う場合
  • picturesLibrary / videosLibrary / musicLibrary:キャプチャデータを保存する場合

f:id:kaorun55:20160428115256p:plain

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」にチェックを入れてビルドします。

f:id:kaorun55:20160428115545p:plain

出力先のフォルダは「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は使えません。

f:id:kaorun55:20160428120021p:plain

これで実行してビルドが通ればエミュレーターが起動します。

f:id:kaorun55:20160428120221p:plain

しばらく待つとHoloLensのOSが起動します。

f:id:kaorun55:20160428120247p:plain

さらに、もうしばらく待つとアプリが配置、実行されます。

f:id:kaorun55:20160428120338p:plain

f:id:kaorun55:20160428120346p:plain

その他雑多に

エミュレーターの起動

2GBの空きメモリが必要です。PCのメモリが16GBあるとよいでしょう。

f:id:kaorun55:20160428121334p:plain

ディスプレイ

Best practices for working with Unity and Visual Studioにもありますが、Unityで開発する際は、Unity Editor、Visual Studio(Unityのコード用)、Visual Studio(UWPビルド用)、HoloLens エミュレーターを起動します。複数ディスプレイあるとはかどります。

f:id:kaorun55:20160428121550p:plain

必要な知識

やってみると色々な知識が必要ですね。。。

  • Unityでの開発知識:Unityを使うので
  • VR、MR系アプリの開発知識:Oculus Riftなどでのアプリ開発のノウハウが使えます(ユーザー=カメラで、動きに合わせて視点が変わるので)
  • UWPの知識:最終的にUWPで出力するので、Windowsストアアプリから続くUWPの知識が必要です
  • UnityからUWPへの変換に関する知識:Unityから一度UWPへビルドしますが、その際にエラーが発生することが結構あります。例えばプラグインのDLLが使えない、コードの互換性がないなど。プラグインやアセットを使う場合には、最小構成でUWP(HoloLensエミュレーターまで持ってこられるか)まで検証すると後戻りが減ります