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 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)

HoloLens 2 dodaje możliwość renderowania aplikacji immersyjnej z kamery PV podczas uruchamiania przechwytywania rzeczywistości mieszanej. Aby zapewnić prawidłowe renderowanie aplikacji, aplikacja musi wyrazić zgodę na korzystanie z tej funkcji.

Renderowanie z kamery PV oferuje następujące ulepszenia domyślnego środowiska MRC:

  • Wyrównanie hologramu do środowiska fizycznego i rąk do niemal 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 elementu PhotoVideoCamera HolographicViewConfiguration
  2. Obsługa dodatkowego renderowania HolographicCamera
  3. Sprawdź, czy cieniowania i kod są poprawnie renderowane z tego dodatkowego narzędzia HolographicCamera
Włączanie polecenia PhotoVideoCamera HolographicViewConfiguration w programie DirectX

Aby wyrazić zgodę na renderowanie z kamery PV, aplikacja po prostu umożliwia 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 wyrazi zgodę na renderowanie z kamery PV i przechwytywanie rzeczywistości mieszanej rozpoczyna się:

  1. Zdarzenie CameraAdded w 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 zaległych 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 uruchomione.

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

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ć funkcję HolographicViewConfiguration w aplikacji PhotoVideoCamera.

Wyłączanie usługi 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ą wybrać, czy ich zawartość wizualna jest wykluczona z przechwytywania rzeczywistości mieszanej przez:

  • Ustawianie elementu IsContentProtectionEnabled elementu HolographicCameraRenderingParameter w celu wyłączenia przechwytywania rzeczywistości mieszanej dla skojarzonej ramki
  • Ustawianie elementu IsHardwareContentProtectionEnabled holographicCamera w celu wyłączenia przechwytywania rzeczywistości mieszanej dla skojarzonej kamery holograficznej

Klawiatura haseł

Dzięki 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 o tym, kiedy usługa MRC jest aktywna

