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

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

- [その1 ARマーカーを登録する](http://qiita.com/chano2/items/2940f2793d761c5564a4)
- その2 Unityで実装する(本記事)

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

DB登録など、vuforiaの始め方全般については、こちらの記事をご参照ください。
[Unityでお手軽AR開発！vuforiaを使ってみる](http://qiita.com/chano2/items/8ddd263f0c2ddddaca85)

# 立体をARマーカーとして読み込むアプリケーションをUnityで実装する
本題に入ります。
以下の手順で実現します。

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

### 1. Unityプロジェクトを作成し、vuforia SDKとDBのパッケージをインポートする
[こちら](http://qiita.com/chano2/items/8ddd263f0c2ddddaca85#4-vuforia-sdk%E3%81%A8%E6%89%8B%E9%A0%863%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97unity%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AB%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B)を参照してください。
3D Objectにおいても全く同じ手法で行います。

### 2. ARCameraのオブジェクトを配置する
詳しくは[こちら](http://qiita.com/chano2/items/8ddd263f0c2ddddaca85#1-ar%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%AE%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B)を参照してください。
Unityプロジェクトを作成するとデフォルトで入ってきているMainCameraのオブジェクトを削除し、代わりにARCameraのオブジェクトを配置します。
![スクリーンショット 2016-09-30 18.54.34.png](https://qiita-image-store.s3.amazonaws.com/0/83524/54a79b70-6c97-ae7f-c8bf-545f090c928e.png)

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

### 3. ObjectTargetのオブジェクトを配置する
「vuforia」→「Prefabs」のフォルダにあるObjectTargetのオブジェクトを、シーン中の適当な場所に配置します。
**2017.2以降、Unityに統合されたVuforiaを使用している場合、メニューから GameObject > Vuforia > 3D Scan を選択することで ObjectTarget を配置することができます。**
ObjectTargetのInspectorにて、データベースとターゲットを設定します。
![スクリーンショット 2016-09-30 20.08.26.png](https://qiita-image-store.s3.amazonaws.com/0/83524/f143655d-1631-66a9-7581-38aac212e93b.png)
ターゲットを設定すると、物体の情報が写真として表示されるようになるので、わかりやすいですね。

![スクリーンショット 2016-09-30 20.04.09.png](https://qiita-image-store.s3.amazonaws.com/0/83524/be173d2c-63cd-3fb0-8d1e-05e4b8c5f43d.png)

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

![Screenshot_20160930-193015.png](https://qiita-image-store.s3.amazonaws.com/0/83524/acfa9e27-7812-8a82-4f9a-e8b8d9808c1c.png)

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

### 4. ObjectTargetと表示させたい3Dオブジェクトを紐付ける
[ImageTargetの時](http://qiita.com/chano2/items/8ddd263f0c2ddddaca85#3-imagetarget%E3%81%AE%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%A8%E8%A1%A8%E7%A4%BA%E3%81%95%E3%81%9B%E3%81%9F%E3%81%843d%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E7%B4%90%E4%BB%98%E3%81%91%E3%82%8B)と同様に、表示させたいGameObjectをImageTargetの子オブジェクトとして配置します。
![スクリーンショット 2016-09-30 19.01.12.png](https://qiita-image-store.s3.amazonaws.com/0/83524/1b6fda4a-2fc6-a281-aa9b-ba18e59548c0.png)

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

これで準備は完了です。

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

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

![スクリーンショット+2016-08-25+19.39.41.png](https://qiita-image-store.s3.amazonaws.com/0/83524/acab54b4-643b-56c1-745d-7683bad8810c.png)

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

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