Udostępnij za pośrednictwem


Przechwytywanie rzeczywistości mieszanej dla deweloperów (DirectX)

Uwaga

Zobacz Renderowanie z kamery PV poniżej, aby uzyskać wskazówki dotyczące nowej funkcji MRC dla urządzenia HoloLens 2.

Przed rozpoczęciem pracy w tym miejscu zalecamy zapoznanie się z artykułem omówieniem przechwytywania rzeczywistości mieszanej.

Renderowanie z kamery PV (zgoda)

Urządzenie HoloLens 2 dodaje możliwość renderowania aplikacji immersyjnej z kamery PV podczas uruchamiania przechwytywania rzeczywistości mieszanej. Aby upewnić się, że aplikacja obsługuje dodatkowe renderowanie poprawnie, aplikacja musi wyrazić zgodę na tę funkcję.

Renderowanie z kamery PV oferuje następujące ulepszenia w domyślnym środowisku MRC:

  • Wyrównanie hologramu do środowiska fizycznego i rąk w pobliżu interakcji powinno być dokładne na wszystkich odległościach. Unikaj przesunięcia w odległościach innych niż punkt koncentracji uwagi, jak można zobaczyć w domyślnym mrC.
  • Prawe oko w zestawie słuchawkowym nie zostanie naruszone, ponieważ nie będzie używane do renderowania hologramów dla danych wyjściowych MRC.

Istnieją trzy kroki umożliwiające renderowanie z kamery PV:

  1. Włączanie konfiguracji PhotoVideoCamera HolographicViewConfiguration
  2. Obsługa dodatkowego renderowania HolographicCamera
  3. Sprawdź, czy cieniowania i kod są poprawnie renderowane z tej dodatkowej aplikacji HolographicCamera
Włączanie konfiguracji PhotoVideoCamera HolographicViewConfiguration w programie DirectX

Aby wyrazić zgodę na renderowanie z kamery PV, aplikacja po prostu włącza HolographicViewConfiguration PhotoVideoCamera:

var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
    view.IsEnabled = true;
}
Obsługa dodatkowego renderowania HolographicCamera w programie DirectX

Gdy aplikacja ma zgodę na renderowanie z kamery PV i przechwytywania rzeczywistości mieszanej rozpoczyna się:

  1. Zdarzenie CameraAdded holographicSpace zostanie wyzwolone. To zdarzenie można odroczyć, jeśli aplikacja nie może w tej chwili obsłużyć aparatu.
  2. Po zakończeniu wydarzenia bez wybitnych odroczenia holographicCamera pojawi się na następnej liście AddedCameras holographicFrame.

Gdy przechwytywanie rzeczywistości mieszanej zostanie zatrzymane (lub jeśli aplikacja wyłączy konfigurację widoku podczas przechwytywania rzeczywistości mieszanej): holographicCamera pojawi się na następnej liście HolographicFrame RemovedCameras, a zdarzenie CameraRemoved HolographicSpace zostanie wyzwolone.

Właściwość ViewConfiguration została dodana do platformy HolographicCamera, aby ułatwić identyfikację konfiguracji, do którego należy aparat.

Weryfikowanie cieniowania i obsługi kodu dodatkowych kamer

Uruchom przechwytywanie rzeczywistości mieszanej i sprawdź, czy nietypowe wyrównanie, brak zawartości lub problemy z wydajnością. Zaktualizuj cieniowania i kod zgodnie z potrzebami.

Jeśli istnieją pewne sceny, które nie mogą obsługiwać renderowania do dodatkowej kamery, możesz wyłączyć HolographicViewConfiguration photoVideoCamera.

Wyłączanie funkcji MRC w aplikacji

Aplikacja 2D

Aplikacje 2D mogą zdecydować, że ich zawartość wizualna jest zaciemniana, gdy przechwytywanie rzeczywistości mieszanej jest uruchamiane przez:

Aplikacja immersywna

Aplikacje immersyjne mogą zdecydować, że ich zawartość wizualna jest wykluczona z przechwytywania rzeczywistości mieszanej przez:

  • Ustawianie wartości IsContentProtectionEnabled elementu HolographicCameraRenderingParameter w celu wyłączenia przechwytywania rzeczywistości mieszanej dla skojarzonej ramki
  • Ustawianie holographicCamera IsHardwareContentProtectionEnabled, aby wyłączyć przechwytywanie rzeczywistości mieszanej dla skojarzonej kamery holograficznej

Klawiatura haseł

