由于空间映射可能生成的数据量以及生成该数据对速度和性能的影响,因此在使用低级 API 时需要考虑许多问题。
如果没有仔细规划应用程序对空间映射的使用,应用程序的速度和性能可能会很差。以下是空间映射可能产生的一些潜在问题,以及有关如何解决这些问题的最佳实践建议。
生成碰撞数据时会在生成空间映射数据时使用大部分 CPU 算力。请求不会被使用的碰撞数据会不必要地占用 CPU 资源并缩短电池续航时间。
通过 RequestMeshAsync 请求__表面__数据时,可以在 SurfaceData 结构中指定 trianglesPerCubicMeter 的较大值。这样会产生非常大量的几何体,尤其是在具有大量对象的空间(例如杂乱的办公室)中。大量几何体会增加数据生成延迟和内存使用量。此外,较高的网格密度也会降低渲染和物理系统等运行时系统的运行速度。
调用 Update 方法时,SurfaceObservers 会报告所在体积中所有已添加、更新和移除的__表面__。
如果将所有已更改的__表面__作为一个列表添加到工作队列中,可能导致在系统删除这些表面后__表面__保留于工作队列中。删除后仍然位于工作队列中的__表面__在系统中移动时仍会占用 CPU 时间,但不生成任何网格数据。这会增加所有处于等待状态的请求的延迟时间。
RequestMeshAsync
。应用程序可以使用__表面__报告的更新时间和边界来确定 RequestMeshAsync
调用的优先级。每个 SurfaceObserver 会报告与其体积重叠的所有__表面__的更改。一个__表面__可以重叠多个靠近的 SurfaceObserver 体积,因此应用程序代码可能会多次请求相同的__表面__。
这个常见问题通常是由一个或多个设置问题引起。