Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
HoloLens開発入門(2)

HoloLens開発入門(2)

初めてのHoloLens開発(2D/Holographicアプリ)[環境準備~実行、HoloToolkit-Unity活用]
― HoloLensアプリで未来をこの手に ―

2017年1月18日 改訂(初版:2016/08/22)

正式リリース前にHoloLensアプリ開発の方法や特徴をつかもう。HoloLens向け2DアプリとHolographicアプリ、それぞれの開発のポイントを説明する。

Microsoft MVP for Windows Platform Development 初音 玲
  • このエントリーをはてなブックマークに追加

注意事項

 本稿で検証に使用したMicrosoft HoloLens Development Editionのソフトウェアやハードウェア、APIは、暫定的なものであり、正式版では変更される可能性がある。

 現実と仮想が融合するMixed Realty(MR)プラットフォーム用デバイスであるHoloLens(ホロレンズ)は、今まで映画の中にしかないと思っていた“未来”を一気にその手につかむことができるデバイスだ。厳密には触覚に訴えるタイプのMRではなく、いわば「“未来”を視覚と聴覚に叩き込むタイプのMR」と言ってもいいだろう。しかも、HoloLensで動作するアプリは、一般的なWindows 10と使い慣れたVisual Studio 2015 Update 2以降+C#/Visual Basic .NETを使って、既存の開発ノウハウの延長線上で開発が可能だ。

 前回説明したように、HoloLensで動作するアプリは2DアプリHolographicアプリに大別される。2DアプリはVisual Studioを使ってUWP(Universal Windows Platform)アプリとして作成する。HolographicアプリはUnityを使ってUWPアプリとして作成する。

 本稿では、正式リリース前にいち早くHoloLensアプリ開発の方法や特徴をつかんでいただけるよう、2Dアプリ/Holographicアプリそれぞれの開発の基礎を紹介する。なお本稿は、Visual Studio 2015やUWPアプリ開発の経験がある人をメインターゲットにしており、細かな開発ステップの説明は割愛している。

2Dアプリ開発概要

開発環境の用意

 HoloLens用の2Dアプリを開発するためには、(執筆時点で最新の)Visual Studio 2015 Update 3でUniversal Windows Platformアプリ(以下、UWPアプリ)を作成できるようにセットアップすればよい。Visual Studio 2015のインストール時のデフォルト設定では、図1に示すようにUWPアプリの開発に必要な[ユニバーサル Windows アプリ開発ツール]の「Tools(1.4.1) and Windows 10 SDK (10.0.14393)」が選択されていないので忘れずに選択する。

図1 Visual Studioのインストール設定

新しいプロジェクトの作成

 開発環境が用意できたら、Visual Studioを起動して、メニューバーから[ファイル]-[新規作成]-[プロジェクト]メニューをクリックして、表示されるダイアログ(図2)で[空白のアプリ (ユニバーサル Windows)]を選んで、新規にプロジェクトを作成する。

図2 新規プロジェクト作成

実機デプロイ

 HoloLensであることを意識せずにUWPアプリのお作法に基づいてアプリを作成したら、HoloLensをUSBで開発PCに接続して、デプロイ先として「Device」を指定して実行すれば(図3)、HoloLens実機に2Dアプリをデプロイできる。

図3 実機デプロイ

 なお、このときにHoloLens側を「開発者モード」にしておくことを忘れないようにする。このあたりは、Windows 10 Mobileでの実機デプロイと同様の流れだ。具体的な設定手順は、後述の「Holographicアプリ開発概要」-「HoloLens側の準備」で写真付きで説明しているので、そちらを参照してほしい。

2Dアプリの実例

 HoloLens用2Dアプリは、UWPアプリとして作成すればHoloLensにデプロイするだけで動作する。その実例として、「富士通フォーラム2016」に参考展示されていた株式会社富士通ソーシアルサイエンスラボラトリ製のUWPアプリ「FUJITSU Software LiveTalk」をHoloLensで実際に動作させたときのサンプル動画をご覧いただこう。

 これは外から有線LANを引き込み、電波暗室内でWi-Fi接続が可能な国内某所の電波暗室にHoloLensを持ち込んだときの動作映像になる。HoloLensを意識せずに作成されたアプリではあるが、リビルドもせずに実機デプロイから動作までが可能であった。

