개발자를 위한 혼합 현실 캡처(DirectX)

참고 항목

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

여기에서 시작하기 전에 혼합 현실 캡처 개요 문서를 살펴보는 것이 좋습니다.

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

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

PV 카메라에서 렌더링하면 기본 MRC 환경보다 다음과 같은 향상된 기능을 제공합니다.

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

PV 카메라에서 렌더링을 사용하도록 설정하는 세 가지 단계가 있습니다.

  1. PhotoVideoCamera HolographicViewConfiguration 사용
  2. 추가 HolographicCamera 렌더링 처리
  3. 이 추가 HolographicCamera에서 셰이더 및 코드가 올바르게 렌더링되는지 확인합니다.
DirectX에서 PhotoVideoCamera HolographicViewConfiguration 사용

PV 카메라에서 렌더링을 옵트인하기 위해 앱은 PhotoVideoCamera의 HolographicViewConfiguration을 사용하도록 설정합니다.

var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
    view.IsEnabled = true;
}
DirectX에서 추가 HolographicCamera 렌더링 처리

앱이 PV 카메라에서 렌더링하도록 옵트인하고 혼합 현실 캡처가 시작되는 경우:

  1. HolographicSpace의 CameraAdded 이벤트가 발생합니다. 현재 앱에서 카메라를 처리할 수 없는 경우 이 이벤트를 연기할 수 있습니다.
  2. 미해결 지연 없이 이벤트가 완료되면 HolographicCamera가 다음 HolographicFrame의 AddedCameras 목록에 표시됩니다.

혼합 현실 캡처가 중지되거나 혼합 현실 캡처가 실행되는 동안 앱이 보기 구성을 사용하지 않도록 설정하는 경우: HolographicCamera가 다음 HolographicFrame의 RemovedCameras 목록에 표시되고 HolographicSpace의 CameraRemoved 이벤트가 발생합니다.

카메라가 속한 구성을 식별할 수 있도록 ViewConfiguration 속성이 HolographicCamera에 추가되었습니다.

셰이더 및 코드가 추가 카메라를 지원하는지 확인

혼합 현실 캡처를 실행하고 비정상적인 맞춤, 누락된 콘텐츠 또는 성능 문제를 확인합니다. 셰이더 및 코드를 적절하게 업데이트합니다.

추가 카메라에 대한 렌더링을 지원할 수 없는 특정 장면이 있는 경우 PhotoVideoCamera의 HolographicViewConfiguration을 사용하지 않도록 설정할 수 있습니다.

앱에서 MRC를 사용하지 않도록 설정

2D 앱

2D 앱은 다음을 통해 혼합 현실 캡처를 실행할 때 시각적 콘텐츠를 가려지도록 선택할 수 있습니다.

몰입형 앱

몰입형 앱은 다음을 통해 혼합 현실 캡처에서 해당 시각적 콘텐츠를 제외하도록 선택할 수 있습니다.

  • 연결된 프레임에 대해 혼합 현실 캡처를 사용하지 않도록 HolographicCameraRenderingParameter의 IsContentProtectionEnabled 설정
  • 홀로그램Camera의 IsHardwareContentProtectionEnabled 를 설정하여 연결된 홀로그램 카메라에 대한 혼합 현실 캡처를 사용하지 않도록 설정

암호 키보드

Windows 10 2019년 5월 업데이트 사용하면 암호 또는 핀 키보드가 표시되면 시각적 콘텐츠가 혼합 현실 캡처에서 자동으로 제외됩니다.

MRC가 활성 상태인 경우 파악

AppCapture 클래스는 앱에서 시스템 혼합 현실 캡처가 실행되는 시기를 파악하는 데 사용할 수 있습니다(오디오 또는 비디오용).

참고 항목

디바이스에서 혼합 현실 캡처를 사용할 수 없는 경우 AppCapture의 GetForCurrentView API는 null을 반환할 수 있습니다. 앱이 일시 중단될 때 CapturingChanged 이벤트를 등록 해제하는 것도 중요합니다. 그렇지 않으면 MRC가 차단된 상태로 전환될 수 있습니다.

앱 내에서 MRC 기능 통합

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

기본 제공 카메라 UI가 있는 MRC

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

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

화면 캡처가 있는 MRC

