AR 핀 로컬 스토리지 퀵스타트

언리얼 엔진 내에 가상 콘텐츠를 어태치할 수 있도록 AR에서 고정된 현실 위치를 설정하는 방법을 알아봅니다.

Choose your operating system:

Windows

macOS

Linux

추가 참고

이 퀵스타트 가이드는 언리얼에서 가상 콘텐츠를 연결할 수 있도록 AR에서 핀이 고정된 현실 위치를 설정하는 방법을 안내합니다. 이 예시에서는 HoloLens를 플랫폼으로 사용합니다.

이 가이드를 따라하면서 학습하는 내용은 다음과 같습니다.

  • 디바이스에 로컬로 AR 핀을 저장합니다.

  • 로컬 AR 핀을 삭제합니다.

  • 로컬 AR 핀을 로드합니다.

시작하기 전에 AR 프로젝트가 구성되어 있어야 합니다. 계속하기 전에 새 AR 프로젝트 구성하기를 참조하세요.

AR 핀 로컬 스토리지는 특정 플랫폼에서만 작동합니다. 4.26 기준으로 Windows Mixed Reality 플러그인과 일부 OpenXR 확장 플러그인(예: Microsoft OpenXR 플러그인)이 지원됩니다. 플랫폼 지원에 관한 자세한 정보는 AR 핀 문서를 참조하세요.

1단계 - AR 핀 추가 및 저장

다음 단계를 따라 3D 공간에 가상 오브젝트를 스폰하고 AR 핀에 오브젝트 데이터를 저장합니다. 먼저 SpawnActor 함수 를 구성하고 이를 Pin Component 에 연결하여 특정 위치에 오브젝트를 핀 설정해야 합니다.

이 가이드는 HoloLens 플랫폼에서 제공하는 사용자의 손의 위치를 스폰 위치로 사용합니다. HoloLens의 모션 컨트롤러 정보에 액세스하려면 다음 단계를 따르세요.

  1. 블루프린트 에디터의 ARPawn에 컴포넌트 모션 컨트롤러(Motion Controller) 를 추가합니다.

    모션 컨트롤러 컴포넌트 추가

  2. '디테일(Details)' 패널에서 모션 소스(Motion Source)오른쪽(Right) 으로 설정하여 핀을 배치하는 손과 일치시킵니다.

    모션 컨트롤러 디테일

Spawn Actor 함수 구성하기

다음 단계를 따라 Spawn Actor 함수를 구성합니다. 이 섹션에서는 가상 콘텐츠에 대해 Pin Object 라는 커스텀 블루프린트 액터를 사용합니다.

  1. 프로젝트의 을 더블 클릭하고 블루프린트 에디터 에서 엽니다.

  2. 블루프린트 에디터의 이벤트 그래프(Event Graph) 탭을 우클릭하고 이름을 검색하여 다음 함수를 추가합니다.

    • Is ARPin Local Store Supported

    • Is ARPin Local Store Ready

      AR 핀 노드 검색

  3. 두 함수의 부울 반환 값을 AND 로직 노드의 입력으로 사용합니다. AND 노드의 결과를 Branch 노드에 연결합니다. 이를 통해 AR 핀 함수를 실행하기 전에 두 시나리오가 true가 되게 할 수 있습니다.

    부울 및 branch를 블루프린트에 추가

  4. 'Branch' 노드에서 SpawnActor from Class 함수를 추가합니다. 그런 다음 노드의 Class 파라미터를 Pin Object 로 설정합니다. **

  5. Make Transform 함수를 추가하여 스폰 위치에 따라 오브젝트가 스폰될 로컬 트랜스폼을 지정합니다. 월드 트랜스폼이 나중에 지정되므로 로컬 스페이스에 대한 디폴트값을 그대로 둡니다.

    Make Transform 함수 추가

프로젝트에 입력 액션을 추가하는 방법에 관한 자세한 내용은 일반 입력 액션에 대한 입력을 참조하세요.

Pin Component 추가