Klasa AppCapture może być używana przez aplikację, aby wiedzieć, kiedy jest uruchomione przechwytywanie rzeczywistości mieszanej systemu (w przypadku dźwięku 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 CapturingChanged po zawieszeniu aplikacji, w przeciwnym razie mrC może dostać się do stanu zablokowanego.

Integrowanie funkcji MRC z poziomu aplikacji

Aplikacja rzeczywistości mieszanej może uruchomić zdjęcie MRC lub przechwytywanie 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 kamer.

MrC z wbudowanym interfejsem użytkownika aparatu

Deweloperzy mogą używać interfejsu API interfejsu użytkownika 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 wynikową przechwytywanie aplikacji. Możesz utworzyć niestandardowy rejestrator Mixed Reality Capture, 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 HoloLens 2 maja 2021 r. (Windows Holographic, wersja 21H1 kompilacja 20346.1002), deweloperzy mogą zażądać strumienia ramek wideo rzeczywistości mieszanej za pomocą interfejsu API przechwytywania ekranu.

Tworzenie niestandardowego rejestratora MRC

Chociaż użytkownik zawsze może wyzwolić 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 tak samo 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 adds a custom MRC camera using MRC effects

Inne aplikacje mogą to zrobić za pomocą interfejsów API Windows Media Capture 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

Windows. Przestrzeń nazw Media.MixedRealityCapture nie zostanie rozpoznana przez 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 (VideoRecord) Opisz strumień przechwytywania, dla którego jest używany ten efekt. Dźwięk nie jest dostępny.
HologramCompositionEnabled boolean TRUE Flaga umożliwiająca włączanie lub wyłączanie hologramów w przechwytywaniu wideo.
RecordingIndicatorEnabled boolean TRUE Flaga włączania lub wyłączania wskaźnika nagrywania na ekranie podczas przechwytywania hologramu.
VideoStabilizationEnabled boolean FALSE 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. 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 float 0.9 (HoloLens) 1.0 (immersyjny 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 nieprzezroczysty).
BlankOnProtectedContent boolean FALSE Flaga umożliwiająca włączenie lub wyłączenie zwracania pustej ramki, jeśli istnieje aplikacja platformy UWP z chronioną zawartością. 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 FALSE Flaga umożliwiająca włączenie lub wyłączenie wyświetlania ukrytej siatki obszaru kamery holograficznej 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 wartość 0 lub nieprawidłowy rozmiar danych wyjściowych.
OutputSubtype Ciąg Nv12 Ustaw żądany podtyp danych wyjściowych po utworzeniu hologramu i/lub stabilizacji wideo. Obsługuje typy Nv12 i Argb32MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Renderowanie z ustawień aparatu w Windows Device Portal Wyliczenie używane do wskazania, która konfiguracja widoku kamery holograficznej powinna zostać przechwycona: 0 (Wyświetlacz) 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 w HoloLens 2

Uwaga

Możesz zmienić wartość domyślną elementu PreferredHologramPerspective w witrynie Windows Device Portal, przechodząc do strony Mixed Reality Przechwytywanie i usuwając zaznaczenie pola 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 wynosiła 0 (Display) przed aktualizacją z czerwca 2020 r. (Windows Holographic w wersji 2004 kompilacji 19041.1106 i Windows Holographic w wersji 1903 kompilacji 18362.1064).

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

Efekt dźwięku 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 float Ustawienie Uzyskiwanie dźwięku aplikacji w portalu urządzeń Windows Zysk, aby zastosować do dźwięku systemowego. Zakresy od 0,0 do 5,0. Obsługiwane tylko w HoloLens 2
MikrofonGain float Ustawienie Uzyskiwanie dźwięku mikrofonu w portalu urządzeń Windows Zysk, aby zastosować do głośności mikrofonu. Zakresy od 0,0 do 5,0. Obsługiwane tylko w HoloLens 2

Uwaga

Możesz zmienić wartość domyślną loopbackGain lub MicrophoneGain w Windows Device Portal, przechodząc do strony przechwytywania Mixed Reality 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ą witryny Windows Device Portal do skonfigurowania domyślnych wartości zysków dodano aktualizację z czerwca 2020 r. (Windows Holographic, wersja 2004 kompilacja 19041.1106 i Windows Holographic w wersji 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

W HoloLens 1 mrC nie będzie przechwycić zdjęcia lub przechwytywania wideo, podczas gdy proces nagrywa wideo lub robi zdjęcie. Odwrotna wartość jest również prawdziwa: jeśli funkcja MRC jest uruchomiona, aplikacja nie będzie mogła uzyskać dostępu do aparatu.

Dzięki HoloLens 2 można 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 funkcją SharedReadOnly.

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

Funkcje MRC wbudowane w Windows 10 (za pośrednictwem Cortana, menu Start, skrótów sprzętowych, Miracast, Windows Portal urządzeń):

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

Dodano jednak obsługę podsystemu MRC do działania w trybie udostępnionym:

  • Jeśli aplikacja żąda dostępu ExclusiveControl do aparatu fotograficznego/wideo, wbudowane narzędzie MRC automatycznie przestanie używać aparatu fotograficznego/wideo, aby żądanie aplikacji zakończyło się powodzeniem
  • Jeśli wbudowana funkcja MRC jest uruchamiana, gdy aplikacja ma funkcję ExclusiveControl, wbudowane kontrolery MRC będą uruchamiane w trybie SharedReadOnly

Ta funkcja trybu udostępnionego ma pewne ograniczenia:

  • Zdjęcie za pomocą Cortana, skrótów sprzętowych lub menu Start: wymaga aktualizacji z Windows 10 kwietnia 2018 r. (lub nowszej)
  • Wideo za pośrednictwem Cortana, skrótów sprzętowych lub menu Start: wymaga aktualizacji z Windows 10 kwietnia 2018 r. (lub nowszej)
  • Przesyłanie strumieniowe mrC za pośrednictwem Miracast: wymaga Aktualizacja systemu Windows 10 z października 2018 (lub nowszej)
  • Przesyłanie strumieniowe mrC za pośrednictwem portalu urządzeń Windows lub za pośrednictwem aplikacji towarzyszącej HoloLens: wymaga 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 narzędzia MRC zawsze zażądać wyłącznej kontroli aparatu. Zapewni to aplikacji pełną kontrolę nad ustawieniami aparatu, o ile masz świadomość ograniczeń wymienionych powyżej.

Przestroga

Przed kontynuowaniem należy uważnie przeczytać uwagi SharingMode .

  • Konfigurowanie aparatu w żądany sposób
  • Uruchom aplikację, przechwyć ramki wideo za pomocą interfejsu API uruchamiania, a następnie włącz usługę MRC

Przestroga

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

Pełną próbkę powyższego procesu można znaleźć w przykładzie śledzenia twarzy holograficznej.

Uwaga

Przed aktualizacją Windows 10 kwietnia 2018 r. niestandardowy rejestrator MRC aplikacji wzajemnie wykluczał się z systemem MRC (przechwytywanie zdjęć, przechwytywanie filmów wideo lub przesyłanie strumieniowe z witryny Windows Device Portal).

Zobacz też