Cross Road

Unity、VR、MR、ARを中心とした技術ブログ

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

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

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


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

「株式会社ホロラボ」を作りました - Natural Software

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

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

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


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

HoloLens カテゴリーの記事一覧 - Natural Software

======

目次

1, UWPについて

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

3. 試した結果

4. その他補足情報

5. 感想

======

1. UWPについて

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

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

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

Windows10 MobileにUnityアプリを実機転送する - Cross Road

注意

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

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

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

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

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

f:id:Takyu:20180713132953j:plain

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

f:id:Takyu:20180713133004j:plain

すぐに試したい方は、下記のサンプルコードを使うと良いと思います。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とドラッグで地図を動かすことができました。

f:id:Takyu:20170121004332j:plain

3-2. HolographicSpatialMapping

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

ただし、当然ですが、HoloLensもしくはHoloLensエミュレータでしか動きません。

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

f:id:Takyu:20170121003931j:plain

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

f:id:Takyu:20170121003945j:plain

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

3-3. Simple3DGameDX

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

f:id:Takyu:20170121005112j:plain

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

3-4. 複数起動させる

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

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

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

f:id:Takyu:20170121005012j: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本がオススメです。

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

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

MVP かずきさんの「かずきのUWP入門」がすごすぎる件について – 高橋 忍のブログ

5. 感想

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

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

(1) Android StudioでUnity向けmoduleを作る方法 - Cross Road

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

Cortana認識結果を利用してUWP→Unity関数を呼ぶ方法 - Cross Road

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