物体トラッキングとモーショントラッキングの組み合わせ
この記事では、3D 物体トラッキングとデバイスのモーショントラッキング機能を融合し、複雑なシーンでのトラッキング安定性とユーザー体験を向上させる方法を説明します。
基本原理
Motion Fusion は、3D 物体トラッキングの姿勢データとデバイスモーショントラッキングの姿勢データを組み合わせ、よりロバストな姿勢推定を実現します。
データ同期と相互補完
- ビジュアルトラッキング: 画像特徴点のマッチングにより現在フレームの姿勢(位置 + 回転)を計算しますが、遮蔽、ぼけ、高速移動の影響を受けやすいです。
- モーショントラッキング: IMU センサーの高頻度出力と視覚画像の出力を利用してデバイスの運動データを取得しますが、累積ドリフト誤差が存在します。
- Motion Fusion:
- ビジュアルトラッキングの姿勢とデバイスモーショントラッキングの姿勢の座標系を合わせます。
- ターゲット物体が明瞭に見え、安定して動いている場合はビジュアルトラッキングを主とし、その姿勢を継続的に fusion モジュールへ送り補正して、システム全体の累積ドリフトを減らします。
- ターゲット物体が失われた、画面内の占有率が小さすぎる、または高速に動く場合はビジュアルトラッキングが失効し、モーショントラッキングを主とします。
重要な技術ポイント
- タイムスタンプ合わせ: 視覚フレームのタイムスタンプとモーショントラッキングデータを合わせ、遅延による jitter を回避します。
- 座標系合わせ: ビジュアルトラッキングの軌跡とモーショントラッキングの軌跡に基づいて座標系を合わせます。
- 再ローカライズ: ターゲット物体が再び現れたとき、ビジュアルトラッキングが引き継ぎ、累積誤差をすばやく補正します。
適用シーンと制限
Motion Fusion はすべてのシーンに適しているわけではありません。次のいずれかに該当する場合、Motion Fusion 機能は適用できません。
- 対象デバイスが ARCore/ARKit などのモーショントラッキング機能をサポートしていません。詳細なデバイスサポート一覧は モーショントラッキングデバイスサポート を参照してください。
- ターゲット物体がシーン内で動的である場合。たとえば手に持った玩具やフィギュアなど。
それ以外のシーンでは、Motion Fusion により 3D 物体トラッキングのユーザー体験が大きく向上します。
- 高速移動: ユーザーが手持ちデバイスを高速に移動すると、モーションブラーによりビジュアルトラッキングが失敗する可能性があります。
- ターゲット消失: 画面がターゲット自体から外れた場合や、歩行者などの動的物体で遮蔽された場合でも、シーン全体の仮想コンテンツ表示を維持できます。
- ターゲットから離れる: ユーザーがデバイスを離してターゲット物体が画面内で小さくなっても、安定したトラッキングを継続できます。
- 低照度条件: ビジュアルトラッキング性能が低下するため、体験を維持する必要があります。
効果と期待される結果
適用可能なシーンでは、Motion Fusion は 3D 物体トラッキング単独よりも安定して滑らかな体験を提供します。
理想的な効果
- より安定したトラッキング: 仮想オブジェクトが揺れたり跳んだりしません。
- 滑らかな遷移: ビジュアルトラッキングが失敗したとき、融合姿勢の変化が連続的で自然です。
- 耐干渉性: ターゲット物体が失われたり遮蔽されたり、デバイスが高速移動した場合でも、仮想オブジェクトはデバイスの動きに追従してトラッキングを継続できます。
望ましくないケースと対応
| 現象 | 原因 | ユーザーの感じ方 | 解決策 |
|---|---|---|---|
| 初期状態で有効にならない | モーショントラッキングの初期化に時間が必要 | 初期段階でコンテンツが消える | 適切な UI ヒントを表示し、システムのモーショントラッキング初期化完了を確認する |
| ドリフトが明らか | システム誤差が累積し、長時間ビジュアル補正がない | 仮想オブジェクトが元の位置からずれる | 遮蔽時間を短くするようユーザーを誘導する、またはビジュアル再ローカライズのヒントを追加する |
| 性能低下 | 2 つの機能を長時間同時に実行 | フレームレートが低下し画面がカクつく | 正常な現象です。API で Motion Fusion をオフにできます |
期待結果の検証方法
対応デバイスを使用し、実環境でテストします。
- ターゲット物体に合わせ、仮想オブジェクトが安定していることを確認します。
- 手で物体を 2 秒遮蔽しながらデバイスを動かし、仮想オブジェクトが滑らかに動くか確認します。
- 手を離し、仮想オブジェクトが素早く正しい位置へ戻り、跳びがないことを確認します。
まとめとベストプラクティス
Motion Fusion は多くのシーンで 3D 物体トラッキングのロバスト性を大きく向上させますが、デバイスのハードウェアサポートと十分な性能が必要です。
Motion Fusion 機能をリアルタイムでオン/オフする API 参考:
- Native: setResultPostProcessing
- Unity: EnableMotionFusion