CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

【HoloLens】UWPアプリのデプロイ手順、動作確認結果とTips紹介

先日、ついに日本でもHoloLensが発売されました。下記のタイトル通り、1/18から日本でもちゃんと届きました!

Microsoft HoloLens のプレオーダーを本日より開始。2017 年 1 月 18 日(水)より順次提供 - News Center Japan

また、私にHoloLensのすごさを教えてくださった中村さんが、HoloLensを中心とした会社を起こされました。

http://www.naturalsoftware.jp/entry/2017/01/18/225852

中村さん、およびCoFounderの方々は、HoloLens関係の日本の第一人者と言っても過言ではないと思います。事業拡大することを願っています!

HoloLensを入手した一人として、私も色々試してみたいと思っていますが、今回は、UWPアプリをHoloLensの実機で動かす方法について簡単に解説します。

Unityについては、すでに先ほどの中村さんや、@yuujiさんなどが、Unityで開発するときの詳しいtipsをまとめてくださっていますのでご参考ください。

http://www.naturalsoftware.jp/archive/category/HoloLens

http://2vr.jp/

1. UWPについて

下記のブログで紹介した通りですが、参考までに再掲します。UWPとは、Universal Windows Platform の略です。Windows 10 Family上で共通で動く仕組み、と考えるのが良いと思います。

そして、UWPの概念に沿ったアプリケーションをUWPアプリと呼びます。UWPアプリであれば、異なるWindows10搭載のデバイスで動作します。

Windows10 MobileにUnityアプリを実機転送する方法とTips紹介 - CrossRoad

注意
  • デバイス別の画面解像度設定は必要です。
  • 「電話をかける」機能がMobile端末にしかないなど、特定のWindows 10 OS端末にしかない機能は、マニフェストファイルで制限をかける必要があります。

2. HoloLensでUWPアプリをインストールする方法

上記の通り、UWPはWindows10の搭載デバイスであれば、どれにでもインストールできます。方法も簡単です。まず、HoloLensをPCと接続します。

Visual Studioでプロジェクトを作ったら、こののように①CPUアーキテクチャをx86に変更し、②deploy対象をDeviceに変更します。

Visual StudioでCPUアーキテクチャとDeploy対象を変更する画面

次に、Build / Deploy Solutionを実行します。

Visual StudioでDeploy Solutionを実行する画面

すぐに試したい方は、下記のサンプルコードを使うと良いと思います。UWPアプリのサンプルが多数入っています。

GitHub - microsoft/Windows-universal-samples: API samples for the Universal Windows Platform.

[注意事項]
  • HoloLensで起動するけど使えない、というサンプルコードもいくつかあります。

(UWPは共通でコードを使えるけど、どんなデバイスにも全て使えるわけではないため、manifestや#ifで制限をかける必要があります)

  • SharedContentというフォルダは残しておく必要があります。

3. 試した結果

3-1. Map Sample

これはMap Sampleというプロジェクトですが、AirTapとドラッグで地図を動かすことができました。

Map Sampleの動作画面

3-2. HolographicSpatialMapping

実は、UWPアプリのサンプルにはHoloLens向けの「HolographicSpatialMapping」もあります。ただし、当然ですが、HoloLensもしくはHoloLensエミュレータでしか動きません。

実機にデプロイして動作させた結果がこちらです。

HolographicSpatialMappingアプリで実世界をメッシュ状に表示した例

このように、実世界をメッシュ状に表示できます。また、AirTapを1回実行すると、このように白いモデルで表示することもできます。

HolographicSpatialMappingアプリで実世界を白いモデルで表示した例

(2枚の写真は多少ずれたところを撮影しています)

3-3. Simple3DGameDX

DirectXを使うFirst Person Shooterのゲームサンプルもありました。

Simple3DGameDXをHoloLensで動作させた画面

AirTapで的に当てるかと思ったのですが、残念ながらそのままでは動きませんでした。

3-4. 複数起動させる

2016年5月に開催されたMicrosoft主催のカンファレンス「de:code 2016」では、HoloLensのアプリケーションは以下の3種類であると発表されました。

Unityでアプリを作ると、原則「排他的表現」となり、他のアプリが見えなく(従来のWindowsPCで言えばフルスクリーン的に)なります。UWPでは、原則World Lock扱いになるため、このように複数起動させることもできます。

HoloLensで複数アプリを起動させた例

ちなみに、右下と一つ上が水色になっていますが、この2つはUWPでも「排他的表現」の性質を持っているアプリです。

(先ほど紹介した「HolographicSpatialMapping」と、「Simple3DGameDX」)

排他的表現のアプリは、World Lock状態の画面では、splash screen画面が出るだけになります。ちなみに、この画面は、先ほどのGithubのサンプルコードの、SharedContent/media/splash-sdk.png です。

4. その他補足情報

UWPアプリをとりあえず動かすだけなら簡単ですが、Windows10 DesktopやWindows 10 Mobile向けのソースコードがどこまで使えるのかは確認が必要ですね。ちなみに、UWPそのものを勉強したいときは、下記のかずきさんが書かれたslideshare & kindle本がオススメです。

かずきのUWP入門というPDFをSlideShareに公開しました - かずきのBlog@hatena

これについては、日本マイクロソフトでUWPなどのアプリケーション関係のエヴァンジェリストである高橋さんもお勧めされていました。

MVP かずきさんの「かずきのUWP入門」がすごすぎる件について | Microsoft Docs

5. 終わりに

私のメインはUnityですが、ざっと触っただけどもUWPでも色々できそうな気がしました。去年、AndroidとUnityの連携や、CortanaとUnityの連携方法を調べたことがあるので、今後、UWPのいいところをUnityで使えるようにしていこうかな、とも思っています。