장면 이해 관찰자 - MRTK2
Scene Understanding은 장면 엔터티의 의미 체계 표현과 HoloLens 2 기하학적 형식을 반환합니다(HoloLens 1세대는 지원되지 않음).
이 기술의 몇 가지 예상 사용 사례는 다음과 같습니다.
- 특정 종류의 가장 가까운 표면에 개체 배치(예: 벽 및 바닥)
- 플랫폼 스타일 게임을 위한 탐색 메시 생성
- 물리학 엔진 친화적인 기하 도형을 쿼드로 제공
- 유사한 알고리즘을 작성할 필요가 없도록 하여 개발 가속화
장면 이해는 MRTK 2.6에서 실험적 기능으로 도입되었습니다. MRTK는 라는 WindowsSceneUnderstandingObserver
공간 관찰자로 MRTK에 통합됩니다. Scene Understanding은 레거시 XR 파이프라인과 XR SDK 파이프라인(OpenXR(MRTK 2.7부터 시작) 및 Windows XR 플러그 인 모두에서 작동합니다. 두 경우 모두 가 WindowsSceneUnderstandingObserver
사용됩니다.
참고
원격에서 장면 이해 사용은 MRTK 2.7.3 이상에서만 지원됩니다. OpenXR을 사용하는 프로젝트만 지원됩니다. 레거시 XR 파이프라인 또는 Windows XR 플러그 인을 사용하는 프로젝트는 지원 되지 않습니다 .
관찰자 개요
메시지가 표시되면 는 WindowsSceneUnderstandingObserver
애플리케이션이 주변 환경을 이해하는 데 유용한 특성을 사용하여 SpatialAwarenessSceneObject 를 반환합니다. 관찰 빈도, 반환된 개체 유형(예: 벽, 바닥) 및 기타 관찰자 동작은 프로필을 통해 관찰자의 구성에 따라 달라집니다. instance 경우 폐색 마스크가 필요한 경우 관찰자가 쿼드를 생성하도록 구성해야 합니다. 관찰된 장면을 나중에 로드하여 편집기 재생 모드에서 장면을 다시 만들 수 있는 직렬화된 파일로 저장할 수 있습니다.
설치 프로그램
중요
장면 이해는 HoloLens 2 및 Unity 2019.4 이상에서만 지원됩니다.
- 빌드 설정에서 플랫폼이 UWP로 설정되어 있는지 확인합니다.
- Mixed Reality 기능 도구를 통해 Scene Understanding 패키지를 가져옵니다.
장면 이해 사용
장면 이해를 시작하는 가장 빠른 방법은 샘플 장면을 검사 것입니다.
장면 이해 샘플 장면
Unity에서 프로젝트 Explorer 사용하여 장면 파일을 Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity
열고 재생을 누릅니다.
중요
MRTK 2.6.0에만 적용됩니다. Mixed Reality 기능 도구를 사용하거나 UPM을 통해 가져오는 경우 종속성 문제로 인해 실험적 - SceneUnderstanding 샘플을 가져오기 전에 데모 - SpatialAwareness 샘플을 가져오세요. 자세한 내용은 이 GitHub 문제를 참조하세요.
장면에서는 다음을 보여 줍니다.
- 관찰자를 구성하기 위한 애플리케이션 UI에서 관찰된 장면 개체의 시각화
- 관찰자 설정을 변경하고 관련 이벤트를 수신 대기하는 방법을 보여 주는 예제
DemoSceneUnderstandingController
스크립트 - 오프라인 개발을 위해 장면 데이터를 디바이스에 저장
- 편집기 내 개발 워크플로를 지원하기 위해 이전에 저장된 장면 데이터(.bytes 파일) 로드
중요
기본적으로 관찰자의 ShouldLoadFromFile
속성은 false로 설정됩니다. 직렬화된 샘플 룸의 시각화를 보려면 아래 의 관찰자 서비스 구성 섹션을 참조하고 편집기에서 속성을 true로 설정합니다.
참고
샘플 장면은 레거시 XR 파이프라인을 기반으로 합니다. XR SDK 파이프라인을 사용하는 경우 그에 따라 프로필을 수정해야 합니다. 제공된 Scene Understanding 공간 인식 시스템 프로필(DemoSceneUnderstandingSystemProfile
) 및 장면 이해 관찰자 프로필(DefaultSceneUnderstandingObserverProfile
및 DemoSceneUnderstandingObserverProfile
)은 두 파이프라인에서 모두 작동합니다.
참고
샘플 장면은 초기화/스레드 실행 순서로 인해 특정 상황에서 경고를 기록 There is no active AsyncCoroutineRunner when an action is posted.
합니다. 구성 요소가 "데모 컨트롤러" GameObject에 연결되어 있고 구성 요소/GameObject가 장면에서 활성화/활성 상태로 유지되는지 확인할 AsyncCoroutineRunner
수 있는 경우(기본 사례) 경고를 무시해도 됩니다.
그러나 Scene Understanding을 사용하여 새 장면을 만들 때 루트에 빈 GameObject를 만들고 스크립트를 연결 AsyncCoroutineRunner
해야 합니다. 그렇지 않으면 Scene Understanding이 제대로 작동하지 않을 수 있습니다.
관찰자 서비스 구성
'MixedRealityToolkit' 게임 개체를 선택하고 검사기를 검사.
이러한 옵션을 사용하면 를 구성할 수 있습니다 WindowsSceneUnderstandingObserver
.
예제 스크립트
DemoSceneUnderstandingController.cs 예제 스크립트는 Scene Understanding 서비스 작업의 주요 개념을 보여 줍니다.
- Scene Understanding 이벤트 구독
- 장면 이해 이벤트 처리
- 런타임 시 구성
WindowsSceneUnderstandingObserver
장면의 패널 토글은 이 샘플 스크립트의 공용 함수를 호출하여 장면 이해 관찰자의 동작을 변경합니다.
Prefabs 인스턴스화를 켜면 부모 개체 아래에 깔끔하게 수집된 모든 SpatialAwarenessSceneObject에 맞게 크기가 조정되는 개체를 만드는 방법을 보여 줍니다.
빌드된 앱 노트
표준 방식으로 HoloLens를 빌드하고 배포합니다. 실행되면 여러 단추가 기능과 함께 재생되는 것처럼 보일 것입니다.
관찰자에 대한 쿼리를 만드는 데는 몇 가지 단점이 있습니다. 페치 요청을 잘못 구성하면 이벤트 페이로드에 예상 데이터가 포함되지 않습니다. 예를 들어 쿼드를 요청하지 않으면 폐색 마스크 텍스처가 없습니다. 현명한 것처럼 관찰자가 메시를 요청하도록 구성되지 않은 경우 월드 메시가 나타나지 않습니다. 스크립트는 DemoSceneUnderstandingController
이러한 종속성 중 일부를 처리하지만 전부는 아닙니다.
저장된 장면 파일은 의 User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes
디바이스 포털을 통해 액세스할 수 있습니다. 이러한 장면 파일은 검사기에서 찾은 관찰자 프로필에 지정하여 편집기에서 사용할 수 있습니다.