Unity + VuforiaでARに挑戦する


## Vuforia

[Vuforia](https://developer.vuforia.com/)は、QUALCOMMが開発しているAR用のSDK(iOS | Android | Unity3D)だそうです。

今回はそれを使って、自前で用意した画像を認識して適当なオブジェクトを表示する方法をメモ。

## 特徴点の抽出

Vuforiaでは、認識させたい画像の特徴点をあらかじめ計算しておく必要がある。
これは特に難しくはなく、Vuforiaのメンバーサイトにログインして、
"Target Manager"を使えば出来る。

### １．ログイン

まずは、[Vuforiaのメンバーサイト](https://developer.vuforia.com/)にログインする。

![スクリーンショット 0025-10-01 17.21.14.png](https://qiita-image-store.s3.amazonaws.com/0/20722/1f2020f8-90f9-e781-d4bc-71ea7b28c15d.png "スクリーンショット 0025-10-01 17.21.14.png")

### ２．データベースの作成

ログインすると上記の画面になるので、"Create Database"で新しいデータベースを作成する。

![スクリーンショット 0025-10-01 17.21.34.png](https://qiita-image-store.s3.amazonaws.com/0/20722/f1a0eb96-c32b-5af5-ab8c-b67ef0feaa3c.png "スクリーンショット 0025-10-01 17.21.34.png")

データベース名はなんでもよいが、プロジェクト名にちなんだものをつけておくとわかりやすいと思う。

### ３．テクスチャのアップロード

認識させたい画像をデータベースに追加します。

![スクリーンショット 0025-10-01 17.22.28.png](https://qiita-image-store.s3.amazonaws.com/0/20722/7b078e47-3173-3f63-8d4c-e1bbe7e4780f.png "スクリーンショット 0025-10-01 17.22.28.png")

認識させたい画像を"Add Target"ボタンを押してアップロードします。

![スクリーンショット 0025-10-01 17.22.42.png](https://qiita-image-store.s3.amazonaws.com/0/20722/fb8bf6da-1ab2-1fc6-d636-da65b8b8bad6.png "スクリーンショット 0025-10-01 17.22.42.png")

この画面での設定は以下にしてみました。
Target Name: （あとでわかりやすい）テクスチャ名
Target Type: Single Image
Target Dimention: 256（適当）
Target Image File: （認識させたい画像）


そうすると、特徴点を抽出するのでしばらく待ちます。

### ４．データのダウンロード

リロードして作業が終わっていたら、データをダウンロードします。

![スクリーンショット 0025-10-01 17.25.55.png](https://qiita-image-store.s3.amazonaws.com/0/20722/21d9314e-30ef-0a9c-d8aa-37169ecf4b86.png "スクリーンショット 0025-10-01 17.25.55.png")


ダウンロードしたいデータにチェックをいれて、"Download Selected Targets"ボタンを押すと、データの種類を聞かれるのでUnityで使いたい場合は、"Unity Editor"にチェックをいれて"Create"します。

![スクリーンショット 0025-10-01 17.26.22.png](https://qiita-image-store.s3.amazonaws.com/0/20722/10a01f5c-7b94-33e0-8b24-b65d4623b82e.png "スクリーンショット 0025-10-01 17.26.22.png")


### ５．Unityにインポート

![スクリーンショット 0025-10-01 17.27.00.png](https://qiita-image-store.s3.amazonaws.com/0/20722/90086df0-739e-b44f-d8c6-ed74802b0040.png "スクリーンショット 0025-10-01 17.27.00.png")

ダウンロードした .unitypackageファイルをダブルクリックすると、
Unityにインポートする画面が表示されます。

![スクリーンショット 0025-10-01 17.27.16.png](https://qiita-image-store.s3.amazonaws.com/0/20722/2d801e7c-97a5-c56f-ee90-36d509dc6657.png "スクリーンショット 0025-10-01 17.27.16.png")

"Import"ボタンを押すと、StreamingAssets/QCAR/フォルダにインストールされます。

![スクリーンショット 0025-10-01 17.28.43.png](https://qiita-image-store.s3.amazonaws.com/0/20722/41121825-82f0-19f7-0fab-f37739f5428a.png "スクリーンショット 0025-10-01 17.28.43.png")

## 使い方メモ

・シーンからMain Cameraを削除する。
・ARCameraをQualcomm Augmented Reality/Prefabsから画面に追加する。
・ImageTargetをQualcomm Augmented Reality/Prefabsから画面に追加する。

・ARCameraのインスペクタで、Data Set Behaviourスクリプトの
　"Load Data Set （自分のデータベース名）"にチェック。
　かつ、"Activate"にチェック。

![スクリーンショット 0025-10-02 14.34.50.png](https://qiita-image-store.s3.amazonaws.com/0/20722/84e04514-80b2-dc6e-bcf5-9dcc7c18dc76.png "スクリーンショット 0025-10-02 14.34.50.png")

・ImageTargetのインスペクタで、Image Target Behaviourスクリプトの
　Data Setで、自分のデータベース名を選択する。
　かつ、Image Targetに認識させたい画像を選択する。

![スクリーンショット 0025-10-02 16.37.38.png](https://qiita-image-store.s3.amazonaws.com/0/20722/cf41b908-f4a3-dfce-c083-cd724b7d5c63.png "スクリーンショット 0025-10-02 16.37.38.png")

## 補足

良く忘れるのが、ARCameraで"Load Data Set ほにゃらら"にチェックを入れること。

大事なことなので二回（略