空間マッピングで生成するデータ量と、そのデータを生成する速度とパフォーマンスに影響するため、低レベル API を使用する際には多くの問題を考慮する必要があります。
アプリケーションで空間マッピングの使用を慎重に計画しないと、アプリケーションの速度とパフォーマンスが低下する可能性があります。下に、空間マッピングが原因となるいくつかの潜在的な問題と、それらを回避する良い実践法を説明します。
空間マッピングのデータを生成する場合、衝突データの生成に、CPU 計算の大半が使用されます。 使用しない衝突データをリクエストすると、無駄に CPU リソースが拘束され、バッテリー寿命が短くなります。
RequestMeshAsync を通して サーフェス データをリクエストするときに、 SurfaceData 構造体 で trianglesPerCubicMeter を高い値に指定できます。こうすると、特に、散らかっているオフィスなど多くのオブジェクトがある空間では、非常に多くのジオメトリを生成します。ジオメトリが多いと、データ生成の待ち時間とメモリ使用量が増加します。さらに、メッシュの密度が高くなると、レンダリングや物理演算などのランタイムシステムの実行に、より時間がかかる場合があります。
Update が呼び出されると、SurfaceObservers はその範囲内の追加、更新、削除された サーフェス を報告します。
変更された サーフェス の全リストをワークキューに追加すると、サーフェス がシステムによって削除されてもワークキューに残ってしまいます。削除後に作業キューにまだ残っている サーフェス は、システム全体を移動しながら CPU 時間を使いますが、メッシュデータはなにも生成しません。これにより、待機中のリクエストの待ち時間が長くなります。
RequestMeshAsync
を 1 つだけ使用してください。アプリケーションは、 サーフェス の報告された更新時間と範囲に基づいて、RequestMeshAsync
の呼び出しの優先順位を決定します。各 SurfaceObserver は、その範囲にあるすべての サーフェス の変更を報告します。サーフェス では複数の SurfaceObserver の範囲が重なること場合もあるので、アプリケーションのコードは同じ サーフェス を複数回リクエストすることがあります。
このよくある問題は通常、設定の仕方が原因となっています。