HoloLens 2 2021년 5월 업데이트(Windows Holographic 버전 21H1 빌드 20346.1002)를 통해 개발자는 화면 캡처 API를 사용하여 혼합 현실 비디오 프레임 스트림을 요청할 수 있습니다.

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

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

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

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

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

애플리케이션에는 효과를 추가하는 두 가지 옵션이 있습니다.

참고 항목

Windows.Media.MixedRealityCapture 네임스페이스는 Visual Studio에서 인식되지 않지만 문자열은 여전히 유효합니다.

MRC 비디오 효과(Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)

속성 이름 Type 기본값 설명
StreamType UINT32(MediaStreamType) 1(VideoRecord) 이 효과가 사용되는 캡처 스트림을 설명합니다. 오디오를 사용할 수 없습니다.
HologramCompositionEnabled 부울 값 TRUE 비디오 캡처에서 홀로그램을 사용하거나 사용하지 않도록 설정하는 플래그입니다.
RecordingIndicatorEnabled 부울 값 TRUE 홀로그램 캡처 중에 화면에 기록 표시기를 사용하거나 사용하지 않도록 설정하는 플래그입니다.
VideoStabilizationEnabled 부울 값 FALSE HoloLens 추적기에서 제공하는 비디오 손떨림 보정을 사용하거나 사용하지 않도록 설정하는 플래그입니다.
VideoStabilizationBufferLength UINT32 0 비디오 안정화에 사용되는 기록 프레임 수를 설정합니다. 0은 0 대기 시간이며 전원 및 성능 관점에서 거의 "무료"입니다. 15는 최고 품질(대기 시간 및 메모리 15프레임의 비용)에 권장됩니다.
GlobalOpacityCoefficient float 0.9(HoloLens) 1.0(몰입형 헤드셋) 홀로그램의 전역 불투명도 계수를 0.0(완전 투명)에서 1.0(완전히 불투명)으로 설정합니다.
BlankOnProtectedContent 부울 값 FALSE 보호된 콘텐츠를 보여 주는 2d UWP 앱이 있는 경우 빈 프레임 반환을 사용하거나 사용하지 않도록 설정하는 플래그입니다. 이 플래그가 false이고 2d UWP 앱이 보호된 콘텐츠를 표시하는 경우 2d UWP 앱은 헤드셋과 혼합 현실 캡처 모두에서 보호된 콘텐츠 텍스처로 대체됩니다.
ShowHiddenMesh 부울 값 FALSE 홀로그램 카메라의 숨겨진 영역 메시 및 인접 콘텐츠를 표시하거나 사용하지 않도록 설정하는 플래그입니다.
OutputSize 크기 0, 0 비디오 안정화를 위해 자른 후 원하는 출력 크기를 설정합니다. 0 또는 잘못된 출력 크기를 지정하면 기본 자르기 크기가 선택됩니다.
OutputSubtype 문자열 Nv12 홀로그램 컴퍼지션 및/또는 비디오 안정화 후 원하는 출력 하위 형식을 설정합니다. Nv12Argb32 MediaEncodingSubtypes를 지원합니다.
PreferredHologramPerspective UINT32 Windows 디바이스 포털의 카메라 설정에서 렌더링 캡처해야 하는 홀로그램 카메라 보기 구성을 나타내는 데 사용되는 열거형: 0(표시)은 앱이 사진/비디오 카메라에서 렌더링하도록 요청되지 않음을 의미하며, 1(PhotoVideoCamera)은 앱에 사진/비디오 카메라에서 렌더링하도록 요청합니다(앱이 지원하는 경우). HoloLens 2에서만 지원됨

참고 항목

혼합 현실 캡처 페이지로 이동하고 카메라에서 렌더링을 선택 취소하여 Windows 장치 포털에서 PreferredHologramPerspective기본값을 변경할 수 있습니다. 설정은 기본적으로 1(PhotoVideoCamera)이지만 0으로 설정 하려면 선택 취소할 수 있습니다(표시).

PreferredHologramPerspective의 기본값은 2020년 6월 업데이트(Windows Holographic, 버전 2004 빌드 19041.1106 및 Windows Holographic 버전 1903 빌드 18362.1064) 이전의 0(디스플레이)이었습니다.

