ARマーカー読み込んでくれない時に絶望しない為の対処法(Android+Unity+AR)
※注 今回はWIndowsネタではないです※
Unity使ったARアプリで小さいマーカーを読み込む時、全く同じUnityプロジェクトを使っていてiOSでは認識出来るのにAndroidで認識出来ないという事象が起こったので、その時の対処を覚え書きとして残します。
恐らく原因はAndroidのフォーカスの悪さが問題でマーカーか否かを判別する為の近接値がうまく取れない為、マーカーとして判別されていないと思いました。(同じ画像を拡大コピーしたら読めたので)
Androidに組込む際にマニフェストのAutoFaucsをfalseからtrueにしているからAF効くだろうと思っていたけれど、どうやらAF効いてない気がしたので、調べたらUnity側でもフォーカスを指定出来るらしいので、Unity側で下記の処理を追加。
------------------------------------
//フォーカス宣言部
CameraDevice.FocusMode mFocusMode = CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO;
//Vuforiaのセットアップ部
CameraDevice.Instance.SelectVideoMode(CameraDeviceModeSetting);
CameraDevice.Instance.SetFocusMode(mFocusMode);
------------------------------------
すると、
なんという事でしょう。
いままで読めなかった小さいマーカーが読めるようになりました。
推測するに、iOSはカメラの性能が良いので入れなくても何とかマーカーの特徴点を取得出来て、近似値が一致したけれどAndroidは性能が悪くて上記処理を入れてあげないとダメだったという事かと。
※UnityもVuforiaも良くわかってないからハマっただけかもしれませんが
ちなみにSetFocusModeやってもmanifestでAutoFocusをtrueにしてもUnityのマーカー認識画面のカメラ越しでは通常のカメラのように焦点合わせる挙動が肉眼で確認出来ないので注意です。
という事で今回は
「Android AR 読み込まない マーカー オートフォーカス 認識しない Unity」
とかキーワードでググっても情報得られなかったので、そんな人がまたググった時の為に書いておこうと思いました。