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利用) を有効にする手順です。
Vuforiaを使ってマーカー上にオブジェクトを表示するシーンを作成する。下記では、石畳のマーカー上に、Cubeと方眼のテクスチャを張ったPlaneを配置してます。
下記のサイトなどを参考に、、、
- Qiita @broken55さん - VuforiaとUnityでコードを書かずに始められる簡単AR開発
- おもちゃラボ - 【Unity】Vuforiaを使ってARを表示する手順(2018年版)
ARCoreのライブラリを導入する(参考:Using ARCore with Vuforia)
- https://dl.google.com/dl/android/maven2/com/google/ar/core/1.4.0/core-1.4.0.aar から
core-1.4.0.aar
をダウンロードする。 ※今回は、サポートバージョンに記載のある V1.4.0 を使用しました。 (参考:Vuforia Engine Supported Versions) - Unity Project内の
Assets/Plugins/Android/
フォルダにcore-1.4.0.aar
を配置する。(必要に応じフォルダを作成)
core-1.4.0
のファイルを選択して、Inspectorを確認。"Select platforms for plugin"の項目で、"Android"にチェックが入っていることを確認する。
- https://dl.google.com/dl/android/maven2/com/google/ar/core/1.4.0/core-1.4.0.aar から
Device Tracker を設定する
- メニューから Window > Vuforia Configuration を選択し、VuforiaConfigrationのパネルを開く
- "Device Tracker"の項目にある "Track Device Pose" をチェックする
- Tracking Mode を
POSITIONAL
にする - Fusion Mode を
Optimize for Image Targets and VuMarks
にする
メニューから 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のサイトに言及ないので不要かもXR Settings のVuforia Augmented Reality のチェックを確認
メニューから File > Build And Run を選択し、ビルドする
タイトルの動画へ
補足
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をアンインストールして実行すると、これになりましたトラッキング状態の取得
動画で表示しているトラッキング状態は、ImageTarget
オブジェクトにアタッチされているDefaultTrackableEventHandler.cs
のTrackableBehaviour.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;
参考にした情報
Vuforia 7.2 への移行説明
Migrating Unity Projects to Vuforia 7.2
How To Migrate Native Projects to Vuforia Engine 7.2Device Tracker の設定
Using the Positional Tracker for AR