動画1 HoloLens 2Dアプリ実例

 動画では、電波暗室の壁にグリッド上の模様があるので、起動したアプリが電波暗室の壁のグリッド上の模様と同じ傾きで表示されている、つまり、壁にきちんと張り付いているのが分かる。また、発話をHoloLensのマイクで取得し、それを音声認識により文字にしている様子も見て取れる。画面操作なども、HoloLensが認識した指の動きがアプリにタップとして認識されているのも分かる。

 このように特別な手間なしにHoloLensでアプリが動いてしまうというのは驚異的だ。

 また、ストアでのアプリ配布も手軽である。具体的には、アプリをストアに登録する時に配布先として「Windows 10 Desktop」「Windows 10 Mobile」「Windows 10 Holographic」が選択できるようになっているので、「Windows 10 Holographic」も選択することで、そのアプリがストアから直接入手可能になる。

Holographicアプリ開発概要

開発環境の用意

 Holographicアプリを作成するにはUnityを使うのがよい。Visual Studioのインストールが完了したらUnityのインストールも行っておく。

 (執筆時点で)Holographicアプリ作成に対応しているのは、最新版のUnity 5.5.0f3だ。インストーラーを起動したら64bitを選択し、コンポーネント選択は初期状態(Unity 5.5.0f3、Documentation、Standard Assets、Microsoft Visual Studio Tools for Unity、Windows Store .NET Scripting Backend)のチェックを外さずにインストールを継続する。

図4 Unity Download Assistant

 なお、執筆時点でUnity 5.5.0f3に対しては、Unityのパッチセット(更新プログラム)として5.5.0p4まで提供されている。

 UnityでHolographicアプリを作成する場合、HoloToolkit-Unityを使うと便利だ。リンク先はGitHubのリポジトリとなっているので、そこからZIPファイルをダウンロードして任意の場所に展開しておこう。Holographicアプリ開発を効率化するためのスクリプト&コンポーネント集としてHoloToolkitがマイクロソフトによって公開されているが、このHoloToolkit-Unityは、HoloToolkitの内容をUnity向けに最適化したものである。

新しいプロジェクトの作成

 Unityを起動したら、右上の[New]アイコンをクリックしてプロジェクト名を設定し、[Create project]ボタンをクリックして新規プロジェクトを作成する。

図5 Unity新規プロジェクト作成後の画面

 作成できたら図5のように表示されるので、画面下部の[Project]タブのAssetsフォルダーの中に、先ほど展開しておいたHoloToolKit-UintyのAssetsフォルダーの中身をコピーする(図6)。

図6 HoloToolKit-Unityの設定(全アセットのコピー)

UnityのAssetsフォルダーの右クリックメニューから[Show in Explorer]を選択してエクスプローラーで該当フォルダーを開き、エクスプローラー間でドラッグ&ドロップすることでコピーすればよい。なお、HoloToolkit-Examplesフォルダーはコピーしなくてよい。

空間をワイヤーフレームで表示するための定義

 左側の[Hierarchy]ウィンドウにある「Main Camera」と「Directional Light」がある場合はそれらを削除してから、[Project]ウィンドウにある[Assets]-[HoloToolkit]-[Input]-[Prefabs]-[HoloLensCamera]を[Hierarchy]ウィンドウにドラッグ&ドロップする。図7はそれを行った後で、[Hierarchy]ウィンドウ内に「HoloLensCamera」が新たに配置されたのが分かる。

図7 HoloToolkitプレハブの[HoloLensCamera]をドラッグ&ドロップした状態

 同様に、[Assets]-[HoloToolkit]-[SpatialMapping]-[Prefabs]-[SpatialMapping]と[Assets]-[HoloToolkit]-[Input]-[Prefabs]-[Cursor]-[Cursor]も[Hierarchy]ウィンドウにドラッグ&ドロップする。

