じゅころぐAR

ARのブログ

ARCoreのカメラが映らなくなったら

UnityでARアプリ開発中に遭遇したバッドノウハウです。

起きたこと

ARKitとARCoreは機能がほぼ同じなので、iOS版とAndroid版を同じUnityプロジェクトで管理し、一部メソッドを切り替える実装にしています。

この度、iOS版の開発を終えて、プラットフォームをAndroidに戻したら、すごいことになってました。

TangoのSDKアップデート時に似たような事があったので、Cameraの"Clear Flags"を確認するもARCoreの場合は最初から"Solid Color"になっていて問題なし。
スクリプトの不具合かと思い、バグの発生箇所を探したものの特定できず。

マジで心当たりがない!(・∀・)

やったこと

  1. 新規にプロジェクトを作成してARCoreを動かしてみる。
    →動いた。
  2. 動いたプロジェクトと動かないプロジェクトのProject Setting、Cameraのプロパティを全部見比べる。
    →直った!

地道なデバッグって大事ですよね。

原因

"Auto Graphics API"のチェックが外れていた。

f:id:jyuko49:20180419231817p:plain

意図的に変更した記憶はないので、なにかの拍子にクリックしちゃったとかだと思います。
"Player Settings..." > "Setting for Android" > "Other Settings" > "Auto Graphics API"にチェックを入れたら直りました。

失敗から学ぶ

Unityのサイトで"Auto Graphics API"の説明を見ると、OpenGLの使用バージョン(優先度)を設定するプロパティらしい。

ONにすると新しいバージョンを優先してデバイスが利用可能なバージョンを選択する。OFFにするとすぐ下に表示されるリストの優先順に従う。
不具合時はリストにOpenGL ES2が記述されていて、OpenGL ES3が使える設定になっていなかったため、正しく描画ができなかったものと思われる。

OpenGLのバージョン間差異は日本語のWikipediaにざっくり書いてあります。

・・・ということで、Android版のビルドも通ったのでGoogle Playへの申請準備も進めていきます。ARCoreの対応機種がまだ少ないので優先度は低めですが、今の機能ならついでに対応できるレベルなので。

↓iOS版 v1.0はApp Storeにて公開中です。

[https://itunes.apple.com/jp/app/クエリちゃんにみかんをあたえるar/id1370937019?mt=8 :embed:cite]