ARとは

最近話題の「ポケモンGO」ですが、その特徴の一つはARモードでのポケモンをキャッチする画面です。

「ポケモンGO」公式サイト

ARとはAugumented Realityの略で、日本語訳では「拡張現実」となります。「ポケモンGO」の場合は単に背面カメラの映す画像にポケモンを載せただけでも現実とリンクしている感じがあり、楽しいのだと思います。

ポケモンGOはシンプルなARの例ですが、特定の画像や映像を認識して3Dモデルを現実にマッチさせるような、より高度なアプリも作成可能です。特に本連載で現在取り上げているGear VRの場合、使用するスマホには背面カメラがあるので、これを利用することでVR HMDでありながらARとしても使うことができます。

今回はVuforiaというARライブラリを利用して、Gear VR用のARとVRを行ったり来たりするアプリの制作手順を紹介します。

Vuforiaは用途によっては費用が発生しますが、今回の記事のような使用にはデベロッパー登録をするだけで使えます。

開発環境について

今回の開発環境のバージョンは以下のとおりです。

  • Unity 5.3.5f1

また、本連載第7回で書いた手順のように、Gear VR用コンテンツの開発環境は整っている前提です。

Vuforiaのダウンロード

まず、Vuforia Developerサイトにて、規約に同意して開発者登録します。

Vuforiaにはさまざまな機能があり、さらにiOSネイティブ、Androidネイティブ、Unityという3つのプラットフォーム向けのサンプルプロジェクトが多数用意されています。

Vuforia Developerサイトにあるダウンロードサンプルのうち、今回Gear VR用に使用するのは、Digital Eyewearという見出しにあるサンプルで、Unity用のデータへのリンクをクリックしてダウンロードします。

今回ダウンロードされたファイル名は「vuforia-samples-eyewear-unity-5-5-9.zip」でした。このzipファイルを展開してみると、二つのパッケージ(いわゆる、Unityのアセット)が入っています。

  • ARVR-5-5-9.unitypackage
  • StereoRendering-5-5-9.unitypackage

このうち、今回使うのはARVRサンプルです(StereoRenderingは、Epson BT-200等、スマートグラス用のサンプルです)。設定の手順についてはVuforia サイト内に説明があるので、これを参考に作業を進めていきます。

App Keyの生成

Vuforiaを使ったアプリを制作する場合、Vuforiaの開発者サイトにてアプリ毎にApp Keyを生成する必要が あります。

License Managerページにアクセスし、「Add License Key」というボタンを押すと設定画面が開きます。

今回は次のように設定しました。

  • Application Name : 「ARVR1」
  • Device : 「Mobile」
  • License key : 「Starter - No Charge」

次のページで「Confirm」ボタンを押すと、登録が完了します。 登録後アプリ一覧でARVR1を選び、次のページ内にある「License Key」を全選択してコピーします。 License Keyは、続いて作成するUnityプロジェクト内に張り付ける必要があるのですが、一旦テキストファイルなどに貼り 付けておくとよいと思います。

新規プロジェクトを作成

それでは、Unityを開き、新規プロジェクトを作成しましょう。

  1. まずはプロジェクト名です。今回はVuforiaにしておきましょう。

  2. 「Assets」→「Import Package」→「Custom Package…」から、今回使用するunitypackageを取り込みます。すべてが選択された状態のまま「Import」ボタンを押すと、必要なファイルがすべて揃います。

    プロジェクトに取り込まれたもののうち、「Scenes」フォルダに4つのサンプルプロジェクトがあるのがわかります。

    - Vuforia-0-Splash
    - Vuforia-1-About
    - Vuforia-2-Loading
    - Vuforia-3-AR-VR

  3. 今回は、「Vuforia-3-AR-VR」というシーンを使用しますので、ダブルクリックしてシーンを開きます。

書き出し設定

最初に以下の手順で書き出し設定をしておきます。

  1. 「File」→「Build Settings…」でダイアログを開きます。

  2. 「Add Open Scenes」ボタンをおして現在開いている「Vuforia-3-AR-VR」を書き出すシーンにします。

  3. Platformを「Android」にします。

  4. 「Player Settings…」を押して表示されるInspectorパネル内の「Other Settings」タブ内で次の項目を設定します。

    - Multithreaded Rendeingにチェックを入れます。
    - Virtual Reality Supportedにチェックを入れます。
    - Bundle Identifierを適当にk設定します。
    - Minimum API LevelをAndroid 6.0程度にあげておきます。 下図のようになります。

  1. これまでのGear VRアプリと同様に、Assets/Plugins/Android/assets/ 以下にosigファイルを入れておき ます。

シーンの構築とカメラの設定

