다음을 통해 공유


Tracking-Map 관리

요약

HoloLens는 세션 전체에서 홀로그램 안정성과 위치를 유지하기 위해 "디바이스 공유" 추적 모드라는 물리적 환경의 내부 표현을 지속적으로 빌드합니다. 그러나 환경 변경으로 인해 시간에 따른 추적에 부정확성이 발생할 수 있으며, 이는 높은 정확도 요구 사항이 있는 애플리케이션에 문제가 됩니다. 이러한 문제를 해결하기 위해 관리 API 집합과 함께 새로운 "앱 전용" 추적 모드가 도입되었습니다.

"앱 전용" 모드를 사용하면 추적 정확도의 저하가 없는 새 환경에서 애플리케이션을 실행할 수 있습니다. 모드는 향후 세션에서 애플리케이션의 특정 맵을 다시 시작하기 위한 "앱 전용 세션 토큰"을 발급합니다.

참고:

  • "앱 전용" 모드의 두 가지 제한 사항은 이러한 모드가 한 번에 하나만 존재하여 이전 데이터를 지우고 디스크 스토리지가 "디바이스 공유" 모드의 3분의 1로 제한된다는 것입니다. 그러나 더 작은 제한은 대부분의 애플리케이션에서 여전히 충분합니다.

  • "앱 전용" 모드의 대상 시나리오는 높은 정확도 요구 사항과 작업 지향 워크플로가 있는 애플리케이션입니다. 예를 들어 실제 개체와의 정확한 홀로그램 맞춤 및 지속성 필요 없이 3D 모델 편집이 있습니다.

새 추적 모드 API를 사용하려면 2023년 가을 HoloLens OS 업데이트가 필요합니다. 이전 버전은 "앱 전용" 모드를 지원하지 않습니다.

배경

HoloLens가 사용됨에 따라 디바이스 주변의 물리적 환경에 대한 내부 표현을 지속적으로 구축하고 있습니다. 이렇게 하면 홀로그램을 3D 위치에서 제대로 안정적으로 유지하고 디바이스가 여러 세션에서 동일한 물리적 위치에서 사용될 때 재배치할 수 있습니다. 이 표현은 특정 HoloLens의 모든 애플리케이션에서 공유되며 적절하게 "디바이스 공유" 추적 모드라고 합니다.

환경의 작은 변경(예: 새 위치로 이동하는 의자) 또는 조명 변경과 같은 다양한 요인으로 인해 시간이 지남에 따라 환경의 내부 표현이 저하될 수 있습니다. 이러한 변경으로 인해 HoloLens의 추적이 부정확할 수 있으며, 이로 인해 일부 홀로그램이 원래 배치에서 소량으로 표류할 수 있습니다. 이 이동은 많은 애플리케이션에서 무시할 수 있는 경우가 많습니다. 그러나 정확도가 높은 애플리케이션의 경우 시간이 지남에 따라 성능이 저하되는 것은 문제가 됩니다. 이전에는 애플리케이션이 설정 애플리케이션의 "Holograms" 탭을 사용하여 저장된 모든 환경 데이터를 지우는 "모든 홀로그램 제거"를 사용하도록 사용자에게 조언하는 것이 가장 일반적인 해결 방법이었습니다. 이 행위는 이전에 만든 모든 홀로그램을 지우는 비용으로 새로운 환경으로 다시 설정됩니다.

Tracking-Map 관리 API

시간이 지남에 따라 "디바이스 공유" 추적 맵이 발전함에 따라 발생하는 몇 가지 문제를 완화하기 위해 애플리케이션이 환경을 보다 세분화된 수준에서 관리할 수 있도록 지원이 추가되었습니다. 그러나 이 새로운 기능은 애플리케이션의 요구 사항에 따라 신중하게 관리해야 하는 자체 절충과 함께 제공됩니다.

"앱 전용" 추적 모드

새 API 집합을 사용하면 애플리케이션이 "디바이스 공유" 기본값 대신 "앱 전용" 추적 모드에서 실행을 옵트인할 수 있습니다. 이 작업은 시간 경과에 따른 성능 저하로 인한 디바이스 공간 추적 부정확성에 의해 방해받지 않고 현재 세션 중에 사용할 애플리케이션에 대한 새로운 환경을 만듭니다. 이 모드로 전환하는 것은 설정에서 "모든 홀로그램 제거" 명령을 사용하는 것과 동일하지만 실행 중인 애플리케이션에만 적용됩니다. 다른 모든 애플리케이션(HoloLens Shell 포함)에 대한 홀로그램은 그대로 유지되며 이전과 같이 사용할 수 있습니다. 셸로 돌아가거나 다른 애플리케이션을 활성화하면 HoloLens가 자동으로 "디바이스 공유" 추적 모드로 반환됩니다.

