本文へスキップ

デバイスマッピング

デバイスマッピングとは?

デバイスマッピングは、現実世界のオブジェクトのスキャンと追跡を行い、現実世界と一致するようにコンテンツを配置できるシステムです。 表面的にはVPSの機能に似ていますが、デバイスマッピングシステムはすべての処理をデバイス上で行うため、ローカライズのためにネットワーク接続は必要ありません。 代わりに、デバイスマッピングでは、あるクライアントデバイスのスキャンをシリアライズして他のデバイスに配布し、受信側はデータをデシリアライズしてスキャンされたマップを再現します。 これにより、インターネットに接続することなく、複数のデバイスで1つのマップを共有し、マルチプレイ体験を楽しむことができます。

デバイスマッピングの仕組みについての理解を深めるために、以下のVPSとの比較をご覧ください。

VPSデバイスマッピング
使用可能な場所VPSが有効なロケーションのみ任意の場所
マップの作成方法複数のユーザーが異なる時間帯にスキャン1回のスキャン
マップの利用にスキャンが必要いいえはい
ローカライズにネットワーク接続が必要はいいいえ
マップデータの保存場所Niantic のサーバーお使いのデバイス
ローカライズの安定性複数のスキャンからマップを生成するため、一貫性がある1回のスキャンの品質によって異なる
関連するビジュアルデータへのアクセス方法インターネットからメッシュをダウンロードデバイスのマップデータから点群を抽出

高レベルAPIの概要

デバイスマッピングAPIで実行する手順の概要は以下のとおりです。

  • マッピング
    • ARDeviceMappingManager を使用してスキャンを行い、デバイスマップを生成します。
    • ARDeviceMap を使用して、シリアライズされたデバイスマップデータを任意の場所(デバイスのローカルファイルシステムなど)に保存します。
  • トラッキング
    • ARDeviceMap を再度使用して、デバイス上のシリアライズされたマップデータからデバイスマップを復元します。
    • ARPersistentAnchorManager を使用して、 ARDeviceMappingManager 経由でデバイスマップを設定し、スキャンされた現実世界のデータをトラッキングします。
    • デバイスでのトラッキングが成功したら、 ARPersistentAnchor に仮想オブジェクトを配置し、現実世界に合わせて表示します。

StopMapping() が呼び出され最終マップが生成されると、 ARDeviceMappingManager.DeviceMapFinalized イベントがトリガーされ、 ARDeviceMap でマップデータをシリアライズできるようになります。 ARDeviceMap は、後でこのマップデータを復元するためのAPIも提供します。 オプションとして、 ARDeviceMappingManager.DeviceMapUpdated イベントをリッスンし、追加のデバイスマップデータを受け取ることで、ユーザーにデバイスマップのカバレッジを表示することもできます。

制限事項

デバイスマッピングには、VPSと同様に、ローカライゼーションに関する制限事項があります。

  • マッピングとローカライゼーションの間で視覚的条件(照明、天候、時間帯)が変化する
  • マップが生成されたエリアに特徴的な目印がほとんどない(芝生などの草地や、色の違いがほとんどない屋内エリアなど)
  • スキャンを撮影するカメラの視野角が限られている

デバイスマッピングには、複数のスキャンからマップを生成する安定性がないため、上記の制限事項の影響を受ける場合は、パフォーマンスがVPSよりも低下する可能性があります。 マルチプレイ体験を行うエリアが定期的に変更されたり、特徴的な目印がエリアにない場合は、代わりにVPSの使用を検討してください。

次のステップ

デバイス・マッピングを使い始めるには、デバイス・マップの作成方法を参照してください。