OutputSubtype에 대한 지원은 2021년 5월 업데이트(Windows Holographic 버전 21H1 빌드 20346.1002)와 함께 추가되었습니다.

MRC 오디오 효과(Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)

속성 이름 Type 기본값 설명
MixerMode UINT32 2(마이크 및 시스템 오디오) 사용해야 하는 오디오 원본을 나타내는 데 사용되는 열거형: 0(마이크 오디오만 해당), 1(시스템 오디오만 해당), 2(마이크 및 시스템 오디오)
LoopbackGain float Windows 장치 포털의 앱 오디오 게인 설정 시스템 오디오 볼륨에 적용할 게인입니다. 0.0에서 5.0까지의 범위입니다. HoloLens 2에서만 지원됨
MicrophoneGain float Windows 장치 포털의 마이크 오디오 게인 설정 마이크 볼륨에 적용할 게인입니다. 0.0에서 5.0까지의 범위입니다. HoloLens 2에서만 지원됨

참고 항목

Mixed Reality Capture 페이지로 이동하여 해당 설정 옆에 있는 슬라이더를 조정하여 Windows 디바이스 포털에서 LoopbackGain 또는 MicrophoneGain기본값을 변경할 수 있습니다. 두 설정 모두 기본적으로 1.0이지만 0.0에서 5.0 사이의 모든 값으로 설정할 수 있습니다.

Windows Device Portal을 사용하여 기본 게인 값을 구성하는 데 2020년 6월 업데이트(Windows Holographic, 버전 2004 빌드 19041.1106 및 Windows Holographic 버전 1903 빌드 18362.1064)가 추가되었습니다.

동시 MRC 제한 사항

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

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

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

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

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

Windows 10에 기본 제공되는 MRC 기능(Cortana, 시작 메뉴, 하드웨어 바로 가기, Miracast, Windows 장치 포털을 통해):

  • 기본적으로 ExclusiveControl로 실행됩니다.

그러나 공유 모드에서 작동하도록 MRC 하위 시스템에 지원이 추가되었습니다.

  • 앱이 사진/비디오 카메라에 대한 ExclusiveControl 액세스를 요청하는 경우 기본 제공 MRC는 사진/비디오 카메라 사용을 자동으로 중지하므로 앱의 요청이 성공합니다.
  • 앱에 ExclusiveControl이 있는 동안 기본 제공 MRC가 시작되면 기본 제공 MRC가 SharedReadOnly 모드에서 실행됩니다.

이 공유 모드 기능에는 다음과 같은 특정 제한 사항이 있습니다.

  • Cortana, 하드웨어 바로 가기 또는 시작 메뉴를 통한 사진: Windows 10 2018년 4월 업데이트(이상) 필요
  • Cortana, 하드웨어 바로 가기 또는 시작 메뉴를 통한 비디오: Windows 10 2018년 4월 업데이트(이상) 필요
  • Miracast를 통해 MRC 스트리밍: Windows 10 2018년 10월 업데이트(이상) 필요
  • Windows 디바이스 포털을 통해 또는 HoloLens 도우미 앱을 통해 MRC 스트리밍: HoloLens 2 필요

참고 항목

다른 앱이 사진/비디오 카메라를 사용하는 경우 기본 제공 MRC 카메라 UI의 해상도와 프레임 속도가 일반 값에서 감소될 수 있습니다.

개발자를 위한 MRC 액세스

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

주의

계속하기 전에 SharingMode 발언을 주의 깊게 읽어야 합니다 .

  • 원하는 방식으로 카메라 설정
  • 앱을 시작하고, 시작 API를 사용하여 비디오 프레임을 캡처한 다음, MRC를 사용하도록 설정합니다.

주의

앱을 시작하기 전에 MRC를 시작하는 경우 기능이 예상대로 작동할 것이라고 보장할 수 없습니다.

홀로그램 얼굴 추적 샘플에서 위의 프로세스의 전체 샘플을 찾을 수 있습니다.

참고 항목

Windows 10 2018년 4월 업데이트 이전에는 앱의 사용자 지정 MRC 레코더가 시스템 MRC(사진 캡처, 비디오 캡처 또는 Windows 장치 포털에서 스트리밍)와 함께 사용할 수 없습니다.

참고 항목