또한 "앱 전용" 추적 모드를 사용하면 호출 애플리케이션이 "높은 정확도" 추적 충실도를 요청할 수 있습니다. 이 새로운 모드는 더 많은 배터리 전원 및 디스크 스토리지를 사용하는 대신 추적기가 더 정확하게 추적하려고 시도하도록 요청합니다. 이 새로운 모드는 실제 개체와 홀로그램 맞춤과 같이 정확도가 높은 공간 크기 영역에서 발생하는 애플리케이션 시나리오에 가장 적합합니다.

"앱 전용" 추적 모드를 처음 입력하면 호출 애플리케이션에 "앱 전용 세션 토큰"이 발급됩니다. 이 토큰은 사용자가 애플리케이션에서 전환하고 시스템 리소스 제약 조건으로 인해 백그라운드에서 종료되는 경우와 같이 애플리케이션의 향후 세션에서 앱별 맵 추적을 다시 시작하는 데 사용할 수 있습니다. 그러나 디바이스가 단순히 절전 모드로 전환되거나 사용자가 셸과 잠시 상호 작용하는 경우 애플리케이션이 다시 활성화되고 모든 애플리케이션 상태를 사용할 수 있게 되면 "앱 전용" 추적 모드에서 자동으로 다시 시작됩니다.

"앱 전용" 추적 모드를 사용할 때 알아야 할 두 가지 제한 사항이 있습니다.

  1. HoloLens에는 한 번에 하나의 "앱 전용" 추적 맵만 있을 수 있습니다. 애플리케이션이 새 "앱 전용" 추적 모드를 요청하는 경우 이전의 "앱 전용" 추적 데이터가 지워지고 자체 "앱 배타적" 추적 모드를 사용하여 다른 애플리케이션에서 데이터를 만든 경우에도 모든 SpatialAnchor 개체(및 연결된 홀로그램)가 손실됩니다. 따라서 "앱 전용 세션 토큰"을 지정하여 이전 "앱 전용" 세션으로 돌아가려고 하면 이전 세션을 찾을 수 없음을 나타내는 반환 값이 발생할 수 있습니다. 이전 "앱 전용" 추적 맵을 사용할 수 없는 시나리오를 처리하도록 애플리케이션을 준비해야 합니다.

  2. App-Exclusive 추적 모드에서 사용할 수 있는 디스크 스토리지는 "디바이스 공유" 추적 모드에 사용할 수 있는 항목의 3분의 1로 제한되지만 대부분의 사용자에게는 이 제한이 문제가 되지 않을 수 있습니다. 이 제한에 도달하면 HoloLens는 가장 가치 있는 추적 데이터를 지우기 시작하여 결국 추적 정확도가 낮아집니다. 더 작은 제한은 여전히 집 크기의 환경에 대한 좋은 정확도를 유지할 수 있을 만큼 크며 대부분의 애플리케이션 시나리오에서 문제가 되지 않을 수 있습니다.

이러한 제한 사항을 감안할 때 "앱 배타적" 추적 모드의 대상 시나리오는 작업 지향의 정확도가 높은 요구 사항이 있는 애플리케이션을 위한 것입니다. 여기서 HoloLens Shell을 반환하는 사용자 또는 절전 모드로 전환할 디바이스에 의해 작업이 중단될 수 있습니다. 그러나 사용자의 작업이 완료되면 3D 환경과 관련하여 작업에 대해 아무것도 저장하지 않으므로 지울 수 있습니다.

예:

  1. QR 코드를 사용하여 시나리오를 부트스트랩하는 실제 개체에 홀로그램을 정확하게 정렬합니다.
  2. 세션이 종료된 후 모델의 3D 공간 지속성이 발생하지 않을 때 정확도가 높은 요구 사항으로 3D 모델을 편집합니다.
  3. 환경 변동이 많은 장소(예: 이동하는 사람)에서 추적하면 정적 환경보다 추적 품질이 저하되는 경우가 있습니다.

App-Exclusive API

Tracking-Map 관리 API는 Microsoft.MixedReality.OpenXR.TrackingMapManager에서 사용할 수 있습니다.

