最近MR/AR系の分野で注目を集めているのは、HoloLensとMeta2だと思います。いずれもかぶることで、実世界に重ね合わせてCGや各種情報を見ることができます。
やりたいことはだいたい同じに見えます。しかし、アプリ開発をする視点で見ると、細かいところが色々と異なっており、アプリ開発時はそれぞれの特徴を把握する必要があります。そこで、いずれHoloLensやMeta2アプリを作る時の参考になればと思い、整理してみました。
(補足)
Metaについては、Meta2を試したことがないため、所持しているMeta1を基準に書いています。
1.操作
どちらも備えている操作と、片方にしかない操作があります。ただし、同じ操作でも操作方法は異なっています。
1.1 HoloLens、Metaで共通な操作
(表の中に出てくるAirTap、Pinch、Grabについては、下記の個別の操作紹介をご確認ください)
操作 | HoloLens | Meta |
---|---|---|
ヘッドトラッキングでカーソル移動 | あり | あり |
オブジェクトの拡大/縮小 | 調整用アイコンをAirTapで選択し、Windowの端をドラッグ | 両手の指で操作(Pinch Out/In) |
オブジェクトの移動 | 調整用アイコンをAirTapで選択し、Windowsの中心に指を合わせて、つまむ様にして移動 | 片手でオブジェクトを握る操作をしてから手を動かす(Grab) |
スクロール | スクロールアイコンをAirTapで選択し、指をつまむ動作をして移動 | Windowsのスクロールアイコン部分に指を合わせてから移動 |
1.2 HoloLens独自の操作
Bloom
手を広げることでStart Menuを出す
AirTap
ヘッドトラッキングによってポインタを移動させ、ポインタが変化したら指をつまむ。これで決定となる。
1.3 Meta独自の操作
Grab
手でオブジェクトを握ることで、オブジェクトを移動させる
Pinch Out/In
両手の指でオブジェクトを拡大、縮小させる
Tap
オブジェクトに触ることで、操作する
HoloLensの場合、ほとんどの操作がAirTapでできるので、覚えることが少なく使いやすいと思います。一方、Metaはスマートフォンベースの操作方法が多く、直感的に使えるという印象を持ちました。
たとえば、Metaでスクロールを実行するには、下記のようにスクロールバーを指で動かすだけです。
しかし、HoloLensでスクロールを実行する場合は、"Scroll Tool"をAirTapしてから手で動かすことになるので、操作が一つ多いことになります。
アプリ開発をするときは、異なる設計思想の操作であることを認識しておくと、使いやすいアプリになると思います。
(どちらがよいのかは、アプリの内容や使い方によるので、判断しづらいところと思います)
2.構成
搭載しているOS | PCは必要?/不要? | |
---|---|---|
HoloLens | Windows10 | 不要 |
Meta | MetaOS(起動画面の雰囲気からAndroidのカスタマイズ版) | 必要 |
Meta1は自身にOSを搭載していますが、実際はHMD(Head Mount Display)のセンサ情報を渡すためだけで、メインの処理は全てPCです。Meta社のHPにあるFAQによると、Meta2でもPC必須は変わらず、ある程度スペックの高いPCが必要になります。
Meta1の場合、さらに別途外部電源も必要だったので、ケーブルだらけになってしまいました。ということで、現状はHoloLensの方が使いやすい構成であると言えます。
3.開発環境
対応する開発環境 | バージョン | 対応するOS | |
---|---|---|---|
Meta | Unity | 4.7.1 or 5.3.4 | Windows8.1 or 10 |
HoloLens | Unity | 5.4 for HoloLens | Windows10 |
Visual Studio | Update2 | Windows10 |
[Metaの補足]
・Depthセンサを細かく制御するにはC++を使う必要があるようです(未確認)。
[HoloLensの補足]
・チュートリアルはUnityベースで書かれており、実際はUnityで作るのがよさそうです。
このように、どちらも開発環境をUnityで統一できます。しかし、Prefabやdllはデバイス固有のため、同一プロジェクトで開発内容を共存するのは現実的ではありません。
そのため、もしHoloLensとMeta向けに同じアプリを作りたい場合、Unityを選択し、表示部分やバックエンドの処理だけ共通化というのがよいと思います。
4.アプリのビルド手順
ビルド手順 | |
---|---|
HoloLens | Unityで開発→Visual Studio向けにビルド→Visual Studioで、全天周のUWPまたは単一UWPとしてビルド |
Meta | Unityで開発→Windowsアプリケーションとしてビルド |
Meta2でどうなるのか、HoloLensの開発方法がどう変わるかがわからないですが、現時点では圧倒的にMetaが便利です。ちなみに、HoloLensについてはEmulatorベースですが、アプリ開発環境の構築手順を書いているので、ご参照ください。
5.アプリの同時起動
Meta1ではUnityアプリをフルスクリーンで実行し、それをミラーリングします。つまり、複数のアプリは起動できないし、Unityでできる範囲のことしかできません。
一方、HoloLensはWindows10ベースで動き、こんな風に複数のウインドウを空間に固定できます。
Meta2でどう変わるかわかりませんが、現状はHoloLensの方が使い勝手がよいと思います。
6.アプリで使える認識エンジン
6-1.標準搭載されているか
音声認識 | 画像認識 | 空間認識 | |
---|---|---|---|
HoloLens | あり(Cortana) | なしと思われる(チュートリアルには紹介なかった) | あり(Spatial Mapping) |
Meta | なし | 特定マーカの認識のみ | あり(SLAM。ただしα版) |
(補足)
SLAM とは、Simultaneous Localization and Mapping です。RGBカメラ、Depthカメラを用いて現在位置を推定しながらその場所のマッピングを行う手法です。
蛇足ですが、下記の記事に紹介されているように、ロボット掃除機「ルンバ」にはSLAMが使われています。
6-2.他社製の認識エンジンを使えるか
音声認識 | 画像認識 | 空間認識 | |
---|---|---|---|
HoloLens | 難しい | OpenCVを使えばできるかも | 不明 |
Meta | Windowsデスクトップ系の一般的機能を利用可 | Windowsデスクトップ系の一般的機能を利用可 | 不明 |
HoloLensで他社製認識エンジンが使えないのは、他社製機能がUWPに非対応であるためです。非常にざっくりした説明をすると、OSがWindows10で動くアプリケーションは、従来のWin32系と呼ばれるランタイムを使って動くタイプ(exe形式のもの)と、Universal Windows Platform(UWP)というタイプの2種類があります。
詳しくは調べ切れてませんが、私の知る限り他社製の認識エンジンはWin32系のWindows、iOS、Androidのどれか(またはどれも)に対応していることが一般的で、UWPに対応している認識エンジンはまだ見たことがありません。
例えば、画像認識系で有名なVuforiaは、2016年3月にHoloLensへの対応を予定していることを発表しました。つまり、これまでUWPには非対応でした。
http://www.ptc.com/news/2016/ptc-brings-vuforia-to-hololens
VuforiaのHPには、希望者はEarly Access Programに応募してほしいとあったので、一般公開まではまだ時間がかかりそうです。
7.終わりに
現時点では一長一短という印象です。そのため、どちらが優れている、を無理に決めるよりは、両者の違いを理解しながら、それぞれに適したアプリを作っていこうと思います。
ちなみに、今回直接比較ができなかったMeta2ですが、MoguraVRさんで紹介されている通り、Meta社と協力してアプリ開発をしてくれる開発者にMeta2が優先的に出荷されることが発表されました。
視野角90度のARデバイスMeta2、当初の予定を前倒し6月上旬に発送開始 | Mogura VR
また、記事にはこんな記述があります。
(Meta社の)グリベツ氏はMetaと協同して早期に開発を始めたい開発者はMetaに直接コンタクトをとってほしいと強調していました。
引用元:視野角90度のARデバイスMeta2、当初の予定を前倒し6月上旬に発送開始 | Mogura VR
メールで連絡を取ってみたところ、幸いにもβ候補に選んでいただくことができました。
Metaから返信来て、Meta2のβプログラム参加対象者に入れてもらいました!αはもう確定してただろうから十分かなー。
— Riftup in VR/MR@JP (@WheetTweet) 2016年6月7日
まだ確定ではないようなので、これからMetaアプリ作って実績を積んでおきます! pic.twitter.com/ZqU8yzjvRQ
ということで、もしMeta2が早期に届いたら、Meta1と何が違っているのか、どうやってアプリを作るのかなども調べてブログに公開しようと思います。