혼합 현실 캡처 개요

참고

HoloLens 2 대한 새로운 MRC 기능에 대한 지침은 아래 PV 카메라에서 렌더링을 참조하세요.

언제든지 MRC( 혼합 현실 캡처 ) 사진 또는 비디오를 찍을 수 있지만 애플리케이션을 개발할 때 유의해야 할 사항은 거의 없습니다. 여기에는 MRC 시각적 품질에 대한 모범 사례와 MRC가 캡처되는 동안 시스템 변경에 응답하는 것이 포함됩니다.

또한 개발자는 혼합 현실 캡처 및 삽입을 앱에 원활하게 통합할 수 있습니다.

HoloLens의 MRC(1세대)는 최대 720p의 비디오 및 사진을 지원하며, HoloLens 2 MRC는 최대 1080p의 비디오와 최대 4K 해상도의 사진을 지원합니다.

품질 MRC의 중요성

Microsoft Store 페이지의 혼합 현실 스크린샷이든 소셜 네트워크에서 캡처 콘텐츠를 공유하는 다른 사용자이든 Mixed Reality 미디어 캡처는 사용자가 앱에 처음 노출되는 경우가 많습니다. MRC를 사용하여 앱을 데모하고, 사용자를 교육하고, 사용자가 혼합 세계 상호 작용을 공유하도록 장려하고, 사용자 조사 및 문제 해결을 수행할 수 있습니다.

MRC가 앱에 미치는 영향

앱에서 MRC 사용

기본적으로 앱은 사용자가 혼합 현실 캡처를 수행할 수 있도록 하기 위해 아무 작업도 수행할 필요가 없습니다.

앱에서 MRC에 대한 향상된 맞춤 사용

기본적으로 혼합 현실 캡처는 오른쪽 눈의 홀로그램 출력과 사진/비디오(PV) 카메라를 결합합니다. 이 두 소스는 현재 실행 중인 몰입형 앱에서 설정한 포커스 포인트를 사용하여 결합됩니다.

즉, 포커스 평면 외부의 홀로그램은 PV 카메라와 오른쪽 디스플레이 사이의 물리적 거리 때문에 정렬되지 않습니다.

포커스 지점 설정

HoloLens의 몰입형 앱은 안정화 평면이 원하는 위치의 포커스 지점을 설정해야 합니다. 이렇게 하면 헤드셋과 혼합 현실 캡처 모두에서 최상의 맞춤이 보장됩니다.

포커스 포인트가 설정되지 않은 경우 안정화 평면은 기본적으로 2미터로 설정됩니다.

PV 카메라에서 렌더링(옵트인)

HoloLens 2 혼합 현실 캡처가 실행되는 동안 몰입형 앱이 PV 카메라에서 렌더링할 수 있는 기능을 추가합니다. 앱이 추가 렌더링을 올바르게 지원하도록 하려면 앱이 이 기능을 옵트인해야 합니다.

PV 카메라에서 렌더링하면 기본 MRC 환경보다 다음과 같은 개선 사항이 제공됩니다.

  • 가까운 상호 작용을 위해 물리적 환경과 손에 홀로그램 맞춤은 모든 거리에서 정확해야 합니다. 기본 MRC에서 볼 수 있듯이 포커스 지점 이외의 거리에서 오프셋이 없으면 안 됩니다.
  • 헤드셋의 오른쪽 눈은 MRC 출력을 위해 홀로그램을 렌더링하는 데 사용되지 않으므로 손상되지 않습니다.

PV 카메라(DirectX)의 렌더링에 대해 자세히 알아봅니다.

모범 사례(HoloLens 관련)

MRC는 추가 개발 노력 없이 작동할 것으로 예상되지만 최상의 혼합 현실 캡처 환경을 제공할 때 알아야 할 몇 가지 사항이 있습니다.

MRC는 홀로그램의 알파 채널을 사용하여 카메라 이미지와 혼합

