iPhone
Xcode
Unity
vuforia
AR

vuforia for UnityでスマホARしようとしたけど実機で画面が出ない時


はじめに


概要

vuforia for UnityでiPhoneARコンテンツを作ろうと思い、いつも通りUnity&Xcodeでビルドし実機で実行しようとしたところ、PCではちゃんと動くのに実機ではカメラの絵が出ず真っ黒(フリーズではない)になったり、その他色々つまって動かない症状にはまったので、目次録。基礎的なvuforiaの使い方については書かないので、他記事と並行して参考にしてください。


ARライブラリについて

iPhoneでARを行うためのライブラリとしてまず思いつくのはARkitです。これは導入も簡単で高精度なポジショントラッキングを提供しますが、画像(マーカ)を認識して3Dオブジェクトを追従させるという処理を実装するのは個人的に少し面倒くさいです。そこで、マーカベースでポジショントラッキングを行うvuforiaというAR用ライブラリがUnity2017.2から標準でサポートされているため、今回はvuforiaを使ってこんなのを作ろうと思いました。

(「こんなの」の資料は準備中)


結論


2018.05.23現在、最終的に落ち着いた環境

結論から言うと、2018年5月23日現在、iPhone向けにUnityとvuforiaを使って何かを作ろうと思った時、安定して動くのは以下の環境です。

- Unity 2018.1.1

- vuforia 7.1.35 (上記Unityバージョンに付いてくるやつ)

- iOS 11.3

- Xcode 9.2 (要設定 - 「Xcode9.2の設定」を参照)


ハマった点


Unityの設定

以下では、Unityでvuforia appをビルドするための、Unity側ですべき設定を列挙します。


vuforiaを有効にする

「Edit > Project Settings > Player」でPlayer Settingsを開き、XR SettingsのVuforia Augmented Realityにチェックを入れる


カメラの使用目的を書く

アプリがOSからカメラの使用権を得るために、カメラのUsage Discriptionを書かないといけないみたいです。「Edit > Project Settings > Player」でPlayer Settingsを開き、Other Settingsの真ん中あたりにあるCamera Usage Descriptionにカメラの使用目的を記述します。厳密には ""(何も書かない)以外ならなんでもいいっぽいですが、私は一応「Camera access required for target detection and tracking」と書いておきました。


ARcameraのclear flagsについて

「GameObject > Vuforia > ARcamera」で追加できるARカメラですが、同ゲームオブジェクトにアタッチされているCameraスクリプトのClearFlagsがSkyboxになっていると実機で実行してもカメラの映像が映らずデフォの青々しい空が見えるだけになります。Clear FlagsはSolid Colorがおすすめです。


Xcode9.2の設定

以下では、Unityで生成したXcodeのプロジェクトファイルをビルドするための設定を列挙します。


iOS11.3対応のための荒技(重要)

このポータルによると、Unity 2018.1.1についてくるvuforia 7.1.35はXcode9.3と9.4に対応していないようです。そこで、Xcode9.2(iOS11.3には通常非対応、ここからDL)を使い、この動画を参考にiOS11.3のsignatureファイル的なものをXcode9.3等から持ってくるという荒技を行います。すると、通常ではiOS11.3がサポートされていないXcode9.2で、同iOSバージョン向けにアプリをビルドできるようになります。

(この情報、日本語で記述されたものが多分ないので、貴重な情報だと思ってます)


Signing for "Unity-iPhone" requires a development team.が消えない

この記事を参照。


まとめ

iOSやxcode、Unityのバージョンなどで、一発で開発環境が整う場合と全くそうでない場合があるので、怖い。しかも、iOSとかダウングレードできないし、超タイミング依存ですよね。また、時が経ちバージョンアップすると、すべてのバグ修正されてしまい本記事が全く役に立たなくなる日も来るでしょう。誰かの役に立てば幸いです。