App-Exclusive FAQ

  • 애플리케이션에서 EnterNewAppExclusiveTrackingSession()을 언제 호출해야 하나요?

    • 적용하려면 "앱 전용" 추적 모드로 전환하도록 요청하는 애플리케이션이 활성 몰입형 3D 애플리케이션이어야 합니다. 따라서 이러한 API는 애플리케이션이 3D 사용자 인터페이스를 렌더링하기 시작한 후에만 사용해야 합니다(예: 애플리케이션이 처음 실행될 때는 아님).
  • 애플리케이션에서 LeaveAppExclusiveTrackingSession()을 호출해야 합니까?

    • 애플리케이션은 별도의 세션에서 회수를 위해 SpatialAnchor를 유지하는 것과 같은 "디바이스 공유" 추적 모드에서 작업을 수행하려는 경우에만 "앱 전용" 추적 모드를 벗어나야 합니다. 포커스가 다른 애플리케이션(예: HoloLens Shell)으로 변경되면 HoloLens는 자동으로 적절한 추적 모드로 전환됩니다. 그런 다음 사용자가 애플리케이션으로 돌아가면 HoloLens는 자동으로 "앱 전용" 추적 모드로 다시 전환됩니다. 그러나 운영 체제가 리소스 제약 조건으로 인해 애플리케이션의 프로세스를 완전히 종료한 경우 애플리케이션은 "디바이스 공유" 추적 모드에서 다시 시작되고 애플리케이션은 이를 감지하고(CurrentTrackingMapType API를 통해) 원하는 추적 모드를 다시 입력해야 합니다.
  • "앱 전용" 추적에서 만든 애플리케이션의 환경 데이터는 다른 애플리케이션에서 액세스할 수 있나요, 아니면 앱에 비공개인가요?

    • "디바이스 공유" 추적 모드에서 모든 환경 데이터는 애플리케이션 간에 공유됩니다. 그러나 "앱 전용" 추적 모드에서는 이전에 만든 환경 데이터 및 홀로그램은 App-Exclusive 세션 토큰을 사용하여 "앱 배타적" 추적 모드를 재개한 애플리케이션에서만 사용할 수 있습니다(이전에 "앱 전용" 추적 모드를 요청했을 때 애플리케이션에 발급됨). 즉, 다른 애플리케이션에 App-Exclusive 세션 토큰이 제공되지 않으면 이전 애플리케이션과 동일한 환경 데이터 및 홀로그램으로 "앱 전용" 추적을 다시 시작할 수 없습니다. 실제로 애플리케이션이 App-Exclusive 세션 토큰을 공유하지 않는 한 디바이스의 다른 모든 애플리케이션에서 데이터가 사일로됩니다.
  • 새 추적 모드 API를 사용하는 데 필요한 HoloLens 버전은 무엇인가요?

    • 새 추적 맵 관리 API를 사용하려면 운영 체제 업데이트가 필요합니다. 애플리케이션은 "SupportedTrackingMapTypes" 플래그 열거형을 사용하여 해당 API를 사용하기 전에 원하는 추적 모드에 대한 지원을 확인해야 합니다.
    • "앱 전용" 추적 모드는 2023년 가을 HoloLens OS 업데이트에서 도입되었습니다. 이 버전 이상에서는 "SupportedTrackingMapTypes" 플래그 열거형에 "AppExclusive" 값이 포함됩니다. 이전 버전에는 이 값이 포함되지 않으며 "앱 전용" 추적 모드 API에 대한 호출은 예외를 throw합니다.
    • 2023년 10월 이전의 HoloLens OS 버전에서 "SupportedTrackingMapTypes"는 "DeviceShared"만 보고하고 다른 관리 API는 사용할 수 없습니다.
  • Unity를 사용하여 앱을 만들 때 특별한 고려 사항이 있나요?

    • 애플리케이션은 일반적으로 보기, 작업 및 홀로그램을 함께 연결하기 위해 일부 루트 월드 좌표 공간을 설정합니다. 애플리케이션은 바인딩되지 않은 참조 공간을 사용하여 세계적 규모의 좌표계를 설정해야 합니다. 이렇게 하면 사용자가 앱이 시작되는 위치(예: 5미터 거리)에서 멀리 이동하거나 앱이 공간 맵 간에 위치할 때 제한되거나 손실된 추적 및 원치 않는 홀로그램 드리프트를 방지할 수 있습니다.

    • Unity 앱에서 바인딩되지 않은 참조 공간을 사용하도록 설정하려면 MRTK3을 사용하지 않는 경우 장면의 XR 원본에 EyeLevelSceneOrigin 구성 요소를 추가합니다. 기본적으로 MRTK3의 기본 리그는 이미 HoloLens 2 언바운드 참조 공간을 사용하도록 설정합니다. MRTK3을 사용하고 기본 리그를 사용하지 않는 경우 UnboundedTrackingMode 구성 요소를 장면의 XR 원본에 추가합니다.

참고 항목