가장 중요한 단계는 앱이 불투명한 검은색으로 지우는 대신 투명한 검은색으로 지우도록 하는 것입니다. Unity에서 이 작업은 기본적으로 MixedRealityToolkit를 사용하여 수행됩니다. 비 Unity에서 개발하는 경우 한 줄을 변경해야 할 수 있습니다.

다음은 앱이 투명 검은색으로 지워지지 않는 경우 MRC에서 볼 수 있는 몇 가지 아티팩트입니다.

오류 예: 콘텐츠 주위의 검은색 가장자리(투명 검정으로 지우지 못)

투명 검은색으로 지우지 못함: 홀로그램 주위의 검은색 가장자리 아티팩트 투명 검은색으로 지우지 못함: 홀로그램 주위의 검은색 가장자리 아티팩트

실패 예: 홀로그램의 전체 배경 장면이 검은색으로 표시됩니다. 하나의 배경 알파 값을 설정하면 검은색 배경이 생성됩니다.

배경 알파 값을 1로 설정하면 검은색 배경이 생성됩니다.

예상 결과: 홀로그램이 실제와 제대로 혼합된 것처럼 보입니다(투명 검정으로 지우는 경우 예상되는 결과)

투명 검정으로 지우는 경우 예상되는 결과

해결 방법:

  • 불투명 검정으로 표시되는 콘텐츠를 알파 값이 0이 되도록 변경합니다.
  • 앱이 투명 검은색으로 지우고 있는지 확인합니다.
  • Unity는 기본적으로 MixedRealityToolkit을 사용하여 자동으로 지우지만 Unity가 아닌 앱인 경우 ID3D11DeiceContext::ClearRenderTargetView()와 함께 사용되는 색을 수정해야 합니다. 불투명한 검은색(0,0,0,1) 대신 투명 검정(0,0,0,0)을 지우려고 합니다.

이제 원하는 경우 자산의 알파 값을 튜닝할 수 있지만 일반적으로 필요하지는 않습니다. 대부분의 경우 MRC는 상자에서 잘 보입니다. MRC는 미리 곱한 알파를 가정합니다. 알파 값은 MRC 캡처에만 영향을 미칩니다.

HoloLens에서 MRC를 사용하도록 설정할 때 예상되는 사항

다음은 달리 명시되지 않는 한 HoloLens(1세대) 및 HoloLens 2 모두에 적용됩니다.

  • 시스템은 애플리케이션을 30Hz 렌더링으로 제한합니다. 이렇게 하면 앱이 일정한 예산 예약을 유지할 필요가 없고 MRC 비디오 녹화 프레임 속도 30fps와도 일치하도록 MRC를 실행할 수 있는 헤드룸이 만들어집니다.
  • MRC를 녹화/스트리밍할 때 디바이스 오른쪽 눈의 홀로그램 콘텐츠가 "반짝임"으로 나타날 수 있습니다. 텍스트를 읽기가 더 어려워지고 홀로그램 가장자리가 더 들쭉날쭉하게 나타날 수 있습니다(이 손상을 방지하기 HoloLens 2 세 번째 카메라 렌더링에 옵트인).
  • MRC 사진과 비디오는 애플리케이션이 사용하도록 설정한 경우 애플리케이션의 포커스 포인트를 준수하므로 홀로그램이 정확하게 배치되도록 하는 데 도움이 됩니다. 비디오의 경우 포커스 지점이 부드러워지므로 포커스 포인트 깊이가 크게 변경되면 홀로그램이 천천히 제자리에 드리프트될 수 있습니다. 포커스 지점과 다른 깊이에 있는 홀로그램은 실제 세계에서 오프셋으로 나타날 수 있습니다(아래 예제에서는 포커스 포인트가 2미터로 설정되어 있지만 홀로그램은 1미터에 위치함).

2 미터의 홀로그램은 세계에 완벽하게 등록 된 것처럼 보입니다. 가까운 거리 또는 먼 거리의 홀로그램은 약간 오프셋될 수 있습니다.

