/Test_you

電子工作やプログラミングなど、やってみたことのメモ

Androidで、Vuforiaの Positional Device Tracker を使ってみた

Vuforia の"Positional Device Tracker"を試してみました。この機能を有効にすると、マーカーが見えなくなっても、マーカーのトラッキングを継続してくれます。(動画でEXTENED_TRACKED と表示されている期間が相当)

※マーカーは、石畳のマーカーを1つだけ使用してます。周囲のマーカーは位置ずれ確認用の目印です。

この機能は、以前は"Extended Tracking API"として提供されていましたが、Vuforia V7.2以降は"Positional Device Tracker"に置き換えられました。また、"Device Tracker"は内部でARKit やARCore を利用可能になっています。ARCoreを利用する場合、少しだけ設定が必要です。(参考:Extended Tracking の説明)


~ 目次 ~


環境

  • Unity 2018.2.18f1(64-bit)
  • Vuforia V7.5.26 ※上記のUnityに同梱のバージョンを利用
  • Windows10(64bit)
  • Galaxy S8 SCV36(au) ※Android 8.0.0, ARCore V1.5.180910096 をインストール済み

手順

Android で、Positional Device Tracker (ARCore利用) を有効にする手順です。

  1. Vuforiaを使ってマーカー上にオブジェクトを表示するシーンを作成する。下記では、石畳のマーカー上に、Cubeと方眼のテクスチャを張ったPlaneを配置してます。

    下記のサイトなどを参考に、、、

  2. ARCoreのライブラリを導入する(参考:Using ARCore with Vuforia)

  3. Device Tracker を設定する

    • メニューから Window > Vuforia Configuration を選択し、VuforiaConfigrationのパネルを開く
    • "Device Tracker"の項目にある "Track Device Pose" をチェックする
    • Tracking Mode を POSITIONAL にする
    • Fusion Mode を Optimize for Image Targets and VuMarks にする
  4. メニューから Edit > Project Settings > Player を選択し、PlayerSettingsのパネルを開く

    • Other Settings のAndroid TV Compatiblity のチェックを外す。
      ※このチェックが有効だと、"Vuforia does not support Android TV. Please disable the Android TV compatibility in the Player Settings."というエラーが出ます。

    • ARCore用のビルド設定をする
      ※念のため、ARCoreビルド時の設定をしておく。Vuforiaのサイトに言及ないので不要かも

      • Other Settings のMultithreaded Rendering のチェックを外す
      • Other Settings のMinimum/Target API Level をAndroid 7.0 以上に設定
    • XR Settings のVuforia Augmented Reality のチェックを確認

  5. メニューから File > Build And Run を選択し、ビルドする
    タイトルの動画へ

補足

  1. Device Trackerで使用しているテクノロジの確認
    Device Trackerが、現在どのテクノロジを利用しているかは、VuforiaRuntimeUtilitiesクラスのstatic FusionProviderType GetActiveFusionProvider()メソッドで取得できます。

    FusionProviderTypeの値 意味
    PLATFORM_SENSOR_FUSION Use the Platform-provided technology for Fusion
    ※ARKitやARCoreなどを利用している場合は、これになる
    VUFORIA_SENSOR_FUSION Use the Vuforia provided sensor fusion
    VUFORIA_VISION_ONLY Vision based tracking only
    ※試しに、AndroidからARCoreをアンインストールして実行すると、これになりました

    参考:GetActiveFusionProvider() メソッドenum値 FusionProviderType

  2. ラッキング状態の取得
    動画で表示しているトラッキング状態は、ImageTargetオブジェクトにアタッチされているDefaultTrackableEventHandler.csTrackableBehaviour.Status m_NewStatus の値を表示しました。

    public class DefaultTrackableEventHandler : MonoBehaviour, ITrackableEventHandler
    {
        #region PROTECTED_MEMBER_VARIABLES

        protected TrackableBehaviour mTrackableBehaviour;
        protected TrackableBehaviour.Status m_PreviousStatus;
        protected TrackableBehaviour.Status m_NewStatus;        

参考にした情報

  1. Vuforia 7.2 への移行説明
    Migrating Unity Projects to Vuforia 7.2
    How To Migrate Native Projects to Vuforia Engine 7.2

  2. Device Tracker の設定
    Using the Positional Tracker for AR