HoloLensでUWPアプリを動かしてみる

先日、ついに日本でもHoloLensが発売されました。

下記のタイトル通り、1/18から日本でもちゃんと届きました!

news.microsoft.com


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

www.naturalsoftware.jp

中村さん、およびCoFounderの方々は、HoloLens関係の日本の第一人者と言っても過言ではないと思います。

事業拡大することを願っています!


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


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

www.naturalsoftware.jp


f:id:Takyu:20170122112249j:plain
UnityでHoloLensアプリケーション開発Tips | develog.holo



======

目次

1, UWPについて

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

3. 試した結果

4. その他補足情報

5. 感想

======

1. UWPについて

下記のブログで紹介した通りですが、参考までに再掲します。


UWPとは、Universal Windows Platform の略です。Windows 10 Family上で共通で動く仕組み、と考えるのが良いと思います。

そして、UWPの概念に沿ったアプリケーションをUWPアプリと呼びます。

UWPアプリであれば、下記の概念図のように同一アプリが異なるデバイスで動作します。

f:id:Takyu:20160601134335j:plain


magicbullet.hatenablog.jp

[注意]

・デバイス別の画面解像度設定は必要です。

・「電話をかける」機能がMobile端末にしかないなど、特定のWindows 10 OS端末にしかない機能は、マニフェストファイルで制限をかける必要があります。

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

上記の通り、UWPはWindows10の搭載デバイスであれば、どれにでもインストールできます。

方法も簡単です。まず、HoloLensをPCと接続します。

Visual Studioでプロジェクトを作ったら、

f:id:Takyu:20170122075723p:plain

のように、①CPUアーキテクチャx86に変更し、②deploy対象をDeviceに変更します。

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

f:id:Takyu:20170122075849p:plain


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

github.com

f:id:Takyu:20170122080127j:plain


【注意事項】
・HoloLensで起動するけど使えない、というサンプルコードもいくつかあります。
(UWPは共通でコードを使えるけど、どんなデバイスにも全て使えるわけではないため、manifestや#ifで制限をかける必要があります)

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

3. 試した結果

3-1. Map Sample

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

f:id:Takyu:20170121004331j:plain

3-2. HolographicSpatialMapping

実は、UWPアプリのサンプルにはHoloLens向けの「HolographicSpatialMapping」もあります。

ただし、当然ですが、

Additional remarks

Note The Windows universal samples for Windows 10 Holographic require Visual Studio 2015 Update 2 to build, and a Windows Holographic device to execute. Windows Holographic devices include the Microsoft HoloLens and the Microsoft HoloLens Emulator.

とあるように、HoloLensもしくはHoloLensエミュレータでしか動きません。


実機にビルドしてみました。

f:id:Takyu:20170121003930j:plain


このように、実世界をメッシュ状に示すことができます。また、AirTapを1回実行すると、

f:id:Takyu:20170121003944j:plain

のように、白いモデルで表示することもできます。

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


3-3. Simple3DGameDX

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

f:id:Takyu:20170121005111j:plain


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

3-4. 複数起動させる

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


Unityでアプリを作ると、原則「排他的表現」となり、他のアプリが見えなく(従来のWindowsPCで言えばフルスクリーン的に)なります。

UWPでは、原則World Lock扱いになるため、このように複数起動させることもできます。

f:id:Takyu:20170121005011j:plain


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

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

排他的表現のアプリは、World Lock状態の画面では、splash screen画面が出るだけになります。

ちなみに、この画面は、先ほどのGithubのサンプルコードの、

SharedContent/media/splash-sdk.png

です。

4. その他補足情報

UWPアプリをとりあえず動かすだけなら簡単ですが、Windows10 DesktopやWindows 10 Mobile向けのソースコードがどこまで使えるのかは確認が必要ですね。

ちなみに、UWPそのものを勉強したいときは、下記のかずきさんが書かれたslideshare & kindle本がオススメです。

blog.okazuki.jp


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

blogs.msdn.microsoft.com

5. 感想

私のメインはUnityですが、ざっと触っただけどもUWPでも色々できそうな気がしました。

去年、AndroidとUnityの連携とか、

magicbullet.hatenablog.jp


CortanaとUnityの連携方法とかを調べたこともあるので、

magicbullet.hatenablog.jp


今後、UWPのいいところをUnityで使えるようにしていこうかな、とも思っています。