[Unity][vuforia]立体をARマーカーとして認識させる ~その2 Unityで実装する~


はじめに

vuforiaのDBに登録できる形式のうち「3D Object」をARマーカーとして利用する手順について2回に分けて解説します。

本記事はその2回目として、登録したARマーカーをUnityで利用する手順について解説します。

DB登録など、vuforiaの始め方全般については、こちらの記事をご参照ください。
Unityでお手軽AR開発!vuforiaを使ってみる

立体をARマーカーとして読み込むアプリケーションをUnityで実装する

本題に入ります。
以下の手順で実現します。

  1. Unityプロジェクトを作成し、vuforia SDKとDBのパッケージをインポートする
  2. ARCameraのオブジェクトを配置する
  3. ObjectTargetのオブジェクトを配置する
  4. ObjectTargetと表示させたい3Dオブジェクトを紐付ける
  5. 実行する

1. Unityプロジェクトを作成し、vuforia SDKとDBのパッケージをインポートする

こちらを参照してください。
3D Objectにおいても全く同じ手法で行います。

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

詳しくはこちらを参照してください。
Unityプロジェクトを作成するとデフォルトで入ってきているMainCameraのオブジェクトを削除し、代わりにARCameraのオブジェクトを配置します。

上図の赤枠の部分にて、ライセンスキーを入力したりデータベースを有効化したりします。
3D ObjectのデータベースはImageTargetとは別で、図の下部のようにデータベース名の末尾に_OTという文字列が付いています。

3. ObjectTargetのオブジェクトを配置する

「vuforia」→「Prefabs」のフォルダにあるObjectTargetのオブジェクトを、シーン中の適当な場所に配置します。
2017.2以降、Unityに統合されたVuforiaを使用している場合、メニューから GameObject > Vuforia > 3D Scan を選択することで ObjectTarget を配置することができます。
ObjectTargetのInspectorにて、データベースとターゲットを設定します。

ターゲットを設定すると、物体の情報が写真として表示されるようになるので、わかりやすいですね。

ObjectTargetのこの形、どこかで見覚えがないでしょうか?

スキャンの際に使用した、このマーカーの方眼部分にあたります。
この方眼のおかげで、シーン上でも現実世界でのマーカーの大きさが相対的に分かります。

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

ImageTargetの時と同様に、表示させたいGameObjectをImageTargetの子オブジェクトとして配置します。

次に、GameObjectのシーン上の位置を調整します。
ImageTargetと同様に、シーン上におけるObjectTargetとGameObjectの位置関係がそのままARの世界にも反映されます。
位置調整は、ObjectTargetの方眼と、ObjectTargetのInspectorに表示されている物体と方眼の写真を照らし合わせながら行うと良いでしょう。

これで準備は完了です。

5. 実行する

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

ターゲットに設定した物体をカメラに映してみましょう。

このように、立体の上にGameObjectが乗っています!

以上、ざっくりでしたが3D ObjectをARマーカーとして認識させる方法を記載しました。