다음 단계를 따라 이전 섹션에서 스폰된 오브젝트를 핀 설정합니다. SpawnActor from Class 함수는 오브젝트(Object) 를 반환합니다. 하지만 Pin Component 함수는 씬 컴포넌트(Scene Component) 반환을 예상합니다. 그렇기 때문에 오브젝트를 핀 설정하기 위해선 오브젝트의 RootComponentRootComponent를 잡습니다. 이는 오브젝트의 트랜스포메이션을 정의하는 씬 컴포넌트(Scene Component)입니다.

  1. Pin Component 함수를 추가합니다.

  2. SpawnActor의 Return Value 핀을 드래그하고 Get Root Component 를 선택합니다.

    Get Root Component 추가

  3. 이벤트 그래프를 우클릭하고 오브젝트를 핀 설정하고자 하는 위치의 변수를 검색합니다. HoloLens에서 손이 있는 위치로 스폰하기 위해 Get Motion Controller 를 선택합니다. 이를 그래프에 추가합니다.

  4. 변수를 타깃 으로 GetWorldTransform 함수에 전달합니다. 그런 다음 함수의 Return ValuePin Component 노드의 Pin to World Transform 입력에 전달합니다. World Transform은 컴포넌트가 핀 설정되는 월드 스페이스 위치를 정의합니다.

    World Transform 및 Pin Components를 블루프린트에 추가

  5. Save ARPin to Local Store 함수를 추가하고 Pin Component 에서 반환된 ARPin Object Reference 를 'Save ARPin to Local Store' 노드의 In Pin 입력에 전달합니다. 각 핀의 저장 이름이 고유해야 합니다. 그런 다음 'World Transform'을 스트링 으로 변환하고 저장 이름을 설정합니다.

    Save ARPin to Local Store 함수 추가

  6. AR 디바이스에서 앱을 실행합니다. 'Select(R)' 액션을 수행할 때 핀 오브젝트가 나타나고 ARPin 로컬 스토리지에서 AR 핀에 대한 엔트리를 추가합니다.

    AR에서 오브젝트 추가 및 제거 예시

HoloLens의 경우 Windows 개발자 포털에서 로컬로 저장된 모든 핀을 볼 수 있습니다.

Windows 개발자 포털에 저장된 핀

2단계 - AR 핀 제거

다음 단계를 따라 로컬 스토리지에서 AR 핀을 제거하고 핀과 연결된 가상 콘텐츠를 삭제합니다.

  1. Get All Pins 를 호출하고 For Each Loop 노드를 추가하여 반환된 AR 핀의 배열에서 반복작업합니다.

    블루프린트에 For Each Loop 노드 추가

  2. Remove Pin 함수를 추가하여 핀 설정된 컴포넌트 업데이트를 중지합니다.

    Remove Pin 함수 추가

  3. Destroy Actor 함수를 추가하여 가상 핀 오브젝트를 제거합니다. Get Pinned ComponentGet Owner 를 호출하여 AR 핀과 핀 설정된 씬 컴포넌트에서 액터를 가져옵니다.

    Destroy Actor 추가

  4. Remove All ARPins from Local Store 함수를 추가하여 모든 AR 핀에서 반복작업하고 핀 설정된 컴포넌트를 삭제한 후 로컬 스토어에서 저장된 핀을 모두 제거합니다.

    Remove All ARPins from Local Store 함수 추가

  5. AR 디바이스에서 앱을 실행합니다. Select(L) 액션을 수행할 때 핀 오브젝트가 사라지고 AR 핀 로컬 스토어에서 AR 핀에 대한 항목을 제거합니다.

    AR 환경에 오브젝트 추가

3단계 - AR 핀 로드

다음 단계를 따라 앱의 이전 세션에서 디바이스에 저장된 모든 AR 핀을 로드하고 AR 핀에 대한 가상 콘텐츠를 다시 스폰합니다.

  1. Load ARPins from Local Store 를 호출하여 디바이스에 로컬로 저장된 모든 AR 핀에 액세스합니다.

    Load ARPins from Local Store 노드 추가

  2. Load ARPins from Local Store 는 AR 핀 이름의 맵을 반환합니다. 맵에 있는 항목에서 반복작업하기 위해 Values 함수를 사용하여 맵을 배열로 변환합니다. 배열의 모든 항목에 액세스하려면 For Each Loop 노드를 추가합니다.

    For Each Loop 노드 추가

  3. 루프 바디에서 디폴트 Make Transform 함수를 사용하여 SpawnActor from Class 를 호출합니다. 스폰될 위치에서 오브젝트를 오프셋하고자 하는 경우를 제외하고 트랜스폼에 대해 디폴트값을 사용합니다.

    SpawnActor from Class 노드 추가

  4. 반환된 오브젝트를 Get Root Component 를 사용하여 씬 컴포넌트 로 변환하고 Pin Component to ARPin 에 전달합니다.

    AR 핀에 핀 컴포넌트 추가

  5. AR 디바이스에서 앱을 실행하고 몇 개의 AR 핀을 생성합니다. 앱을 재시작하고 이전에 생성한 모든 핀이 앱이 시작될 때 동일한 위치에서 나타나는지 확인합니다.

    AR 환경의 현재 핀 AR 환경의 로드된 핀

    로드된 핀과 새로 생성한 핀을 구분하기 위해 오브젝트에 대해 다른 머티리얼이 사용되었습니다.

4단계 - 직접 해보기

이 가이드에서는 디바이스에 로컬로 저장되는 AR 핀을 생성했습니다. Azure와 같은 클라우드 컴퓨팅 서비스를 사용하여 저장되고 여러 디바이스 및 플랫폼에서 공유 가능한 핀을 생성하려면 Microsoft의 Unreal의 Azure Spatial Anchors 문서를 참조하세요.

언리얼 엔진의 이전 버전을 위해 작성된 페이지입니다. 현재 언리얼 엔진 5 버전을 위해 업데이트되지 않았습니다.