자습서: 세션 및 디바이스에서 공간 앵커 공유

Azure Spatial Anchors는 시간이 지남에 따라 디바이스 간에 위치를 유지하는 개체를 사용하여 혼합 현실 환경을 만들 수 있는 플랫폼 간 개발자 서비스입니다.

이 자습서에서는 Azure Spatial Anchors를 사용하여 한 세션 동안 앵커를 만든 다음, 동일하거나 다른 디바이스에서 해당 앵커를 찾습니다. 또한 동일한 위치에 있는 여러 디바이스에서 동일한 앵커를 동시에 찾을 수 있습니다.

Animation showing spatial anchors that are created with a mobile device and used with a different device over the course of days.

이 자습서에서는 다음 작업을 수행하는 방법을 알아봅니다.

  • 앵커를 공유하는 데 사용할 수 있는 ASP.NET Core 웹앱을 Azure에 배포하고, 앵커를 지정된 기간 동안 메모리에 저장합니다.
  • 빠른 시작의 Unity 샘플 내에서 AzureSpatialAnchorsLocalSharedDemo 장면을 구성하여 공유 앵커 웹앱을 활용합니다.
  • 앵커를 하나 이상의 디바이스에 배포하고 실행합니다.

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

필수 조건

이 자습서를 시작하기 전에 다음 필수 구성 요소를 충족했는지 확인합니다.

  • Azure Spatial Anchors 개요를 읽습니다.
  • 5분 빠른 시작 중 하나를 완료하세요.

    참고 항목

    Android/NDK 및 iOS/Swift 빠른 시작에는 현재 이 자습서에 설명된 기능이 표시되지 않습니다.

  • 다음 중 하나에 대한 기본 지식:
    • Android를 사용하는 경우 ARCore.
    • iOS를 사용하는 경우 ARKit.
  • Visual Studio 2019 이상 및 ASP.NET 및 웹 개발 워크로드가 있는 Windows 컴퓨터.
  • .NET Core 3.1 SDK.
  • 앱을 배포하고 실행할 다음 디바이스 중 하나 이상: HoloLens, HoloLens 2, iOS 또는 Android.

참고 항목

이 자습서에서는 Unity 및 Azure ASP.NET Core 웹앱을 사용하지만, 여기서는 다른 디바이스에서 Azure Spatial Anchors 식별자를 공유하는 방법에 대한 예만 제공합니다. 다른 언어와 백 엔드 기술을 사용하여 동일한 목표를 달성할 수 있습니다.

Spatial Anchors 리소스 만들기

Azure Portal로 이동합니다.

왼쪽 창에서 리소스 만들기를 선택합니다.

검색 상자를 사용하여 Spatial Anchors를 검색합니다.

Screenshot showing the results of a search for Spatial Anchors.

Spatial Anchors를 선택한 다음, 만들기를 선택합니다.

Spatial Anchors 계정 창에서 다음을 수행합니다.

  • 일반 영숫자 문자를 사용하여 고유한 리소스 이름을 입력합니다.

  • 리소스를 연결할 구독을 선택합니다.

  • 새로 만들기를 선택하여 리소스 그룹을 만듭니다. 이름을 myResourceGroup으로 지정한 다음, 확인을 선택합니다.

    리소스 그룹은 웹앱, 데이터베이스, 스토리지 계정과 같은 Azure 리소스가 배포되고 관리되는 논리적 컨테이너입니다. 예를 들어 나중에 간단한 단계 하나만으로 전체 리소스 그룹을 삭제하도록 선택할 수 있습니다.

  • 리소스를 배치할 위치(Azure 지역)를 선택합니다.

  • 리소스 만들기를 시작하려면 만들기를 선택합니다.

Screenshot of the Spatial Anchors pane for creating a resource.

리소스를 만든 후 Azure Portal은 배포가 완료되었음을 표시합니다.

Screenshot showing that the resource deployment is complete.

리소스로 이동을 선택합니다. 이제 리소스 속성을 볼 수 있습니다.

나중에 사용하기 위해 리소스의 계정 ID 값을 텍스트 편집기에 복사합니다.

Screenshot of the resource properties pane.

또한 리소스의 계정 도메인 값을 텍스트 편집기에 복사합니다.

Screenshot showing the resource's account domain value.

설정 아래에서 액세스 키를 선택합니다. 나중에 사용하기 위해 기본 키 값, 계정 키를 텍스트 편집기에 복사합니다.

Screenshot of the Keys pane for the account.

샘플 프로젝트 다운로드 + SDK 가져오기

샘플 리포지토리 복제

다음 명령을 실행하여 샘플 리포지토리를 복제합니다.

git clone https://github.com/Azure/azure-spatial-anchors-samples.git
cd ./azure-spatial-anchors-samples

ASA SDK 가져오기

여기의 지침에 따라 HoloLens 플랫폼에 필요한 ASA SDK 패키지를 다운로드하여 가져옵니다.

