Kudan AR SDK + Unity + iOS でサンプル動作まで

VuforiaのStarterライセンスが無くなってしまったので、他のARライブラリを探していたら[Kudan](https://japan.kudan.eu/)にたどり着きました。2017年3月に一部の製品ライセンスが[無償化](https://japan.kudan.eu/499)されており、ウォータマーク入りであれば年商100万ポンド(約1.4億円)までは無償で商用にも使えるようです。

機能的な詳細は省きますがマーカー型、マーカーレス型どちらも対応しています。プラットフォームはiOS/AndroidネイティブやUnityをサポートしています。

というわけで、個人開発者的には非常にありがたいライブラリなのですが、なぜかWeb上に情報が少ないのでここにサンプル動作までの流れを書き記しておきます。

# 環境
### 開発環境
* Mac OSX El Capitan
* Unity 5.6.0f3
* Xcode Version 8.2.1
* Kudan SDK for Unity Version 1.5

※Xcode ではすでに実機転送可能な状態になっている前提です。

### 実機動作環境
* iPhoneSE(iOS 10.2.1)

# 手順
基本的には[公式Wiki](https://wiki.kudan.eu/Main_Page)を参照するのが間違いがないと思いますが、一応流れを説明します。

## SDKダウンロード
Kudanの[SDKダウンロードページ](https://www.kudan.eu/download-kudan-ar-sdk/)よりUnity用パッケージをダウンロードします。登録情報やパスワードを入力してアカウントを登録するとダウンロードできます。価格など表示されますが0ポンドなのでそのまま進めます。

## プロジェクト作成

### パッケージのインポート
1. Unityの新規プロジェクトを作成し、ダウンロードしたzipファイル内のKudanARUnity.unitypackageをダブルクリックしてすべてのファイルをインポートします。
2. ProjectビューからAssets >> KudanAR >> Samples >> AngelScene をダブルクリックしてシーンを開きます。

### 開発ライセンスキーの設定
1. [開発ライセンスキーのページ](https://wiki.kudan.eu/Development_License_Keys)からBundle IDとライセンスキーをコピーします。
2. File >> Build Settings 画面で Platform に iOS を選択
3. Player Setting をクリックし、Inspector >> Other Settings >> Identification >> Bundle Identifier に Bundle ID をペーストします。
4. Project >> Assets >> KudanAR >> Samples >> Angel Scene を開きます。
5. Hierarchy >> AngelScene >> Angel Bundle >> Kudan Camera を選択します。
6. Inspector >> Kudan Tracker (Script) >> API Key にライセンスキーを貼り付けます。

※ライセンスキーはシーン毎に設定が必要です。

### Editor API Key の設定
Unity のエディタ上で実行するには、Editor API Key の設定が必要になります。
1. [MY ACCOUNT](https://www.kudan.eu/keys/)のページでログインすると、「Get Editor API Key」ボタンが表示されるので、これを押すとキーが取得されます。
2. Unity で Hierarchy >> AngelScene >> Angel Bundle >> Kudan Camera を選択します。
3. Inspector >> Kudan Tracker (Script) >> Editor API Key に取得したキーを貼り付けます。

### エディタ上での実行
iPhone で実行する前にエディタで実行して動作確認をします。
1. (プロジェクトフォルダ)/Assets/KudanAR/Samples/Textures/lego.jpg の画像を紙に印刷するか、スマホなどで表示しておく
2. エディタ上で実行して、カメラの前にlego.jpgをかざす
3. 天使の像が lego.jpg の上に表示されれば成功

### Xcode プロジェクトの出力
:warning:Kudan SDK for Unity Version 1.5 + Unity5.6 で必要なワークアラウンド
iPhone 向けにビルドする前に以下のスクリプトを修正します(非公式な手順です)。

```diff:(プロジェクトフォルダ)/Assembly-CSharp/KudanAR/Scripts/Components/KudanTracker.cs#270
// Set the API key
if (!string.IsNullOrEmpty(_APIKey))
{
-    _trackerPlugin.SetApiKey (_APIKey, Application.bundleIdentifier);
+    _trackerPlugin.SetApiKey (_APIKey, Application.identifier);
}
```
上記修正を行わないと iOS ビルドで失敗します。これは Unity5.6 での[仕様変更](http://qiita.com/RyotaMurohoshi/items/bdfaed86ecd9c7d26fd3)にプラグイン側が現時点で未対応なことが原因なので、Unity5.5 以下の場合はこのワークアラウンドは必要ありません。

iPhone に Xcode 経由で転送して実行します。
1. File >> Build Setting 画面で Platform に iOS を選択し、Switch Platform をクリック
2. Player Setting ボタンを押して Inspector に PlayerSetting 画面を表示させる
3. Setting for iOS >> Other Settings >> Configuration >> Target minimum iOS Version を「9.0」にする(Kudan AR SDK が要求する iOS バージョンは8.0以上だが、Xcode Version 8.2.1 では最低バージョンが 9.0 以上しか選択できないため)
4. Setting for iOS >> Other Settings >> Configuration >> Camera Usage Description に適当な文字列を入力(アプリを起動した際に出る、カメラの使用許可を求めるダイアログに表示される。入力しないと実行時に例外が発生。)
5. Build Setting 画面で Build ボタンを押すと、Xcode プロジェクトを出力する場所を聞かれるので適当な場所に保存する(おすすめはプロジェクトフォルダ内に「iOS」として保存)。

### 実機転送
1. 出力された Xcode プロジェクトを開く
2. プロジェクト設定の General >> Signing >> Team に使用するアカウントを設定
3. Build Settings >> Build Options >> Enable Bitcode を「No」に変更
4. iPhone を接続して通常の手順で実機に転送する
5. アプリが起動したら lego.jpg にカメラをかざして天使の像が表示されれば成功