W przypadku Aktualizacja systemu Windows 10 z maja 2019 zawartość wizualna jest automatycznie wykluczana z przechwytywania rzeczywistości mieszanej, gdy jest widoczna klawiatura hasła lub pinezki.

Wiedza, kiedy funkcja MRC jest aktywna

Klasa AppCapture może być używana przez aplikację, aby wiedzieć, kiedy jest uruchomiona funkcja przechwytywania rzeczywistości mieszanej systemu (w przypadku audio lub wideo).

Uwaga

Interfejs API GetForCurrentView aplikacji AppCapture może zwrócić wartość null, jeśli przechwytywanie rzeczywistości mieszanej nie jest dostępne na urządzeniu. Ważne jest również, aby anulować rejestrowanie zdarzenia PrzechwytywanieChanged po zawieszeniu aplikacji, w przeciwnym razie usługa MRC może przejść do stanu zablokowanego.

Integrowanie funkcji MRC z poziomu aplikacji

Aplikacja rzeczywistości mieszanej może uruchomić przechwytywanie zdjęć MRC lub wideo z poziomu aplikacji, a przechwycona zawartość jest udostępniana aplikacji bez przechowywania w urządzeniu "Roll aparatu". Możesz utworzyć niestandardowy rejestrator MRC lub skorzystać z wbudowanego interfejsu użytkownika przechwytywania aparatu.

Funkcja MRC z wbudowanym interfejsem użytkownika aparatu

Deweloperzy mogą używać interfejsu API przechwytywania aparatu, aby uzyskać przechwycone przez użytkownika zdjęcie rzeczywistości mieszanej lub wideo z zaledwie kilkoma wierszami kodu.

Ten interfejs API uruchamia wbudowany interfejs użytkownika aparatu MRC, w którym użytkownicy mogą robić zdjęcie lub wideo i zwraca wynikowe przechwytywanie do aplikacji. Możesz utworzyć niestandardowy rejestrator przechwytywania rzeczywistości mieszanej, jeśli musisz dodać własny interfejs użytkownika aparatu lub dostęp niższego poziomu do przechwytywania strumieni.

MrC z przechwytywaniem ekranu

Dzięki aktualizacji urządzenia HoloLens 2 maja 2021 r. (Windows Holographic, wersja 21H1 kompilacja 20346.1002), deweloperzy mogą zażądać strumienia klatek wideo rzeczywistości mieszanej za pomocą interfejsu API przechwytywania ekranu.

Tworzenie niestandardowego rejestratora MRC

Chociaż użytkownik może zawsze wyzwalać zdjęcie lub wideo przy użyciu systemowej usługi przechwytywania MRC, aplikacja może chcieć utworzyć niestandardową aplikację aparatu, która zawiera hologramy w strumieniu aparatu, podobnie jak MRC. Dzięki temu aplikacja może rozpocząć przechwytywanie danych wejściowych użytkownika, utworzyć niestandardowy interfejs użytkownika rejestrowania lub dostosować ustawienia mrC, aby wymienić kilka przykładów.

HoloStudio dodaje niestandardową kamerę MRC przy użyciu efektów MRC

HoloStudio dodaje niestandardową kamerę MRC przy użyciu efektów MRC

Inne aplikacje mogą to zrobić za pomocą interfejsów API przechwytywania w systemie Windows Media w celu kontrolowania aparatu i dodawania efektu MRC Video and Audio w celu uwzględnienia wirtualnych hologramów i dźwięku aplikacji w filmach i filmach wideo.

Aplikacje mają dwie opcje dodawania efektu:

Uwaga

Przestrzeń nazw Windows.Media.MixedRealityCapture nie zostanie rozpoznana przez program Visual Studio, ale ciągi są nadal prawidłowe.

Efekt wideo MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)