공유 앵커 서비스 배포

참고 항목

이 자습서에서는 Azure App Service의 무료 계층을 사용합니다. 무료 계층은 20분 동안 사용하지 않으면 시간 초과되며 메모리 캐시가 초기화됩니다.

Visual Studio를 연 다음, Sharing\SharingServiceSample 폴더에서 프로젝트를 엽니다.

게시 마법사를 엽니다.

솔루션 탐색기에서 SharingService 프로젝트를 마우스 오른쪽 단추로 클릭한 다음, 게시...를 선택합니다.

게시 마법사가 시작됩니다.

  1. 대상 Azure>다음을 선택합니다.
  2. 특정 대상 선택 Azure App Service(Windows)>다음
  3. Azure Portal에 로그인합니다.
  4. 녹색 "+"를 선택하여 Azure App Service 만들기

App Service 설정

설정 제안 값 Description
이름 myASASharingService 서비스에 고유한 이름을 지정합니다.
Subscription Name 기본 설정하는 Azure 구독 선택
리소스 그룹 myResourceGroup 또는 기존 항목 선택 리소스 그룹은 웹앱, 데이터베이스, 스토리지 계정과 같은 Azure 리소스가 배포되고 관리되는 논리적 컨테이너입니다. 예를 들어 나중에 간단한 단계 하나만으로 전체 리소스 그룹을 삭제하도록 선택할 수 있습니다.
호스팅 계획 새로 만들기...를 선택하고 아래 표를 참조하세요. App Service 계획은 위치, 크기 및 앱을 호스트하는 웹 서버 팜의 기능을 지정합니다. 단일 App Service 요금제를 공유하도록 웹앱을 구성하여 여러 앱을 호스트할 때 비용을 절약할 수 있습니다. App Service 요금제는 다음을 정의합니다.
  • 지역 (예: 북유럽, 미국 동부 또는 동남 아시아)
  • 인스턴스 크기(소, 중, 대)
  • 확장 개수(1~20개 인스턴스)
  • SKU(무료, 공유, 기본, 표준 또는 프리미엄)

호스팅 계획 설정

설정 제안 값 설명
호스팅 계획 MySharingServicePlan 호스팅 계획에 고유한 이름 지정
위치 미국 서부 웹앱이 호스팅된 데이터 센터입니다. 애플리케이션을 사용할 실제 위치와 가장 가까운 위치를 선택합니다.
크기 Free 호스팅 기능을 결정하는 가격 책정 계층
  1. 만들기를 선택하여 App Service를 만듭니다.
  2. 앱 서비스가 만들어지면 "앱 서비스 인스턴스" 목록에서 선택하고 마침을 선택합니다.
  3. SharingService: 게시 탭에서 게시를 선택합니다.

ASP.NET Core 웹앱이 Azure에 게시되면 https://<your_app_name>.azurewebsites.net으로 이동하거나 SharingService: 게시 탭에서 사이트: 옆에 있는 링크를 클릭할 수 있습니다. 나중에 사용할 수 있도록 이 URL을 텍스트 편집기에 복사합니다.

Screenshot of a published ASP.NET web app in Azure.

샘플 앱 구성 + 배포

프로젝트 열기

Unity에서 Unity 폴더의 프로젝트를 엽니다. Unity는 프로젝트의 버전과 컴퓨터에 설치된 버전이 차이가 있는지를 묻는 메시지를 표시할 수 있습니다. 이 경고는 프로젝트가 생성한 버전보다 Unity 편집기의 버전이 더 최신인 경우에는 문제가 되지 않습니다. 사용 중인 버전이 최신 버전이면 계속을 선택합니다. 사용 중인 버전이 프로젝트에 필요한 버전보다 오래된 경우 끝내기를 클릭하고 Unity 편집기를 업그레이드합니다.

Screenshot of the Unity pane.

빌드 설정 구성

파일>빌드 설정을 선택하여 빌드 설정을 엽니다.

플랫폼 섹션에서 유니버설 Windows 플랫폼을 선택합니다. 대상 디바이스HoloLens로 변경합니다.

플랫폼 전환을 선택하여 플랫폼을 유니버설 Windows 플랫폼으로 변경합니다. UWP 지원 구성 요소가 누락된 경우 Unity가 이러한 구성 요소를 설치하라고 요청할 수 있습니다.

Screenshot of the Unity Build Settings pane - HoloLens

빌드 설정 창을 닫습니다.

계정 정보 구성

다음 단계는 계정 정보를 사용하도록 앱을 구성하는 것입니다. 앞서 "Spatial Anchors 리소스 만들기" 섹션에서 계정 키, 계정 ID계정 도메인 값을 텍스트 편집기에 복사했습니다.

프로젝트 창에서 Assets\AzureSpatialAnchors.SDK\Resources로 이동합니다.

