(2018/06/17追記)
今更ですが、Unity 2017.2 以降Vuforiaが正式にサポートされていますので、合わせて本記事を更新しました。
vuforiaとは?
vuforiaは、Qualcommにより提供されているAR開発をサポートするライブラリです。
Unity, iOS, Android向けに提供されていますが、開発の簡単さからUnityが使われることが多いです。
基本的に無料で利用することができます。
vuforiaをUnityで使用できるようにする
次の手順で準備します。
- vuforiaにデベロッパー登録をする
- ライセンスキーを登録する
- データベースを生成し、ARマーカーの情報を登録する
- 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アプリケーションを作成してみましょう。
以下の手順で実施します。
- ARカメラのオブジェクトを配置する
- ImageTargetのオブジェクトを配置する
- ImageTargetのオブジェクトと、表示させたい3Dオブジェクトを紐付ける
- アプリケーションを実行する
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