はじめに
MagicLeap2で利用できるVPS(Visual Positioning System)の1つ、Vuforia Area Targetを試してみました。
目次
検証環境
ソフトウェア
- Unity 2022.2.2f1
- Vuforia Engine 10.15.4
- Magic Leap SDK 1.7.0
ハードウェア
- Magic Leap2
- iPad Pro(Gen 2)
- マップのスキャンのためにLiDAR搭載したARKit対応デバイスが必要
公式ドキュメント
- Area Targets
- Vuforia Creator
- Getting Started with Vuforia Engine and Magic Leap 2
- Combine Multiple Area Targets
Vuforia Area Targetsとは
Vuforia Area TargetはVuforiaの機能の1つで、特定の空間や領域を認識し、その上にARコンテンツを追加する機能です。
事前にLiDARなどで空間を3Dスキャンし、空間内の任意の位置でのオブジェクトの配置が可能になります。
導入手順
プロジェクト設定や必要なSDKが揃っているので、AssetStoreのサンプルプロジェクトを使用します。
ただし、このサンプルにArea Targetsのサンプルは含まれていないため検証用のシーンは自分で作成します。
- AssetStoreからMagicLeap2向けのVuforiaサンプルプロジェクトをインポート
- VuforiaのLicense Keyをプロジェクトへ追加
Vuforia Creator App
で作成したArea Targetのunitypackageをプロジェクトへインポート- 新規シーン作成
Packages/Magic Leap SDK/Runtime/Tools/Prefabs/Main Camera.prefab
をシーンへ追加し、以下のコンポーネントを追加Vuforia Behaviour
DefaultInitializationErrorHandler
- Hierarchyで
Vuforia Engine/AreaTarget/AreaTarget
を追加 AreaTargetBehaviour
のInspectorで、Databaseを使用したいAreaTargetに設定
動作確認
次のようなArea Targetを作成して実機で動作確認しました。
左上の板ポリが実際のオブジェとどれだけずれがあるかを見てみます。(細長いCubeは目標との距離の目安のためで長さが10mです。)

実機での動作
- 精度
- 数cm程度の誤差で位置合わせが成功
- 認識時間
- 距離が約5m以内なら1秒程度で安定して認識
- 距離が7,8m程度まで離れると認識に10秒以上かかる

1つのArea Targetがとれる広さ
Area TargetのスキャンにはiPad ProのLiDARを使用しており、スキャンできる上限の広さがあるようです。
次のように、上限の広さまで1つのArea Targetをスキャンしました。 その後、PolycamというLiDARスキャン用アプリで同じエリアをスキャンし、Area Target範囲のおおよその面積を計測したところ、約400m^2でした。

複数のArea Targetsを使用する
Immersalでは隣り合った異なるマップを結合することができましたが、Vuforia Area Targetではできなそうです。
Vuforiaのドキュメントでは、次のように複数のArea Targetをpositionとrotationを調整した上で、最も信頼できるポーズのみを追跡する方法が紹介されていました。

奥の通路と手前の通路で分割したマップで試してみます。

最後に
Vuforia Area Targetのマップ作成にはiOSのLiDARを使用するため、遠景マップの作成は難しいですが近距離なら高品質なマップ作成が比較的簡単にできます。
また、MagicLeap2もサポートしており、導入が手軽にできました。
本格的に使用するならVuforiaのライセンス契約が必要な点は気にする必要がありますが、MagicLeap2で使えるVPSの1つとしてとても有用そうです。