연습 - Azure Spatial Anchors 시작

완료됨

이 단원에서는 다음을 수행하는 데 필요한 단계를 살펴보겠습니다.

  • Azure Spatial Anchors 세션을 시작하고 중지합니다.
  • 단일 디바이스에서 공간 앵커를 만들고, 업로드하고, 다운로드합니다.

이 학습 모듈의 필수 구성 요소를 완료했다면 OpenXR 및 MRTK3에 대한 Unity 프로젝트가 이미 설정되고 구성되어 있을 것입니다. 해당 프로젝트를 연 다음 검사 적절한 기능을 선택했는지 확인합니다.

  1. 편집 > 프로젝트 설정 > 플레이어 > 게시 설정으로 이동합니다.
  2. 아래로 스크롤하여 기능 섹션을 찾고, 아직 다음 항목을 선택하지 않았으면 지금 선택합니다.
  • SpatialPerception
  • InternetClient
  • PrivateNetworkClientServer

완료되면 프로젝트 설정 창을 닫고 다음 단계를 계속 진행합니다.

기본 제공된 Unity 패키지를 설치하고 자습서 자산을 가져옵니다.

  1. 메뉴 모음에서 >패키지 관리자를 선택합니다.

  2. AR Foundation 버전 5.0.3 또는 최신 버전이 설치되어 있는지 확인합니다.

    Screenshot of selections for verifying the AR Foundation version for Package Manager.

자습서 자산 가져오기

  1. 이 자습서에 따라 프로젝트에 Azure Spatial Anchors SDK V2.12 또는 최신 버전을 추가합니다.

  2. 순서대로 다음 Unity 사용자 지정 패키지를 다운로드하여 가져옵니다.

    참고 항목

    MRTK3 및 ASA를 모두 가져오면 ARFoundation 패키지 버전이 가져온 ARSubsystems 버전과 일치하지 않을 때 오류가 발생할 수 있습니다. 이 문제가 해결될 때까지 해결 방법으로 com.unity.xr.arsubsystems 버전 5.0.2를 프로젝트의 패키지 관리자에 수동으로 추가할 수 있습니다.

    ARSubsystems가 더 이상 사용되지 않는다는 경고가 표시되지만 무시할 수 있습니다. “WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)”라는 CS0618 경고가 사용되지 않는 경우에도 무시할 수 있습니다.

장면 준비

이 섹션에서는 자습서 프리팹 중 일부를 추가하여 장면을 준비합니다.

  1. 프로젝트 창에서 자산>MRTK로 이동합니다. Tutorials.AzureSpatialAnchors>Prefabs 폴더를 선택한 다음, 다음 프리팹을 계층 구조 창으로 끌어 장면에 추가합니다.

    • ButtonParent 프리팹
    • Instructions 프리팹
    • ParentAnchor 프리팹
    • 단추 부모의 변환/위치 값을 X = 0.0, Y = 1.6, Z = 0.6으로 변경합니다.
    • 지침 변환/위치 값을 X = -0.8, Y = 2.0, Z = 2.0으로 변경합니다.
    • 부모 앵커의 변환/위치 값을 X = -0.3, Y = 1.5, Z = 0.6으로 변경합니다. Screenshot of prefabs added to the Hierarchy pane.

    화면에 큰 아이콘(예: 큰 프레임의 "T" 아이콘)이 표시되어 방해가 되는 경우 Gizmos 드롭다운을 열고 개별 개체의 아이콘 표시를 해제하여 아이콘을 숨길 수 있습니다.

  2. 계층 구조 창에서 MRTK XR Rig>카메라 오프셋을 선택합니다.

  3. 검사기 창에서 구성 요소 추가 단추를 사용하여 다음 구성 요소를 추가합니다.

    • AR 앵커 관리자(스크립트)
    • DisableDiagnosticsSystem(스크립트)

    참고 항목

    AR Anchor Manager(스크립트) 구성 요소를 추가하면 AR Anchor Manager(스크립트) 구성 요소에 필요하기 때문에 XR Origin 구성 요소가 자동으로 추가됩니다.

    Screenshot of adding AR Anchor Manager.

장면이 작동하도록 단추 구성

