개체 검색 문제 해결

이 문서에서는 이미 3D 모델을 Azure Object Anchors 검색 모델로 변환하고 모델을 애플리케이션에 성공적으로 로드했다고 가정합니다.

문제 해결 단계

  • 최상의 환경을 위해 검색하는 모델이 지원되는 크기(1-10미터) 내에 있는지 확인합니다.
  • 공간의 질감이 충분하도록 몇 개의 포스터를 추가합니다.
  • 아래에 설명된 대로 맵을 초기화하려면 현재 홀로그램을 제거합니다.
  • 개체를 보다 완전하게 스캔합니다.
  • 개체의 전체 또는 대부분을 포함하는 근접한 경계 상자를 검색 영역으로 제공합니다.
  • 공간 매핑 캐시를 지우고 개체를 다시 스캔합니다.
  • 아래에 설명된 대로 모델 변환 중에 올바른 중력 방향과 자산 차원이 사용되었는지 확인합니다.
  • 아래에 설명된 대로 검색 모델을 시각적으로 검사합니다.
  • 아래에 설명된 대로 모델 쿼리 값을 조정합니다.
  • 아래에 설명된 대로 진단을 캡처합니다.

맵을 초기화하려면 홀로그램을 제거합니다.

다음 문제와 함께 개체가 검색되는 경우 맵을 제거하고 초기화하면 문제를 해결할 수 있습니다.

  • 반전된 방향
  • 잘못된 포즈
  • 기울어진 모델

홀로그램을 제거하고 맵을 초기화하려면 설정 앱을 열고 시스템 ->홀로그램으로 이동합니다. 그런 다음 모든 홀로그램 제거를 선택하여 새 맵으로 시작합니다.

홀로그램을 지우면 개체가 최근에 이동된 경우 현재 위치에서 개체를 적절하게 검색할 수 있습니다.

HoloLens를 착용하고 환경을 돌아다니면서 환경을 다시 검사합니다. 1-2미터에서 몇 번 검색하려는 개체 주위를 걸어보세요.

중력 방향과 자산 차원 단위가 올바른지 확인합니다.

Object Anchors 변환 SDK를 사용하여 변환을 위해 3D 모델을 제출하는 경우(여기 참조) 3D 모델에 대해 올바른 중력 방향(Gravity) 및 측정 단위(AssetDimensionUnit)를 입력해야 합니다. 이러한 값이 올바르지 않으면 Object Anchors가 개체를 올바르게 검색하지 못할 수 있습니다.

중력 방향은 지구를 가리키는 하향 벡터입니다. CAD 모델의 경우 중력 방향은 일반적으로 위쪽 방향의 반대입니다. 예를 들어, 대부분의 경우 +Z는 위쪽 방향을 나타내며 -Z 또는 Vector3(0.0, 0.0, -1.0)가 중력 방향을 나타냅니다. 중력 결정 시 런타임 중에 모델이 보이는 방향도 고려해야 합니다. 실제 세계에서 평면 위의 의자를 검색하려는 경우에는 중력이 Vector3(0.0, 0.0, -1.0)일 수 있습니다. 그러나 의자가 45도 기울어 있는 경우 중력은 Vector3(0.0, -Sqrt(2)/2, -Sqrt(2)/2)이 될 수 있습니다.

중력 방향은 MeshLab 같은 3D 렌더링 도구를 사용하여 확인할 수 있습니다.

측정 단위는 모델의 배율을 나타냅니다. 지원되는 단위는 Microsoft.Azure.ObjectAnchors.Conversion.AssetLengthUnit 열거형을 사용하여 찾을 수 있습니다.

또한 여기의 지침에 따라 Unity에서 검색 모델을 시각화하여 중력 방향과 배율이 올바르게 보이는지 시각적으로 검사할 수 있습니다.

검색 모델의 메시를 시각적으로 검사

방향, 크기 조정 또는 기능 문제를 볼 수 있도록 검색 모델의 메시를 시각적으로 검사하는 것이 도움이 될 수 있습니다. Unity에서 변환된 모델을 시각화하려면 여기의 지침을 따릅니다.

개체 쿼리 값 조정

  • 검색 속도 및 정확도를 향상하려면 이상적으로 전체 개체를 포함하는 검색 영역을 제공합니다.
  • 기본 ObjectQuery.MinSurfaceCoverage 값이면 충분하지만 더 작은 값을 사용하여 더 빨리 검색할 수 있습니다.
  • 개체가 똑바로 세워질 것으로 예상되는 경우 ObjectQuery.ExpectedMaxVerticalOrientationInDegrees에 작은 값을 사용합니다.
  • 앱은 항상 1:1 개체 모델을 사용하여 검색해야 합니다. 예측 축적은 이상적으로 1% 오차 내에서 1에 근접해야 합니다. 앱은 ObjectQuery.MaxScaleChange0 또는 0.1로 설정하여 축적 예측을 해제 또는 설정하고 정성적으로 인스턴스 포즈를 평가할 수 있습니다.
  • 자세한 내용은 어려운 개체를 검색하는 방법을 참조하세요.

진단 캡처

애플리케이션은 ObjectDiagnosticsSession 개체를 사용하여 진단 보관을 캡처하고 저장할 수 있습니다.

MRTK가 포함된 Unity 샘플 앱TempState 폴더에 진단을 기록합니다. 손 메뉴를 열고 추적 시작을 선택하고 검색 시도를 재현한 다음 추적 중지를 선택하여 진단 보관을 저장하여 진단 세션을 시작할 수 있습니다. 그런 다음 Windows 디바이스 포털을 사용하여 앱의 TempState 폴더에서 진단 보관을 검색할 수 있습니다.

그런 다음 문제를 디버깅하는 데 도움이 되도록 진단 보관을 공유할 수 있습니다.

다음 단계

이 문제 해결 가이드에서는 Azure Object Anchors를 사용하여 실제 개체 검색 문제를 해결하는 방법을 알아보았습니다. 다음은 몇 가지 관련 문서입니다.