공간 매핑으로 생성할 수 있는 데이터 볼륨과 데이터 생성에 따른 속도와 성능로 인해 낮은 레벨의 API를 사용할 때는 고려해야 할 사항이 많습니다.
애플리케이션의 공간 매핑 사용을 신중하게 계획하지 않으면 애플리케이션의 속도와 성능이 심각하게 저하될 수 있습니다. 아래는 공간 매핑으로 인해 발생할 수 있는 몇 가지 문제와 그에 대한 해결 방안의 베스트 프랙티스입니다.
충돌 데이터 생성은 공간 매핑 데이터를 생성할 때 CPU 연산의 대부분을 사용합니다. 사용하지 않을 충돌 데이터를 요청하면 CPU 리소스를 쓸데없이 묶어두게 되고 배터리 수명이 단축됩니다.
RequestMeshAsync를 통해 Surface 데이터를 요청할 경우, SurfaceData struct에서 높은 trianglesPerCubicMeter 값을 지정할 수 있습니다. 이렇게 하면 특히 어수선한 사무실과 같은 많은 오브젝트가 있는 공간에서 매우 많은 양의 지오메트리가 생성됩니다. 지오메트리의 양이 증가하면 데이터 생성 지연 속도와 메모라 사용이 증가합니다. 또한 메시 밀도가 높을수록 렌더링, 물리 엔진과 같은 런타임 시스템 성능이 느려질 수 있습니다.
SurfaceObservers는 Update가 호출되면 볼륨에서 모든 추가, 업데이트 및 제거된 Surfaces 를 보고합니다.
변경된 Surfaces 의 전체 리스트를 작업 대기열에 추가하면 시스템에서 제거된 후에도 Surfaces 가 작업 대기열에 남아 있을 수 있습니다. 제거된 뒤에도 작업 대기열에 남아 있는 Surfaces 는 여전히 시스템에서 돌아다니며 CPU 시간을 잡아먹지만, mMsh 데이터를 생성하지 않습니다. 이로 인해 대기 중인 요청의 지연 속도가 늘어나게 됩니다.
RequestMeshAsync
만 사용합니다. 애플리케이션은 Surface 의 보고된 업데이트 시간과 바운드를 사용하여 RequestMeshAsync
호출의 우선 순위를 정할 수 있습니다.각 SurfaceObserver는 볼륨이 겹치는 모든 Surfaces 에 대한 변경 사항을 보고합니다. 볼륨이 가까이 있다면 Surface 는 다수의 SurfaceObserver 볼륨과 겹칠 수 있으므로, 애플리케이션 코드는 동일한 Surfaces 를 여러 번 요청할 수 있습니다.
이 일반적인 문제는 주로 하나 이상의 설정 문제 때문에 발생하는 경우가 많습니다.