SpatialAnchorConfig를 선택합니다. 검사기 창에서 Spatial Anchors 계정 키의 값으로 Account Key를, Spatial Anchors 계정 ID의 값으로 Account ID를, Spatial Anchors 계정 도메인의 값으로 Account Domain을 입력합니다.

프로젝트 창에서 두 번 클릭하여 Assets/AzureSpatialAnchors.Examples/Scenes/AzureSpatialAnchorsLocalSharedDemo에 있는 AzureSpatialAnchorsLocalSharedDemo라는 장면을 엽니다.

프로젝트 창에서 Assets\AzureSpatialAnchors.Examples\Resources(으)로 이동합니다.

SpatialAnchorSamplesConfig를 선택합니다. 그런 다음, 검사기 창에서 Sharing Anchors Service URL(ASP.NET 웹앱 Azure 배포에서)을 Base Sharing Url에 대한 값으로 입력합니다. /swagger/api/anchors로 URL을 추가합니다. https://<your_app_name>.azurewebsites.net/swagger/api/anchors와 비슷한 형식이어야 합니다.

파일>저장을 선택하여 장면을 저장합니다.

HoloLens 애플리케이션 내보내기 + 배포

파일>빌드 설정을 선택하여 빌드 설정을 엽니다.

빌드 장면 아래에서 모든 장면 옆에 확인 표시가 있는지 확인합니다.

빌드를 선택합니다. 대화 상자에서 HoloLens Visual Studio 프로젝트를 내보낼 폴더를 선택합니다.

내보내기가 완료되면 내보낸 HoloLens 프로젝트가 포함된 폴더가 표시됩니다.

이 폴더의 HelloAR U3D.sln 파일을 두 번 클릭하여 Visual Studio에서 프로젝트를 엽니다.

솔루션 구성릴리스로 변경하고, 솔루션 플랫폼x86으로 변경하고, 배포 대상 옵션에서 디바이스를 선택합니다.

HoloLens 2를 사용하는 경우 x86 대신 ARM64솔루션 플랫폼으로 사용합니다.

Visual Studio configuration

HoloLens 디바이스를 켜고, 로그인하고, USB 케이블을 사용하여 디바이스를 PC에 연결합니다.

디버그>디버깅 시작을 선택하여 앱을 배포하고 디버깅을 시작합니다.

앱 실행하기

앱에서 화살표를 사용하여 LocalSharedDemo를 선택한 다음 Go! 단추를 눌러 데모를 실행합니다. 지침에 따라 앵커를 배치하고 회수합니다.

앵커 만들기 및 공유를 통해 앵커를 만들고 공유 서비스에 저장할 수 있습니다. 반환되는 경우 공유 서비스에서 검색하는 데 사용할 수 있는 식별자를 다시 가져옵니다. 그런 다음, 두 번째 시나리오인 공유 앵커 찾기를 디바이스 또는 다른 디바이스에서 실행할 수 있습니다.

공유 앵커 찾기를 사용하면 앞에서 설명한 식별자를 입력하여 이전에 공유한 앵커를 찾을 수 있습니다. 시나리오를 선택하면 앱에서 추가 지침을 안내합니다. 예를 들어, 환경 정보를 수집하려면 디바이스를 이동하라는 메시지가 표시됩니다. 나중에, 앵커를 전세계에 배치하고, 저장될 때까지 기다렸다가 새 섹션을 시작한 다음, 찾아봅니다.

리소스 정리

이전 단계에서는 리소스 그룹에서 Azure 리소스를 만들었습니다. 나중에 이러한 리소스가 필요하지 않은 경우에 리소스 그룹을 삭제하여 삭제할 수 있습니다.

Azure Portal 메뉴 또는 페이지에서 리소스 그룹을 선택합니다. 그런 다음, 리소스 그룹 페이지에서 myResourceGroup을 선택합니다.

myResourceGroup 페이지에서 나열된 리소스가 삭제하려는 리소스인지 확인합니다.

리소스 그룹 삭제를 선택하고, 텍스트 상자에서 myResourceGroup을 입력하여 확인한 다음, 삭제를 선택합니다.

다음 단계

이 자습서에서는 ASP.NET Core 웹앱을 Azure에 배포하고, Unity 앱을 구성하고 배포했습니다. 앱을 사용하여 공간 앵커를 만들고, ASP.NET Core 웹앱을 사용하여 다른 디바이스와 공유했습니다.

Azure Cosmos DB를 사용하여 공유된 공간 앵커 식별자의 스토리지를 유지하도록 ASP.NET Core 웹앱을 향상시킬 수 있습니다. Azure Cosmos DB 지원을 추가하면 지금 ASP.NET Core 웹앱에서 앵커를 만들 수 있습니다. 그런 다음, 웹앱에 저장된 앵커 식별자를 사용하여 며칠 후에 앱을 반환하여 앵커 위치를 다시 찾을 수 있습니다.