次に、新規GameObjectや新規カメラをシーン内に作成し、パラメータを設定します。

  1. 作成するオブジェクトは以下のとおりです。階層構造に気を付けつつ、それぞれの位置も整えておきます。

    - CameraRig、TrackableParent、VuforiaCenterAncho : Create Empty で空のGameObjectを作ってリネームし配置します。
    - LeftCamera、RightCamera : Camera を新規作成し、配置します。
    - ImageTargetStones : 既にシーン内に配置されているものを移動して上の画面のような階層に配置します。

  1. 作成したLeftCameraとRightCameraについて設定をしていきます。

    - LeftCamera : Inspectorパネル内で、Target EyeをBothからLeftにします。
    - RightCamera : LeftCamera同様の設定でTarget EyeをRightに変更します。

  1. Hirarchyパネル内でLeftCameraとRightCameraの両方を選んで、以下項目を設定します。

  2. - Clar Flags : Solid Colorを選択
    - Background : 黒色を選択
    - Clipping Plane[Near] : 0.05
    - Clipping Plane[Far] : 300

  1. LeftCameraとRightCameraの両方を選んだ状態のまま、「Add Component」ボタンを押して、”VRIntagrationHelper.cs”を設定します。

    さらに次のようにそのコンポーネントを設定します。

    - LeftCameraのもののみ、Is Leftにチェックを入れます。
    - Trackable ParentについてはLeftCamera、RightCameraの両方とも、LeftCamera直下にある 「TrackableParent」を指定します。

ARCameraの設定

続いて、デバイスの設定です。

  1. HierarchyパネルのUserHead直下にあるARCameraにアタッチされているDigital Eyewear Behaviourの設定をします。

    - EyeWear Type : Video See-Through
    - Stereo Camera Conf : Gear VR (Oculus)
    - Central Anchor Point : Vuforia Center Anchor(追加した空GameObjectです)
    - Left Camera : LeftCamera
    - Right Camera : RightCamera

  1. ARCameraにアタッチされいてるVuforia Behaviour (Script)にある「App License Key」という項目 に、事前にVuforiaのサイトで取得したLicense Keyをペーストします。

これでVuforiaを使ったAR/VRアプリは完成です。ビルドしてGear VRの端末に転送します。

本デモの使い方

起動前に、AR認識に必要な画像を印刷しておきましょう。

「Assets」→「Editor」→「QCAR」→「ImageTargetTextures」→「Stones」内にある、 stones_scaledという石の写真です(印刷せずにPCの画面で表示させても良いのですが、平らな平面においておくほうが良いので印刷をお勧めします)。

アプリ起動後、背面カメラの映す映像が見えますが、これはARモードになっています。先ほど印刷しておいた石の写真を見ると、ここに3Dモデルが配置されます。

印刷した紙を回すと3Dモデルも回ります。

3D空間的に写真を認識して、そこを基準に用意しておいた3Dモデルが配置されているのです。

さらに真ん中にある「VR」ボタンに注視点を合わせると緑になり、そのまま見続けていると、VRのシーンに遷移 します。

VRシーンでは、下方向を見ると「AR」ボタンがあるので、見続けた状態でいるとARシーンに戻ります。

上のスクリーンショットを見てもわかるようにARの画面はVRに比べ画角が小さくなっています。これはスマホの 背面カメラの画角の狭さのためです。単純に引き延ばすとズームした状態になり酔いやすくなるので、ここは今 後の課題となります。

このような課題があるとはいえ、Vuforiaでは自分で写真を用意したり、モデルを用意したりできますので、この サンプルプロジェクトをベースに、ARコンテンツも作れることがわかってきました。

ぜひ皆さんも応用してみてください。

事例紹介

8月に入り、リオ五輪が開催されています。

イギリスのBBCは360度動画をGoogle CardboardやGear VR向けに提供しています。

残念ながら日本国内のストアからはアプリなどを取得することができず視聴できません(ブラウザの視聴は可能です)。

日本でもNHKが360度動画を配信していますが、PCのWebブラウザのみの提供となっており、VR HMDでの視聴は考慮されていません。

筆者は、360度動画をPC上でドラッグして見るのと、Gear VRなどのHMDによる視聴との間には大きな差がある と考えており、NHKの動画提供対応は少々残念です。

五輪は昔から映像配信技術の試金石になっているところありますので、東京五輪の頃にはどのような配信スタイルになるのか楽しみです。

著者紹介


山田宏道 (YAMADA Hiromichi) - 株式会社トルクス 代表取締役

千葉大学工学部卒業。ゲームプログラマーを経て、2005年よりフリーランス。2012年 株式会社トルクスを設立し、コンシューマー向け、ビジネス向けを問わず、さまざまなアプリを受託開発している。

現在、VR関連技術に注力中。2016年4月より島根県奥出雲町に在住。山陰エリアでUnityやVRに興味ある方を募集しています