Nazwa właściwości Typ Wartość domyślna opis
StreamType UINT32 (MediaStreamType) 1 (WideoRekord) Opisz strumień przechwytywania, dla którego jest używany ten efekt. Dźwięk nie jest dostępny.
HologramCompositionEnabled boolean PRAWDA Flaga umożliwiająca włączanie lub wyłączanie hologramów w przechwytywaniu wideo.
RecordingIndicatorEnabled boolean PRAWDA Flaga włączania lub wyłączania wskaźnika nagrywania na ekranie podczas przechwytywania hologramu.
VideoStabilizationEnabled boolean FAŁSZ Flaga włączania lub wyłączania stabilizacji wideo obsługiwanej przez monitor HoloLens.
VideoStabilizationBufferLength UINT32 0 Ustaw liczbę ramek historycznych używanych do stabilizacji wideo. Wartość 0 to opóźnienie 0 i prawie "wolne" z perspektywy zasilania i wydajności. 15 jest zalecane w przypadku najwyższej jakości (kosztem 15 ramek opóźnienia i pamięci).
GlobalOpacityCoefficient liczba zmiennoprzecinkowa 0.9 (HoloLens) 1.0 (immersywny zestaw słuchawkowy) Ustaw globalny współczynnik nieprzezroczystości hologramu w zakresie od 0,0 (w pełni przezroczysty) do 1,0 (w pełni nieprzezroczyste).
BlankOnProtectedContent boolean FAŁSZ Flaga włączania lub wyłączania zwracania pustej ramki, jeśli istnieje aplikacja platformy UNIWERSALNEJ systemu Windows z zawartością chronioną. Jeśli ta flaga jest fałszywa, a aplikacja platformy UWP 2d wyświetla chronioną zawartość, aplikacja platformy UWP 2d zostanie zastąpiona przez chronioną teksturę zawartości zarówno w zestawie słuchawkowym, jak i w przechwytywaniu rzeczywistości mieszanej.
ShowHiddenMesh boolean FAŁSZ Flaga umożliwiająca włączenie lub wyłączenie wyświetlania ukrytej siatki obszaru aparatu holograficznego i sąsiedniej zawartości.
OutputSize Rozmiar 0, 0 Ustaw żądany rozmiar danych wyjściowych po przycinaniu na potrzeby stabilizacji wideo. Domyślny rozmiar przycinania jest wybierany, jeśli określono 0 lub nieprawidłowy rozmiar danych wyjściowych.
OutputSubtype String Nv12 Ustaw żądany podtyp danych wyjściowych po utworzeniu hologramu i/lub stabilizacji wideo. Obsługuje typy Nv12 i Argb32 MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Renderowanie z aparatu w portalu urządzeń z systemem Windows Wyliczenie używane do wskazania, która konfiguracja widoku aparatu holograficznego powinna zostać przechwycona: 0 (Wyświetlanie) oznacza, że aplikacja nie zostanie poproszona o renderowanie z aparatu fotograficznego/wideo, 1 (PhotoVideoCamera) poprosi aplikację o renderowanie z aparatu fotograficznego/wideo (jeśli aplikacja ją obsługuje). Obsługiwane tylko na urządzeniu HoloLens 2

Uwaga

Możesz zmienić wartość domyślną preferredHologramPerspective w portalu urządzeń z systemem Windows, przechodząc do strony Przechwytywanie rzeczywistości mieszanej i usuwając zaznaczenie opcji Renderowanie z aparatu. Ustawienie jest domyślnie ustawione na 1 (PhotoVideoCamera), ale można je usunąć, aby ustawić wartość 0 (Display).

Wartość domyślna preferredHologramPerspective to 0 (Display) przed aktualizacją z czerwca 2020 r. (Windows Holographic, wersja 2004 build 19041.1106 i Windows Holographic, wersja 1903, kompilacja 18362.1064).

Dodano obsługę parametru OutputSubtype z aktualizacją z maja 2021 r. (Windows Holographic, wersja 21H1 kompilacja 20346.1002).

Efekt audio MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)

Nazwa właściwości Typ Wartość domyślna opis
MikserMode UINT32 2 (Mikrofon i dźwięk systemowy) Wyliczenie używane do wskazania, które źródła audio powinny być używane: 0 (tylko dźwięk mikrofonowy), 1 (tylko dźwięk systemowy), 2 (mikrofon i dźwięk systemowy)
Pętla zwrotnaGain liczba zmiennoprzecinkowa Ustawienie Zysk dźwięku aplikacji w portalu urządzeń z systemem Windows Zysk do zastosowania do dźwięku systemowego. Zakresy od 0,0 do 5,0. Obsługiwane tylko na urządzeniu HoloLens 2
MikrofonGain liczba zmiennoprzecinkowa Ustawienie Zysk dźwięku mikrofonu w portalu urządzeń z systemem Windows Zysk do zastosowania do głośności mikrofonu. Zakresy od 0,0 do 5,0. Obsługiwane tylko na urządzeniu HoloLens 2

Uwaga

Możesz zmienić wartość domyślną loopbackGain lub MicrophoneGain w portalu urządzeń z systemem Windows, przechodząc do strony przechwytywania rzeczywistości mieszanej i dostosowując suwak obok odpowiednich ustawień. Oba ustawienia są domyślnie ustawione na 1.0, ale można ustawić dowolną wartość z zakresu od 0,0 do 5,0.

