デバイスマッピング
デバイスマッピングとは?
デバイスマッピングは、現実世界のオブジェクトのスキャンと追跡を行い、現実世界と一致するようにコンテンツを配置できるシステムです。 表面的にはVPSと機能的には似ているが、デバイス・マッピング・システムはすべての処理をデバイス上で行い、ローカライズにネットワーク接続を必要としない。 その代わり、Device Mappingはスキャンされたマップをシリアライズ可能なオブジェクトとして提供し、クライアントデバイスはそれを他のデバイスに配布することができます。その後スキャンされたマップを デシリアライズして再作成できます。 NianticのVPSサーバーに依存することなく、複数のデバイスでマップを共有することができるため、VPSが有効になっていない場所でも、どこでもすぐにマルチプレイを体験することができます。 デバイスマッピングとNiantic Spatial Platformの共有ARライブラリの共有の使用例については、DeviceMappingColocalizationデモシーンを参照してください。
デバイスマッピングの仕組みについての理解を深めるために、以下のVPSとの比較をご覧ください。
| VPS | デバイスマッピング | |
|---|---|---|
| 使用可能な場所 | VPSが有効なロケーションのみ | 任意の場所 |
| マップの作成方法 | 複数のユーザーが異なる時間帯にスキャン | 1回のスキャン |
| ローカライズの前に現地の地図をスキャンする必要がありますか? | いいえ | はい |
| Niantic VPSサーバーと通信する必要がありますか? | はい | いいえ |
| マップデータの保存場所 | Niantic のサーバー | お使いのデバイス |
| ローカライゼーションのロバスト性? | 複数のスキャンからマップを生成するため、一貫性がある | 1回のスキャンの品質によって異なる |
| 関連するビジュアル・データにアクセスするには? | インターネットからメッシュをダウンロード | デバイスのマップデータから点群を抽出 |
高レベルAPIの概要
デバイスマッピングAPIで実行する手順の概要は以下のとおりです。
- マッピング
ARDeviceMappingManagerを使用してスキャンを行い、デバイスマップを生成します。ARDeviceMapを使用して、シリアライズされたデバイスマップデータを任意の場所(デバイスのローカルファイルシステムなど)に保存します。
- トラッキング
ARDeviceMapを再度使用して、デバイス上のシリアライズされたマップデータからデバイスマップを復元します。ARPersistentAnchorManagerを使用して、ARDeviceMappingManager経由でデバイスマップを設定し、スキャンされた現実世界のデータをトラッキングします。- デバイスでのトラッキングが成功したら、
ARPersistentAnchorに仮想オブジェクトを配置し、現実世界に合わせて表示します。
StopMapping() が呼び出され最終マップが生成されると、 ARDeviceMappingManager.DeviceMapFinalized イベントがトリガーされ、 ARDeviceMap でマップデータをシリアライズできるようになります。 ARDeviceMap は、後でこのマップデータを復元するためのAPIも提供します。 オプションとして、 ARDeviceMappingManager.DeviceMapUpdated イベントをリッスンし、追加のデバイスマップデータを受け取ることで、ユーザーにデバイスマップのカバレッジを表示することもできます。
制限事項
デバイスマッピングには、VPSと同様に、ローカライゼーションに関する制限事項があります。
- マッピングとローカライゼーションの間で視覚的条件(照明、天候、時間帯)が変化する
- マップが生成されたエリアに特徴的な目印がほとんどない(芝生などの草地や、色の違いがほとんどない屋内エリアなど)
- スキャンを撮影するカメラの視野角が限られている
デバイスマッピングには、複数のスキャンからマップを生成する安定性がないため、上記の制限事項の影響を受ける場合は、パフォーマンスがVPSよりも低下する可能性があります。 マルチプレイ体験を行うエリアが定期的に変更されたり、特徴的な目印がエリアにない場合は、代わりにVPSの使用を検討してください。
次のステップ
デバイスマッピングの使用を開始するには、デバイスマップを作成するをご覧ください。