앱 내에서 MRC 기능 통합

혼합 현실 앱은 앱 내에서 MRC 사진 또는 비디오 캡처를 시작할 수 있으며 캡처된 콘텐츠는 디바이스의 "카메라 롤"에 저장되지 않고 앱에서 사용할 수 있습니다. 사용자 지정 MRC 레코더를 만들거나 기본 제공 카메라 캡처 UI를 활용할 수 있습니다.

기본 제공 카메라 UI를 사용한 MRC

개발자는 카메라 캡처 UI API 를 사용하여 몇 줄의 코드만으로 사용자가 캡처한 혼합 현실 사진 또는 비디오를 가져올 수 있습니다.

이 API는 사용자가 사진이나 비디오를 찍을 수 있는 기본 제공 MRC 카메라 UI를 시작하고 결과 캡처를 앱에 반환합니다. 자체 카메라 UI를 추가하거나 스트림을 캡처하기 위해 하위 수준 액세스를 추가해야 하는 경우 사용자 지정 Mixed Reality 캡처 레코더를 만들 수 있습니다.

사용자 지정 MRC 레코더 만들기

사용자는 항상 시스템 MRC 캡처 서비스를 사용하여 사진 또는 비디오를 트리거할 수 있지만 애플리케이션은 MRC와 마찬가지로 카메라 스트림에 홀로그램을 포함하는 사용자 지정 카메라 앱을 빌드할 수 있습니다. 이렇게 하면 애플리케이션이 사용자 입력에서 캡처를 시작하거나, 사용자 지정 기록 UI를 빌드하거나, MRC 설정을 사용자 지정하여 몇 가지 예제의 이름을 지정할 수 있습니다.

HoloStudio는 MRC 효과를 사용하여 사용자 지정 MRC 카메라를 추가합니다.

HoloStudio는 MRC 효과를 사용하여 사용자 지정 MRC 카메라를 추가합니다.

Unity 애플리케이션은 홀로그램을 사용하도록 설정하려면 속성에 대한 Locatable_camera_in_Unity 표시되어야 합니다.

다른 애플리케이션은 Windows 미디어 캡처 API 를 사용하여 카메라를 제어하고 MRC 비디오 및 오디오 효과를 추가하여 가상 홀로그램 및 애플리케이션 오디오를 스틸 및 비디오에 포함시켜 이 작업을 수행할 수 있습니다.

DirectX(사용자 지정 MRC 레코더) 만들기에 대해 자세히 알아봅니다.

동시 MRC 제한 사항

여러 앱이 동시에 MRC에 액세스하는 경우 특정 제한 사항을 알고 있어야 합니다.

사진/비디오 카메라 액세스

HoloLens 1에서 MRC는 프로세스를 통해 비디오를 녹화하거나 사진을 찍는 동안 사진을 캡처하거나 비디오를 캡처하지 못합니다. 반대의 경우도 마찬가지입니다. MRC가 실행 중인 경우 애플리케이션이 카메라에 액세스하지 못합니다.

HoloLens 2 사용하면 카메라에 대한 액세스를 공유할 수 있습니다. 해상도 또는 프레임 속도를 직접 제어할 필요가 없는 경우 SharedReadOnly에서 SharedMode 속성을 사용하여 MediaCapture를 초기화할 수 있습니다.

기본 제공 MRC 사진/비디오 카메라 액세스

기본 제공 MRC 사진/비디오 카메라 액세스(DirectX)에 대해 알아봅니다.

개발자를 위한 MRC 액세스

MRC를 사용할 때는 항상 카메라에 대한 단독 제어를 요청하는 것이 좋습니다. 이렇게 하면 위에 나열된 제한 사항을 알고 있는 한 애플리케이션이 카메라 설정을 완전히 제어할 수 있습니다.

개발자를 위한 MRC 액세스(DirectX)에 대해 자세히 알아봅니다.

참조