Za pomocą portalu urządzeń z systemem Windows do skonfigurowania domyślnych wartości zysków dodano z aktualizacją z czerwca 2020 r. (Windows Holographic, wersja 2004 build 19041.1106 i Windows Holographic, wersja 1903 kompilacji 18362.1064).

Jednoczesne ograniczenia usługi MRC

Należy pamiętać o pewnych ograniczeniach, gdy wiele aplikacji uzyskuje dostęp do usługi MRC w tym samym czasie.

Dostęp do aparatu fotograficznego/wideo

Na urządzeniu HoloLens 1 funkcja MRC nie może przechwycić zdjęcia ani przechwycić wideo, podczas gdy proces nagrywa wideo lub robi zdjęcie. Odwrotnie jest również prawdziwe: jeśli funkcja MRC jest uruchomiona, aplikacja nie będzie mogła uzyskać dostępu do aparatu.

Dzięki urządzeniu HoloLens 2 możesz udostępnić dostęp do aparatu. Jeśli nie potrzebujesz bezpośredniej kontroli nad rozdzielczością lub szybkością klatek, możesz zainicjować metodę MediaCapture przy użyciu właściwości SharedMode z elementem SharedReadOnly.

Wbudowany dostęp do zdjęć MRC i kamery wideo

Funkcje MRC wbudowane w system Windows 10 (za pośrednictwem Cortany, Menu Start, skrótów sprzętowych, Miracast, Portal urządzeń z systemem Windows):

  • Domyślnie będzie działać z funkcją ExclusiveControl

Obsługa została jednak dodana do podsystemu MRC w celu działania w trybie współużytkowym:

  • Jeśli aplikacja żąda dostępu ExclusiveControl do aparatu fotograficznego/wideo, wbudowana funkcja MRC automatycznie przestanie używać aparatu fotograficznego/wideo, aby żądanie aplikacji powiodło się
  • Jeśli wbudowana funkcja MRC jest uruchamiana, gdy aplikacja ma funkcję ExclusiveControl, wbudowana funkcja MRC będzie działać w trybie SharedReadOnly

Ta funkcja trybu udostępnionego ma pewne ograniczenia:

  • Zdjęcie za pośrednictwem Cortany, skrótów sprzętowych lub menu Start: wymaga aktualizacji systemu Windows 10 z kwietnia 2018 r. (lub nowszej)
  • Wideo za pośrednictwem Cortany, skrótów sprzętowych lub menu Start: wymaga aktualizacji systemu Windows 10 z kwietnia 2018 r. (lub nowszej)
  • Przesyłanie strumieniowe mrC przez Miracast: wymaga Aktualizacja systemu Windows 10 z października 2018 (lub nowszej)
  • Przesyłanie strumieniowe mrC za pośrednictwem portalu urządzeń z systemem Windows lub za pośrednictwem aplikacji towarzyszącej Urządzenia HoloLens: wymaga urządzenia HoloLens 2

Uwaga

Rozdzielczość i szybkość klatek wbudowanego interfejsu użytkownika aparatu MRC może zostać zmniejszona z normalnych wartości, gdy inna aplikacja korzysta z aparatu fotograficznego/wideo.

Dostęp MRC dla deweloperów

Zalecamy, aby w przypadku korzystania z funkcji MRC zawsze żądać kontroli wyłącznych dla aparatu. Dzięki temu aplikacja ma pełną kontrolę nad ustawieniami aparatu, o ile wiesz o ograniczeniach wymienionych powyżej.

Uwaga

Przed kontynuowaniem uważnie przeczytaj uwagi SharingMode.

  • Konfigurowanie aparatu w żądany sposób
  • Uruchom aplikację, przechwyć ramki wideo przy użyciu interfejsu API uruchamiania, a następnie włącz funkcję MRC

Uwaga

Jeśli uruchomisz usługę MRC przed uruchomieniem aplikacji, nie możemy zagwarantować, że funkcja będzie działać zgodnie z oczekiwaniami.

Pełny przykład powyższego procesu można znaleźć w przykładzie holograficznego śledzenia twarzy.

Uwaga

Przed aktualizacją systemu Windows 10 z kwietnia 2018 r. niestandardowy rejestrator MRC aplikacji wzajemnie wykluczał się z systemowym mrC (przechwytywanie zdjęć, przechwytywanie filmów wideo lub przesyłanie strumieniowe z portalu urządzeń z systemem Windows).

Zobacz też