シーン設定

 メニューバーの[HoloToolKit]-[Configure]-[Apply HoloLens Scene Settings]メニューをクリックする。この作業により、画面設定がHoloLens用に設定される。具体的には次の4つの設定が行われる。

  • Move Camera to Origin: アプリ起動時にカメラ位置を0,0,0にする
  • Camera Clears to Black: カメラのBackgroundにする
  • Update Near Clipping Plane
  • Update Field of View

プロジェクト設定

 メニューバーの[HoloToolKit]-[Configure]-[Apply HoloLens Project Settings]メニューをクリックする。この作業により、[Build Settings]がUWPアプリ用に変更される。図8は、メニューバーの[File]-[Build Settings]メニューを実行してダイアログを表示したところだ。[Platform]が「Windows Store」で、その[SDK]が「Universal 10」となっており、UWPアプリ用であることが確認できる。

図8 [Apply HoloLens Project Settings]後の[Build Settings]の内容

ダイアログの[Player Settings]ボタンをクリックすると、Unityの右側にある[Inspector]ウィンドウはこのような表示になる。[Other Settings]タブの[Virtual Reality Supported]チェックボックスにチェックを入れると、「Virtual Reality SDKs」が「= Windows Holographic」となる。

Capabilitiesの設定

 メニューバーの[HoloToolKit]-[Configure]-[Apply HoloLens Project Settings]メニューをクリックする。[SpatialPerception]チェックボックスにチェックが入ってなかったらチェックして[Apply]ボタンをクリックする。

UWPソリューション出力

 [Build Settings]ダイアログで[Build]ボタンをクリックしてUWPアプリのソリューションを出力する。図9はその出力例である。

図9 生成されたソリューション

HoloLens側の準備

 HoloLensの[Settings]-[Update & Security]-[For Developers]を開き、[Developer mode]をオンにしておく(図10)。

図10 Developer modeの有効化

 USBケーブルでPCとHoloLensをつないで、HoloLens側で図10にある[Pair]ボタンをクリックする。この際に取得できる、PCとHoloLensのペアリング用PINコードを(後で使うので)メモ用紙などに書き留めておく。

実機デプロイ

 生成されたソリューションをVisual Studioで開いたら、アーキテクチャを「x86」にしてデプロイ先を「Device」にして実行する(図11)。

図11 実機デプロイ設定

 するとPINの入力ダイアログが表示されるので(図12)、先ほど取得したPINコードを入力する。

図12 PINの入力

実行

 この状態で起動すると、空間マッピングをメッシュで表示してくれる。

動画2 HoloLens Holographicアプリ実例

 このようにUnity HoloLensにHoloToolkit-Uintyを組み合わせて使えば、基本的な部分はコードを書かなくても実装できる。

HoloToolkit-Unityを活用しよう

 今回のサンプルは基礎の基礎ということで空間マッピングを表示しただけだが、HoloToolkit-Unityには他にも便利な機能がたくさん入っている。

機能 内容説明
Build ビルド&デプロイの自動化をサポート
CrossPlatform Win32やWindows Runtimeをラップしたもので内部的に利用
Input カーソル、視線、ジェスチャー、音声コマンド関連機能
Sharing 複数のHoloLensで「共有」を使うためのネットワーク関連機能
SpatialMapping 空間マッピング関連機能
SpatialSound 空間音響関連機能
SpatialUnderstanding 空間スキャン関連機能
UI 2m先に表示するのに適した文字表示関連機能
Utilities カメラ関連などアプリ内で共通的に活用できる便利なものいろいろ
表1 HoloToolkit-Unityの主な機能

各機能の名前は、/Assets/HoloToolkitフォルダー内にある項目と一致させている。

 これらのHoloToolkit-Unity機能を組み合わせて応用して使えば、HoloLensでやりたいことが比較的簡単に実装できる。

 以上、ここまでの説明でHoloLens開発はかなり手軽であると分かった。それでも「HoloLens対応アプリを作成するのはやはり面倒そうだからしたくない」という人もいるかもしれない。その背景には「グラフィックを用意できないから作成できない」というのがあるのではないだろうか。HoloLens開発を避けようとする、この最後の逃げ道は、下記の2つの方法でふさぐことができる。

  • (1)Unityのアセットストアから入手する(例:ユニティちゃん)
  • (2)映像系オブジェクトを出さずに、テキストと空間音響だけで作成する

 どうだろう。もう「HoloLensで自分のアプリを動かしたい」という欲求を否定する道はそれほど残ってないのではないだろうか。ぜひ恐れずにHoloLens開発に今から着手してほしい。

