由于空间映射可能生成的数据量以及生成该数据对速度和性能的影响,因此在使用低级 API 时需要考虑许多问题。
如果没有仔细规划应用程序对空间映射的使用,应用程序的速度和性能可能会很差。以下是空间映射可能产生的一些潜在问题,以及有关如何解决这些问题的最佳实践建议。
生成碰撞数据时会在生成空间映射数据时使用大部分 CPU 算力。请求不会被使用的碰撞数据会不必要地占用 CPU 资源并缩短电池续航时间。
You can specify high values of trianglesPerCubicMeter in the SurfaceData struct when requesting Surface data through RequestMeshAsync. This generates a very large amount of geometry, especially in spaces with a lot of objects such as a cluttered office. Large amounts of geometry increase data generation latency and memory usage. In addition, higher Mesh densities can make run-time systems such as rendering and physics run more slowly.
SurfaceObservers report all added, updated, and removed Surfaces within their volume when Update is called.
如果将所有已更改的__表面__作为一个列表添加到工作队列中,可能导致在系统删除这些表面后__表面__保留于工作队列中。删除后仍然位于工作队列中的__表面__在系统中移动时仍会占用 CPU 时间,但不生成任何网格数据。这会增加所有处于等待状态的请求的延迟时间。
RequestMeshAsync
。应用程序可以使用__表面__报告的更新时间和边界来确定 RequestMeshAsync
调用的优先级。Each SurfaceObserver reports changes for all Surfaces that overlap its volume. A Surface can overlap multiple SurfaceObserver volumes if those volumes are close, so your application code might request the same Surfaces multiple times.
这个常见问题通常是由一个或多个设置问题引起。