読者です 読者をやめる 読者になる 読者になる

Windows 8 Developers

Windowsストアアプリ開発とかその他もろもろのブログ。

※参加自由なWindows8開発コミュニティをFacebookグループでやってます。
https://www.facebook.com/groups/win8.developers/

その他、技術情報リンク集を下記にまとめています。
http://windows8-developers.hatenablog.com/entry/2013/02/20/155410


ARマーカー読み込んでくれない時に絶望しない為の対処法(Android+Unity+AR)

※注 今回はWIndowsネタではないです※

 

Unity使ったARアプリで小さいマーカーを読み込む時、全く同じUnityプロジェクトを使っていてiOSでは認識出来るのにAndroidで認識出来ないという事象が起こったので、その時の対処を覚え書きとして残します。

 

恐らく原因はAndroidのフォーカスの悪さが問題でマーカーか否かを判別する為の近接値がうまく取れない為、マーカーとして判別されていないと思いました。(同じ画像を拡大コピーしたら読めたので)

 

f:id:win8dev:20130227230642p:plain

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」

 

とかキーワードでググっても情報得られなかったので、そんな人がまたググった時の為に書いておこうと思いました。