まとめ

 HoloLens対応のアプリを作成するための一連の流れは確かに約束事やステップが多い。しかし、そういったお約束を守ってしまえば、思った以上に既存のアプリ作成ノウハウが転用できることに気付いていただけたのではないかと思う。今までのAR/VR作成環境がそれぞれのデバイスに特化した形であったのに比べると、拍子抜けするぐらいに普通だと感じたはずだ。

 もちろん、今回はあくまでも概要・基礎編であるし、UWP向けのHolographic Extensionsも未提供な状況での説明なので、もっと本格的にHoloLensの特性を生かしたアプリを作ろうと思ったら、さまざまなノウハウが必要になってくるだろう。

 いわく、既存AR/VRでの表現方法の知見。いわく、3Dモデリングの知見。いわく、Kinectなどと共通のセンサーアプリ作成の知見。いわく、空間音響をうまく使うための知見。いわく、……。これら全ての知見を学ぶのは大変だ。しかしながら、そんな大変さを背負ってでも、実現したい“未来”を手に入れられるなら、開発に着手したくなるのがHoloLensだ。

 最後にHoloLensを被ったとある開発者の言葉を紹介して、前回~今回で書いてきた本概要を終わりたいと思う。なお次回からは、いよいよHoloToolKit-Unityの各機能を掘り下げていく。

  • ひたすらすごい。言葉では表現不能。本当のイノベーション
  • 現実? リアル? ナニコレ?
  • 60fps!!!!! マジかよ的な
  • 電池持ちがいい! 数時間楽勝で持つという。ToF、RGB、センサー付きで3~4時間も持つ
  • 移動して見られて空間に名前付けできる。ヤベェ
  • 全く熱くならない、軽いスゲェ。なにこれやばい
  • 空間への張り付き感が今までのデバイスを超えている
  • ヤバさの次元が違う
  • IllumiRoomがこのデバイスで完結している
  • 空間に配置、自分が動いて回り込み!!! ナニコレヤヴァイ!!!!
  • 感触的にはリアルタイムメッシュ、PCL
  • Oculus楽勝超え感
  • ToFの点滅間隔がリアルタイムじゃなく、タイミングで何か制御している感じ

 こんな言葉を自分が作ったアプリを体験した人から聞いてみたいと思いませんか?!

【コラム】Visual Studio 2017 RCでHolographicアプリを作成するには

 Visual Studio 2017 RCのインストーラーでUnity関連をインストールすると、Unity 5.4.0fがインストールされる。ただしこのUnityは、Windows Store .NET Scripting Backendがインストールされないなど、HoloLensアプリ作成には最適化されていない。よって、Visual Studio 2017 RCをお使いになる場合は、Unity関連をインストールせず、本稿の内容に沿ってUnityのサイトからUnity 5.5.0f3以降をインストールした方がよい。

図 Visual Studio 2017 RCのインストール画面

HoloLens開発入門(2)
1. MRとは? HoloLensのハードウェア/機能/アプリ動作/ユーザー操作

「MR」とは何か? HoloLensが持つハードウェア概要と機能を紹介し、2DアプリとHoloLensアプリの動作について説明。また、ユーザー操作の方法を解説する。

HoloLens開発入門(2)
2. 【現在、表示中】≫ 初めてのHoloLens開発(2D/Holographicアプリ)[環境準備~実行、HoloToolkit-Unity活用]

正式リリース前にHoloLensアプリ開発の方法や特徴をつかもう。HoloLens向け2DアプリとHolographicアプリ、それぞれの開発のポイントを説明する。

サイトからのお知らせ

Twitterでつぶやこう!