ぽよっとまがじん

ぽよっとまがじん

特撮系、プログラミング、好きなもの、カラオケなど普段の気になったこと等をメモするブログです。

vuforiaでピントが合わない、ターゲットを認識しない時の対処法

Unityで簡単にARアプリを作れるVuforia

Unityでは、ARアプリを作る際にVuforiaというライブラリを使うと手軽に制作することができます。

VuforiaとはQualcommが提供するAR制作用のライブラリです。認識精度が高いことでも知られ、平面のマーカーだけではなく、立体のマーカー認識、クラウドでの認識、カメラからマーカーが離れた際の追従認識など、さまざまな形でARの機能を簡単に実装できます。

引用元 http://www.atmarkit.co.jp/ait/articles/1508/24/news025.html

Unityと、androidiOSのビルド環境さえ整っていれば、10分ちょいでARを楽しむことができます。

さて、ARの設定自体は自分でも簡単にできたのですが、実際にvuforiaを用いて実行したところ、画面がぼやける・フォーカスが合ってない・ピントが合わないからターゲット(ARマーカー)を認識しないといった点で詰まっちゃいました。

(ボヤケつつもARは表示されましたが。)
調べた結果、ピントが綺麗に合うようになったのでその時の方法をメモしておきます。

※vuforiaの具体的なUnityへの導入方法や、実行方法、ターゲット(ARマーカー)の登録方法はここでは割愛させていただきます。


androidでvuforiaを実行したときにピントが合わない

実行環境

  • Unity 5.6.0 Pro
  • vuforia-unity-6-2-10
  • XperiZ5 Premium、Xperia XZ (android6.0)

vuforia用いたARアプリを作り、ターゲットマーカーにカメラを向けたところ、かなり画面がぼやけてしまいました。
下のスクショの通り、パンダがボヤケてますし、下のパッケージの文字も読めません。
f:id:HikoPatchi:20170712222704j:plain
どうやら自動でフォーカスはしてくれないようで、うまくターゲットにピントが合いません
vuforia使うとカメラの解像度が落ちるかと思って少し諦めかけましたが、ちゃんとフォーカスする方法がありました。

ARcameraにオートフォーカススクリプトをアタッチ

ググったところ、以下のフォーラムでオートフォーカスに対する解決策が出てました。
このページからCameraFocusController.zipをダウンロード

中に入ってるCameraFocusController.csをプロジェクトに取り込み、Hierarchyに配置したARcameraにアタッチします。

AndroidManifestの編集

次にAndroidManifestにオートフォーカスについて記述します。
UnityのProjectから、Assets>Plugins>Android>AndroidManifest.xmlを開きます。
そこに

<uses-feature android:name="android.hardware.camera" />

と書かれている行があると思うので、その行の下に

<uses-feature android:name="android.hardware.camera.autofocus"/>

を追記します。

これでもう一度アプリをビルドすると小さなターゲット(マーカー)でもちゃんと認識してオブジェクトを表示してくれます。
f:id:HikoPatchi:20170712222703j:plain
オートフォーカスが動作しているので、綺麗にターゲットが映ってますね。

オートフォーカスが機能するまではある程度大きな模様しか認識できませんでしたが、オートフォーカスが機能してくれたお陰で小さな模様でも認識するようになりました。
(vuforiaでARマーカー作る際はもう少し複雑な模様や特徴を含んだほうが良いみたいですけどね)

めでたしめでたし。

vuforiaとunityを使ったARアプリ制作参考

http://win8dev.hatenablog.com/entry/2013/02/27/230905
http://qiita.com/akanei_main/items/6bde438747fe116ef124