Unityでお手軽AR開発!vuforiaを使ってみる


(2018/06/17追記)
今更ですが、Unity 2017.2 以降Vuforiaが正式にサポートされていますので、合わせて本記事を更新しました。

vuforiaとは?

vuforiaは、Qualcommにより提供されているAR開発をサポートするライブラリです。
Unity, iOS, Android向けに提供されていますが、開発の簡単さからUnityが使われることが多いです。
基本的に無料で利用することができます。

vuforiaをUnityで使用できるようにする

次の手順で準備します。

  1. vuforiaにデベロッパー登録をする
  2. ライセンスキーを登録する
  3. データベースを生成し、ARマーカーの情報を登録する
  4. vuforia SDKと手順3で作成したデータベースのパッケージをダウンロードし、Unityプロジェクトにインポートする

1. vuforiaにデベロッパー登録をする

vuforia Developer Portalにアクセスし、右上のRegisterからアカウント作成を行います。
入力フォームに必要な情報を入力すれば完了です。

2. ライセンスキーを登録する

手順1で作成したアカウントでログインしている状態で「Develop」→「Add License Key」の順にクリックします。

まず、vuforiaを使用するアプリケーションが開発・検証用のものか、コンシューマーもしくはエンタープライズ向けのものかの選択をします。ここの選択肢によっては料金が発生します。
試しに使ってみる程度であればDevelopmentを選びましょう。

選択した後、開発するアプリケーションの情報を入力すると、License Managerにアプリケーションの情報が追加されます。

作成したアプリケーション名のリンクをクリックすると、下の黒く塗りつぶした領域にライセンスキーが表示されます。
このライセンスキーを後にUnityでの開発で使用します。

3. データベースを生成し、ARマーカーの情報を登録する

vuforia Developer Portalで「Develop」→「Target Manager」の順にクリックし、Target Managerを開きます。
「Add Database」をクリックします。ここでデータベース名とタイプを入力します。
データベースのタイプは以下の3種類です。試しに使用してみる程度であれば、Deviceを選ぶのをおすすめします。

  • Device: アプリケーションを動かす端末にデータベースを保持します。データベースが大きくなると、アプリケーションの容量も大きくなります。
  • Cloud: Developer Portalのクラウド上にデータベースを保持します。アプリケーションの容量は軽くなりますが、2つ以上のARマーカーを同時に追従することができません。
  • Vumark: 新しいARトラッキングの手法のようです。こちらを参照してください。

データベースを作成したら、次にそのデータベースにARマーカーとして読み込みたいターゲットを準備します。
今回は適当な画像データをターゲットとして読み込みましょう。Single Imageを選択し、ターゲットとする画像ファイルをアップロードします。
Widthは現実世界でのターゲットの大きさを指定するようです。経験上は適当に入れてもなんとかなります。

ターゲットの情報を入力したら、画面右上のDownload Databaseをクリックしてターゲットの情報をダウンロードします。ターゲットはunitypackageとしてダウンロードされます。

4. vuforia SDKと手順3で作成したデータベースのパッケージをダウンロードし、Unityプロジェクトにインポートする

(2018/06/17追記)Unity 2017.2 から、vuforia SDK はUnityに統合されました。
Unityのインストーラーにて、 Vuforia ArgumentedReality Support にチェックを入れてからUnityをインストールしましょう。


Unityをインストールして新しいUnityプロジェクトを作成したら、まずメニューバーの Edit → Project Settings → Player を選択し、下図のように XR Settings セクションにある Vuforia ArgumentedReality Supported にチェックを入れます。
これにより Vuforia SDK がUnityで使用できるようになります。

以下、古い情報です。この方法でもUnity用のSDKは使用できますが、Legacyとなっており2017年以降に登場した新しい機能は実装されていません。

vuforia SDK は、Developer PortalのDownloadsからダウンロードできます。Unity用のものを選択しましょう。
アプリケーションを作成するためのUnityプロジェクトに、ダウンロードしたSDKとデータベースをインポートします。

長くなりましたが、これでUnityでvuforiaを使用する準備が整いました。

ARマーカーから3Dオブジェクトを表示させる

ここでは、データベースに登録したARマーカーに3Dオブジェクトを紐付けて表示させるという、簡単なARアプリケーションを作成してみましょう。
以下の手順で実施します。

  1. ARカメラのオブジェクトを配置する
  2. ImageTargetのオブジェクトを配置する
  3. ImageTargetのオブジェクトと、表示させたい3Dオブジェクトを紐付ける
  4. アプリケーションを実行する

1. ARカメラのオブジェクトを配置する

Unityプロジェクトを新規作成するとMainCameraのオブジェクトがすでに存在していますが、それを削除します。
インポートしたUnityパッケージから、「vuforia」→「Prefabs」のフォルダにある「ARCamera」というオブジェクトをシーン中の適当な場所に配置します。


(2018/06/17追記)Unity 2017.2以降で、Unityに統合されたVuforia SDKを使用している場合、下図のように GameObject → Vuforia と選択することで、ARCameraなどVuforiaに関連するGameObjectを配置することができます。
(Hierarchyビューで右クリックしてVuforiaを選択することでもGameObjectの配置ができます)


続いて、ARCameraのオブジェクトのInspectorをいじります。
いじる箇所は下図の赤枠で囲んだところです。

上の赤枠「App License Key」のところには、先ほど登録したライセンスキーをコピー&ペーストしましょう。
したの赤枠「Load データベース名」と、その下の「Activate」のチェックボックスにはチェックを入れましょう。これによりデータベースを有効化できます。
画像のように、複数のデータベースを読み込むこともできます。

2. ImageTargetのオブジェクトを配置する

ARCameraと同様に「vuforia」→「Prefabs」のフォルダにあるImageTargetのオブジェクトを、シーン中の適当な場所に配置します。
ImageTargetのInspectorのうち、下図の赤枠で囲まれた箇所をいじります。

Databaseにはインポートしたデータベース名を、Image Targetにはデータベースの中で作成したターゲット名を選択して入れましょう。

3. ImageTargetのオブジェクトと、表示させたい3Dオブジェクトを紐付ける

表示させたいGameObjectを用意し、ImageTargetの子オブジェクトとします。
これにより、親であるImageTargetと紐付けることができます。

シーン上のGameObjectとImageTargetの位置関係は、ARカメラ上で実際にターゲットを捉えた際にそのまま反映されます。
つまり、シーン上でImageTargetの真上にGameObjectを配置すると、ARカメラ上でもターゲットの真上にGameObjectが表示されます。

図は、将棋の駒である王将の画像の上にUnityちゃんを表示させようとしています。

4. アプリケーションを実行する

ここまで出来たら、アプリケーションを実行してみましょう。
PC内蔵のカメラの映像が映っているはずです。
(お使いのPCにカメラが内蔵されていない場合は、別途Webカメラを用意する必要があります)

このように、ARマーカーに紐付いた3Dオブジェクトが表示されました。

おわりに

以上で、プログラミングなしでも簡単にUnityでAR開発ができることが分かると思います。
もちろん、プログラミングにより開発の幅を広げることもできます。
公式のリファレンスを覗いてみると良いでしょう。
https://library.vuforia.com/api-list

また、Developers Portalには多くのサンプルがあります。
これらを試してみるのも良いでしょう。
https://developer.vuforia.com/downloads/samples
日本語での紹介記事もあります。
http://anchan828.tumblr.com/post/38984394106/vuforia%E3%81%A7%E5%87%BA%E6%9D%A5%E3%82%8B%E3%81%93%E3%81%A8