이 섹션에서는 장면에 스크립트를 추가하여 로컬 앵커와 공간 앵커가 앱에서 작동하는 기본 방식을 보여 주는 일련의 단추 이벤트를 만듭니다.

  1. 계층 구조 창에서 ButtonParent 개체를 확장하고 첫 번째 자식 개체인 StartAzureSession을 선택합니다.

  2. 검사기 창에서 누를 수 있는 단추 구성 요소로 이동합니다. On Clicked() 이벤트가 있습니다.

  3. 계층 구조에서 ParentAnchor 개체를 선택한 다음, 검사기로 끌어서 On Clicked() 이벤트의 없음(개체) 필드에 놓습니다.

  4. 함수 없음 드롭다운을 선택한 다음, AnchorModuleScript>StartAzureSession()을 선택합니다. 이 함수는 이벤트가 트리거될 때 실행됩니다.

    Screenshot that shows Unity with the StartAzureSession button's OnClick event configured.

  5. ButtonParent 자식 목록의 계층 구조 창에서 StopAzureSession을 선택합니다.

  6. 검사기 창에서 누를 수 있는 단추 구성 요소로 이동합니다.

  7. 계층에서 ParentAnchor 개체를 선택한 다음 검사기로 끌어온 다음 On Clicked() 이벤트의 None(개체) 필드에 놓습니다.

  8. 함수 없음 드롭다운을 선택한 다음, AnchorModuleScript>StopAzureSession ()을 선택합니다.

    Screenshot of Unity with the StopAzureSession button's OnClick event configured.

  9. ButtonParent 자식 목록의 계층 구조 창에서 CreateAzureAnchor를 선택합니다.

  10. 검사기 창에서 누를 수 있는 단추 구성 요소로 이동합니다.

  11. 계층에서 ParentAnchor 개체를 선택한 다음 검사기로 끌어온 다음 On Clicked() 이벤트의 None(개체) 필드에 놓습니다.

  12. 함수 없음 드롭다운을 선택하고 AnchorModuleScript>CreateAzureAnchor를 선택합니다.

  13. ParentAnchor 개체를 다시 선택한 다음 Inspector끌어서 AnchorModuleScript.CreateAzureAnchor매개 변수에 놓습니다.

    Screenshot of Unity with the CreateAzureAnchor button's OnClick event configured.

  14. ButtonParent 자식 목록의 계층 구조 창에서 RemoveLocalAnchor를 선택합니다.

  15. 검사기 창에서 누를 수 있는 단추 구성 요소로 이동합니다.

  16. 계층에서 ParentAnchor 개체를 선택한 다음 검사기로 끌어온 다음 On Clicked() 이벤트의 None(개체) 필드에 놓습니다.

  17. 함수 없음 드롭다운을 선택한 다음, AnchorModuleScript>RemoveLocalAnchor를 선택합니다.

  18. ParentAnchor 개체를 다시 선택한 다음 Inspector끌어서 AnchorModuleScript.RemoveLocalAnchor매개 변수에 놓습니다.

    Screenshot of Unity with the RemoveLocalAnchor button's OnClick event configured.

  19. ButtonParent 자식 목록의 계층 구조 창에서 FindAzureAnchor를 선택합니다.

  20. 검사기 창에서 누를 수 있는 단추 구성 요소로 이동합니다.

  21. 계층에서 ParentAnchor 개체를 선택한 다음 검사기로 끌어온 다음 On Clicked() 이벤트의 None(개체) 필드에 놓습니다.

  22. 함수 없음 드롭다운을 선택한 다음 AnchorModuleScript>FindAzureAnchor를 선택합니다.

    Screenshot of Unity with the FindAzureAnchor button's OnClick event configured.

  23. ButtonParent 자식 목록의 계층 구조 창에서 DeleteAzureAnchor를 선택합니다.

  24. 검사기 창에서 누를 수 있는 단추 구성 요소로 이동합니다.

  25. 계층에서 ParentAnchor 개체를 선택한 다음 검사기로 끌어온 다음 On Clicked() 이벤트의 None(개체) 필드에 놓습니다.

  26. 함수 없음 드롭다운을 선택한 다음, AnchorModuleScript>DeleteAzureAnchor를 선택합니다.

    Screenshot of Unity with the DeleteAzureAnchor button's OnClick event configured.

Azure 리소스에 장면 커넥트

  1. 계층 구조 창에서 ParentAnchor 개체를 선택합니다.

  2. 검사기 창에서 앵커 관리자 스크립트(스크립트) 구성 요소를 찾습니다.

  3. 이 자습서 시리즈의 필수 구성 요소의 일부로 만든 Azure Spatial Anchors 계정의 자격 증명을 사용하여 자격 증명 섹션을 구성합니다.

    • Spatial Anchors 계정 ID 필드에 Azure Spatial Anchors 계정의 계정 ID 값을 붙여넣습니다.
    • Spatial Anchors 계정 키 필드에 Azure Spatial Anchors 계정의 액세스 키 값을 붙여넣습니다.
    • Spatial Anchors 계정 도메인 필드에 Azure Spatial Anchors 계정의 계정 도메인 값을 붙여넣습니다.

    Screenshot of Unity with the Spatial Anchor Manager configured.

Azure Spatial Anchors의 기본 동작을 사용해 보세요.

Azure Spatial Anchors는 Unity에서 실행할 수 없습니다. Azure Spatial Anchors 기능을 테스트하려면 프로젝트를 빌드하고 디바이스에 앱을 배포해야 합니다.

Unity 프로젝트를 빌드하고 HoloLens 2에 배포하는 방법에 대한 미리 알림은 (선택 사항) 애플리케이션 빌드 및 배포 섹션에서 시작하는 HoloLens 2에 애플리케이션 빌드 문서를 참조하세요.

앱이 디바이스에서 실행되는 경우 Azure Spatial Anchor 자습서 지침 패널에 표시되는 화면의 지시를 따릅니다.

  1. 큐브를 다른 위치로 이동합니다.
  2. Azure 세션을 시작합니다.
  3. 큐브의 위치에 Azure 앵커를 만듭니다.
  4. Azure 세션을 중지합니다.
  5. 사용자가 큐브를 이동할 수 있도록 로컬 앵커를 제거합니다.
  6. 큐브를 다른 곳으로 이동합니다.
  7. Azure 세션을 시작합니다.
  8. 3단계의 위치에 큐브를 배치할 Azure 앵커를 찾습니다.
  9. Azure 앵커를 삭제합니다.
  10. Azure 세션을 중지합니다.

주의

Azure Spatial Anchors는 인터넷을 사용하여 앵커 데이터를 저장하고 로드합니다. 디바이스가 인터넷에 연결되었는지 확인합니다.