This post is Private. Only a writer or those who know its URL can access this post.

Improve article
Show article in Markdown
Report article
Help us understand the problem. What is going on with this article?

Vuforia Engineをいじめてみた ~Image Target編~

まえがき

Vuforia EngineImage Targetsという機能を遊び尽くしてみました。

Image Targetsは、2次元の画像をマーカーとしてAR表現ができる機能です。

今回はImage Targetsの機能を使い倒してみました!

実行環境

  • Unity 2019.3.0f3
  • Vuforia Engine 9.0
  • iPhone 11 Pro

Vuforia Englineとは

Vuforia Engineは、iOSやAndroid、PC、HoloLensといったAR/MRデバイスに対応したAR開発プラットフォームです。

Vuforia EngineはPTCが提供していますが、元々はQualcommが開発しており、2015年にPTCがVuforia事業を6500万ドルで買収しています。

マーカートラッキングを非常に得意としており、特徴点の多い(複雑な)画像であればほとんどぶれることなく3Dオブジェクトを配置することができます。

詳しくはこちらをご覧ください!

今一番ホットなARライブラリ「Vuforia」とは

画像をターゲットにするImage Targetsを使っていきたいと思います。

ライセンスの取得とライセンスキーをUnityに設定する方法関しては、ラズパイ4をVuforia Engineで分身させてみた ~Object Recognition編~こちらをご覧ください。

マーカーを20個用意して検証してみた

Vuforia EngineのImage Targetsでは、マーカーは最大でも10個までを推奨しています。

推奨ということは、11個以上でも動くの?

と思ったので、マーカーを20個用意して検証してみました。

ターゲットにはこちらの画像を使用させていただきました。

https://placeimg.com/

データベースの作成 

https://developer.vuforia.com/

Vuforiaディベロッパーポータルからデータベースを作成します。

image.png

Deviceを選択します。

image.png

Add TargetからSingle Imageでターゲットを追加していきます。

Widthは実際に印刷するターゲットのサイズをメートル単位で入力します。

image.png

20枚登録したあと、データベースをUnity向けにダウンロードして展開することで、データベースの登録が完了します。

UnityでImage Targetの設定

image.png

Image TargetにSphereを配置していきました。

実際に認識してみた

ターゲットを6個とした場合と比べると、20個の場合は初回の認識に少し時間がかかることがわかりました。

しかし、初回の認識以降は特に違いはなさそうでした。

Cloud Recognitionの挙動を確認してみた

Cloud Recognitionの概要

Image Targetsは、デバイスにマーカーの画像情報を保持するか、クラウドからフェッチするかの2種類があります。

デバイスにマーカーの情報を保存する場合は、プランに関わらず100個まで登録することができます。

クラウドからフェッチするCloud Recognitionは、ライセンスによってクラウドに登録できるマーカーの数が変わります。

Development Basic + Cloud Pro
マーカー上限 1,000個 100,000個 100,000個以上
認識回数上限 1,000 recos/month 10,000 recos/month 10,000 recos/month以上

Developmentプランは無料で使うことができるので、最低でも1000個までは登録することができます。

実際にCloud Recognitionを使用してみた

image.png

クラウド向けにデータベースを作成します。

cloud.png

Access KeySecret Keyをコピーし、UnityのCloud RecognitionのCloud Reco Behaviourコンポーネントにペーストします。

image.png

そして、Cloud RecognitionにGithubにある、Simple Cloud Reco Evnet Handlerをアタッチします。

Image Target TemplateImage Targetを設定します。

image.png

すると、このような挙動になりました。

初回の読み込みに1秒程度時間はかかるものの、それ以降はDeviceのImage Targets同様に動作します。

Extended Trackingの挙動を確認してみた

Extended Trackingとは、ターゲットがカメラから外れてもトラッキングを続ける機能です。

ターゲットが固定されている場合に有効です。

ターゲットが1個の場合の動画は見かけたことがあるので、3個置いて実験してみました。

ターゲットが画面から外れた後に、ターゲットのマーカーを隠してみました。

ですが、最初に認識した場所にオブジェクトが止まってることがわかるかと思います。

街中での看板だったり、動かないものにたいして非常に有効的だと感じました。

サイズは正確?Ground Planeも使ってみた

Ground Planeという機能は、水平面を検知してオブジェクトを置くことができます。

そこで、Ground PlaneとImage Targetsを用いて同じサイズのオブジェクトを表示した場合、どれくらいの誤差が生まれるのか検証してみました。

どちらも5cmの立方体を置いているのですが、視覚的には違いがわかりません。

Ground PlaneImage Targetsもサイズの誤差がほとんどなく配置することが可能ということがわかりました。

まとめ

Vuforia EngineImage Targetsは、かなり精度良くトラッキングすることができました。

Image Targetは、IoTの場面で非常に有効になると考えています。

デバイスにマーカーを貼ることで、かざすだけでデバイスの情報を表示することができます。

IoTでは、センサーやデバイスは何百何千のオーダーで使うことが多々あります。

その場合、動的にターゲットの追加/削除をすることのできるCloud Recognitionがおすすめです。

有料プランにはなりますが、100万個を超えるターゲットを利用することができ、それらをリアルタイムに更新することができます。(1000個までは無料です)

IoT以外の分野でも、出版や小売、広告、製品の認識など幅広く使われるのではないかと考えています。

Cloud Recognitionを使用することで、有料プランにはなりますが100万個以上のターゲットを動的に追加したり削除したりすることができます。

開発者向けのVuforia Slackコミュニティがあり、僕も参加しています。
記事の内容で質問があればそちらから質問下さい!

また今回のコードはGithubに載せているので是非クローンしてお手元で試してみてください!

https://github.com/kot10n5tn/ImageTarget

kot10n5tn
ARスタートアップのLevetty株式会社を立ち上げました! Swift/Firebaseは最強です。 京都大学工学部情報学科卒
https://levetty.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away