참고
HoloLens 2 대한 새로운 MRC 기능에 대한 지침은 아래 PV 카메라에서 렌더링을 참조하세요.
여기에서 시작하기 전에 혼합 현실 캡처 개요 문서를 살펴보는 것이 좋습니다.
PV 카메라에서 렌더링(옵트인)
HoloLens 2 혼합 현실 캡처가 실행되는 동안 몰입형 앱이 PV 카메라에서 렌더링할 수 있는 기능을 추가합니다. 앱이 추가 렌더링을 올바르게 지원하도록 하려면 앱이 이 기능을 옵트인해야 합니다.
PV 카메라에서 렌더링하면 기본 MRC 환경보다 다음과 같은 개선 사항이 제공됩니다.
- 가까운 상호 작용을 위해 물리적 환경과 손에 홀로그램 맞춤은 모든 거리에서 정확해야 합니다. 기본 MRC에서 볼 수 있듯이 포커스 지점 이외의 거리에서 오프셋을 사용하지 않도록 합니다.
- 헤드셋의 오른쪽 눈은 MRC 출력에 대한 홀로그램을 렌더링하는 데 사용되지 않으므로 손상되지 않습니다.
PV 카메라에서 렌더링을 사용하도록 설정하는 세 가지 단계가 있습니다.
- PhotoVideoCamera HolographicViewConfiguration 사용
- 추가 HolographicCamera 렌더링 처리
- 이 추가 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 카메라에서 렌더링하도록 옵트인하고 혼합 현실 캡처가 시작되는 경우:
- HolographicSpace의 CameraAdded 이벤트가 발생합니다. 이 이벤트는 앱이 현재 카메라를 처리할 수 없는 경우 지연될 수 있습니다.
- 이벤트가 미해결 지연 없이 완료되면 HolographicCamera가 다음 홀로그램 프레임의 AddedCameras 목록에 표시됩니다.
혼합 현실 캡처가 중지되거나 혼합 현실 캡처가 실행되는 동안 앱이 보기 구성을 사용하지 않도록 설정하는 경우: HolographicCamera가 다음 홀로그램 프레임의 RemovedCameras 목록에 표시되고 HolographicSpace의 CameraRemoved 이벤트가 발생합니다.
카메라가 속한 구성을 식별할 수 있도록 ViewConfiguration 속성이 HolographicCamera에 추가되었습니다.
셰이더 및 코드가 추가 카메라를 지원하는지 확인
비정상적인 맞춤, 누락된 콘텐츠 또는 성능 문제에 대한 혼합 현실 캡처 및 검사 실행합니다. 셰이더 및 코드를 적절하게 업데이트합니다.
추가 카메라에 대한 렌더링을 지원할 수 없는 특정 장면이 있는 경우 PhotoVideoCamera의 HolographicViewConfiguration을 사용하지 않도록 설정할 수 있습니다.
앱에서 MRC 비활성화
2D 앱
2D 앱은 다음을 통해 혼합 현실 캡처를 실행할 때 시각적 콘텐츠를 가려지도록 선택할 수 있습니다.
- DXGI_PRESENT_RESTRICT_TO_OUTPUT 플래그와 함께 표시
- DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED 플래그를 사용하여 앱의 스왑 체인 만들기
- Windows 10 2019년 5월 업데이트 사용하여 ApplicationView의 IsScreenCaptureEnabled를 설정합니다.
몰입형 앱
몰입형 앱은 다음을 통해 혼합 현실 캡처에서 시각적 콘텐츠를 제외하도록 선택할 수 있습니다.
- HolographicCameraRenderingParameter의 IsContentProtectionEnabled 를 설정하여 연결된 프레임에 대해 혼합 현실 캡처를 사용하지 않도록 설정
- HolographicCamera의 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 캡처 레코더를 만들 수 있습니다.
화면 캡처가 있는 MRC
HoloLens 2 2021년 5월 업데이트(Windows Holographic 버전 21H1 빌드 20346.1002)를 사용하면 개발자는 화면 캡처 API를 사용하여 혼합 현실 비디오 프레임 스트림을 요청할 수 있습니다.
사용자 지정 MRC 레코더 만들기
사용자는 항상 시스템 MRC 캡처 서비스를 사용하여 사진 또는 비디오를 트리거할 수 있지만 애플리케이션은 MRC와 마찬가지로 카메라 스트림에 홀로그램을 포함하는 사용자 지정 카메라 앱을 빌드할 수 있습니다. 이렇게 하면 애플리케이션이 사용자 입력에서 캡처를 시작하거나, 사용자 지정 기록 UI를 빌드하거나, MRC 설정을 사용자 지정하여 몇 가지 예제의 이름을 지정할 수 있습니다.
HoloStudio는 MRC 효과를 사용하여 사용자 지정 MRC 카메라를 추가합니다.
다른 애플리케이션은 Windows 미디어 캡처 API 를 사용하여 카메라를 제어하고 MRC 비디오 및 오디오 효과를 추가하여 가상 홀로그램 및 애플리케이션 오디오를 스틸 및 비디오에 포함시켜 이 작업을 수행할 수 있습니다.
애플리케이션에는 효과를 추가하는 두 가지 옵션이 있습니다.
- 이전 API: Windows.Media.Capture.MediaCapture.AddEffectAsync()
- 새 Microsoft 권장 API(개체를 반환하여 동적 속성 조작 가능): Windows.Media.Capture.MediaCapture.AddVideoEffectAsync() / Windows.Media.Capture.MediaCapture.AddAudioEffectAsync() 는 앱이 IVideoEffectDefinition 및 IAudioEffectDefinition의 자체 구현을 만들어야 합니다. 예제는 MRC 샘플 앱을 참조하세요.
참고
Windows.Media.MixedRealityCapture 네임스페이스는 Visual Studio에서 인식되지 않지만 문자열은 여전히 유효합니다.
MRC 비디오 효과(Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)
| 속성 이름 | 유형 | 기본값 | 설명 |
|---|---|---|---|
| StreamType | UINT32(MediaStreamType) | 1(VideoRecord) | 이 효과가 사용되는 캡처 스트림을 설명합니다. 오디오를 사용할 수 없습니다. |
| HologramCompositionEnabled | 부울 | TRUE | 비디오 캡처에서 홀로그램을 사용하거나 사용하지 않도록 설정하는 플래그입니다. |
| RecordingIndicatorEnabled | 부울 | TRUE | 홀로그램 캡처 중에 화면에 기록 표시기를 사용하거나 사용하지 않도록 설정하는 플래그입니다. |
| VideoStabilizationEnabled | 부울 | FALSE | HoloLens 추적기에서 제공하는 비디오 손떨림 보정을 사용하거나 사용하지 않도록 설정하는 플래그입니다. |
| VideoStabilizationBufferLength | UINT32 | 0 | 비디오 손떨림 보정에 사용되는 기록 프레임 수를 설정합니다. 0은 0 대기 시간이며 전원 및 성능 관점에서 거의 "무료"입니다. 15는 최고 품질(대기 시간 및 메모리 15프레임의 비용)에 권장됩니다. |
| GlobalOpacityCoefficient | 뜨다 | 0.9(HoloLens) 1.0(몰입형 헤드셋) | 홀로그램의 전역 불투명도 계수를 0.0(완전 투명)에서 1.0(완전히 불투명)으로 설정합니다. |
| BlankOnProtectedContent | 부울 | FALSE | 보호된 콘텐츠를 보여 주는 2d UWP 앱이 있는 경우 빈 프레임 반환을 사용하거나 사용하지 않도록 설정하는 플래그입니다. 이 플래그가 false이고 2d UWP 앱이 보호된 콘텐츠를 표시하는 경우 2d UWP 앱은 헤드셋과 혼합 현실 캡처 모두에서 보호된 콘텐츠 텍스처로 대체됩니다. |
| ShowHiddenMesh | 부울 | FALSE | 홀로그램 카메라의 숨겨진 영역 메시 및 인접 콘텐츠를 표시하거나 사용하지 않도록 설정하는 플래그입니다. |
| OutputSize | Size | 0, 0 | 비디오 손떨림 보정을 위해 자른 후 원하는 출력 크기를 설정합니다. 0 또는 잘못된 출력 크기를 지정하면 기본 자르기 크기가 선택됩니다. |
| OutputSubtype | String | Nv12 | 홀로그램 컴퍼지션 및/또는 비디오 안정화 후 원하는 출력 하위 형식을 설정합니다. Nv12 및 Argb32MediaEncodingSubtypes를 지원합니다. |
| PreferredHologramPerspective | UINT32 | Windows 디바이스 포털의 카메라에서 렌더링 설정 | 캡처해야 하는 홀로그램 카메라 뷰 구성을 나타내는 데 사용되는 열거형: 0(표시)은 앱이 사진/비디오 카메라에서 렌더링하도록 요청되지 않음을 의미하며, 1(PhotoVideoCamera)은 앱에서 사진/비디오 카메라에서 렌더링하도록 요청합니다(앱이 지원하는 경우). HoloLens 2만 지원됩니다. |
참고
Mixed Reality 캡처 페이지로 이동하고 카메라에서 렌더링을 선택 취소하여 Windows 디바이스 포털에서 PreferredHologramPerspective의 기본값을 변경할 수 있습니다. 설정은 기본적으로 1(PhotoVideoCamera)이지만 0(표시)으로 설정하려면 선택 취소할 수 있습니다.
PreferredHologramPerspective의 기본값은 2020년 6월 업데이트 이전에 0(디스플레이)이었습니다(Windows Holographic, 버전 2004 빌드 19041.1106 및 Windows Holographic 버전 1903 빌드 18362.1064).
OutputSubtype에 대한 지원이 2021년 5월 업데이트(Windows Holographic, 버전 21H1 빌드 20346.1002)와 함께 추가되었습니다.
MRC 오디오 효과(Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)
| 속성 이름 | 유형 | 기본값 | 설명 |
|---|---|---|---|
| MixerMode | UINT32 | 2(마이크 및 시스템 오디오) | 사용해야 하는 오디오 원본을 나타내는 데 사용되는 열거형: 0(마이크 오디오만 해당), 1(시스템 오디오만 해당), 2(마이크 및 시스템 오디오) |
| LoopbackGain | 뜨다 | Windows 디바이스 포털의 앱 오디오 게인 설정 | 시스템 오디오 볼륨에 적용할 게인입니다. 0.0에서 5.0까지의 범위입니다. HoloLens 2만 지원됩니다. |
| MicrophoneGain | 뜨다 | Windows 디바이스 포털의 마이크 오디오 게인 설정 | 마이크 볼륨에 적용할 게인입니다. 0.0에서 5.0까지의 범위입니다. HoloLens 2만 지원됩니다. |
참고
Mixed Reality 캡처 페이지로 이동하여 해당 설정 옆에 있는 슬라이더를 조정하여 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 속성을 배타로 설정
주의
계속하기 전에 SharingMode 설명을 주의 깊게 읽어야 합니다.
- 원하는 방식으로 카메라 설정
- 앱을 시작하고 시작 API를 사용하여 비디오 프레임을 캡처한 다음 MRC를 사용하도록 설정합니다.
주의
앱을 시작하기 전에 MRC를 시작하는 경우 기능이 예상대로 작동할 것이라고 보장할 수 없습니다.
홀로그램 얼굴 추적 샘플에서 위의 프로세스의 전체 샘플을 찾을 수 있습니다.
참고
2018년 4월 업데이트가 Windows 10 전에 앱의 사용자 지정 MRC 레코더는 시스템 MRC(사진 캡처, 비디오 캡처 또는 Windows 디바이스 포털에서 스트리밍)와 상호 배타적이었습니다.