Omówienie przechwytywania rzeczywistości mieszanej

Uwaga

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

W dowolnym momencie możesz wykonać zdjęcie lub wideo z przechwytywaniem rzeczywistości mieszanej (MRC), ale podczas tworzenia aplikacji należy pamiętać o kilku kwestiach. Obejmuje to najlepsze rozwiązania dotyczące jakości wizualizacji MRC i reagowania na zmiany systemu podczas przechwytywania mrc.

Deweloperzy mogą również bezproblemowo integrować przechwytywanie i wstawianie rzeczywistości mieszanej do swoich aplikacji.

MrC na HoloLens (pierwszej generacji) obsługuje filmy i zdjęcia do 720p, podczas gdy MRC na HoloLens 2 obsługuje filmy do 1080p i zdjęcia do rozdzielczości 4K.

Znaczenie jakości MRC

Niezależnie od tego, czy jest to zrzuty ekranu rzeczywistości mieszanej na stronie Microsoft Store, czy inni użytkownicy udostępniający zawartość przechwytywania w sieciach społecznościowych, Mixed Reality Przechwytywanie multimediów jest często pierwszą ekspozycją użytkowników na twoją aplikację. Możesz użyć narzędzia MRC, aby pokazować swoją aplikację, edukować użytkowników, zachęcać użytkowników do udostępniania ich mieszanych interakcji w świecie oraz do badań użytkowników i rozwiązywania problemów.

Jak usługa MRC wpływa na aplikację

Włączanie usługi MRC w aplikacji

Domyślnie aplikacja nie musi wykonywać żadnych czynności, aby umożliwić użytkownikom przechwytywanie rzeczywistości mieszanej.

Włączanie ulepszonego wyrównania dla usługi MRC w aplikacji

Domyślnie funkcja przechwytywania rzeczywistości mieszanej łączy dane wyjściowe holograficzne prawego oka z aparatem fotograficznym/wideo (PV). Te dwa źródła są łączone przy użyciu punktu koncentracji uwagi ustawionego przez aktualnie uruchomioną aplikację immersywną.

Oznacza to, że hologramy poza płaszczyzną ostrości nie będą wyrównane ze względu na fizyczną odległość między kamerą PV a właściwym wyświetlaczem.

Ustawianie punktu fokusu

Aplikacje immersywne (na HoloLens) powinny ustawiać punkt koncentracji uwagi, w którym mają być ustawione ich płaszczyzny stabilizacji. Zapewnia to najlepszą wyrównanie zarówno zestawu nagłownego, jak i przechwytywania rzeczywistości mieszanej.

Jeśli punkt koncentracji uwagi nie jest ustawiony, płaszczyzna stabilizacji będzie domyślnie 2 metry.

Renderowanie z kamery PV (zgoda)

HoloLens 2 dodaje możliwość renderowania aplikacji immersyjnej z kamery PV, gdy jest uruchomiona funkcja 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 celu zbliżenia interakcji powinno być dokładne we 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.

Dowiedz się więcej o renderowaniu z kamery PV (DirectX).

Najlepsze rozwiązania (specyficzne dla HoloLens)

Oczekuje się, że mrC będzie działać bez dodatkowych wysiłków programistycznych, ale istnieje kilka rzeczy, o których należy pamiętać podczas zapewniania najlepszego środowiska przechwytywania rzeczywistości mieszanej.

MrC używa kanału alfa hologramu do mieszania z obrazami aparatu

Najważniejszym krokiem jest upewnienie się, że aplikacja jest czyszcząca na przezroczystą czarną zamiast czyszcząc nieprzezroczystą czerń. W a unity jest to domyślnie wykonywane z zestawem MixedRealityToolkit. Jeśli programujesz w środowisku innych niż Unity, może być konieczne wprowadzenie jednej zmiany wiersza.

Poniżej przedstawiono niektóre artefakty, które mogą być widoczne w mrC, jeśli aplikacja nie jest czyszcząca na przezroczystą czarną:

Przykładowe błędy: czarne krawędzie wokół zawartości (nie można wyczyścić przezroczystego czerni)

Failure to clear to transparent black: black edge artifacts around holograms Failing to clear to transparent black: black edge artifacts around holograms

Przykładowe błędy: Cała scena tła hologramu jest czarna. Ustawianie wartości alfa tła jednej z wyników na czarnym tle

Setting a background alpha value of 1 results in a black background

Oczekiwany wynik: Hologramy są prawidłowo połączone z rzeczywistym światem (oczekiwany wynik w przypadku czyszczenia na przezroczysty czarny)

Expected result if clearing to transparent black

Rozwiązanie 2.

  • Zmień dowolną zawartość wyświetlaną jako nieprzezroczystą czarną, aby mieć wartość alfa 0.
  • Upewnij się, że aplikacja jest czyszcząca na przezroczystą czarną.
  • Aparat Unity domyślnie czyści się automatycznie za pomocą zestawu MixedRealityToolkit, ale jeśli jest to aplikacja spoza aparatu Unity, należy zmodyfikować kolor używany z identyfikatorem ID3D11DeiceContext::ClearRenderTargetView(). Chcesz upewnić się, że przezroczyste czarne (0,0,0,0) zamiast nieprzezroczystego czarnego (0,0,0,1).

Teraz możesz dostroić wartości alfa zasobów, jeśli chcesz, ale zwykle nie musisz tego robić. W większości przypadków mrc będą wyglądać dobrze z pudełka. MrC zakłada wstępnie pomnożone alfa. Wartości alfa będą mieć wpływ tylko na przechwytywanie MRC.

Czego można oczekiwać po włączeniu usługi MRC na HoloLens

Poniższe zasady dotyczą zarówno HoloLens (pierwszej generacji), jak i HoloLens 2, chyba że określono inaczej:

  • System ograniczy aplikację do renderowania 30-Hz. Spowoduje to utworzenie pewnego miejsca do uruchomienia przez mrC, dzięki czemu aplikacja nie musi zachować stałej rezerwy budżetowej, a także dopasować szybkość klatek ramki rekordu wideo MRC o szybkości 30 klatek na sekundę
  • Zawartość hologramu w prawym oku urządzenia może wydawać się "sparkle" podczas nagrywania/przesyłania strumieniowego MRC: tekst może stać się trudniejszy do odczytania, a krawędzie hologramu mogą wydawać się bardziej jaggy (rezygnacja z trzeciego renderowania aparatu na HoloLens 2 pozwala uniknąć tego naruszenia)
  • Zdjęcia i filmy MRC będą uwzględniać punkt koncentracji uwagi aplikacji, jeśli aplikacja ją włączyła, co pomoże zapewnić dokładne położenie hologramów. W przypadku filmów punkt koncentracji uwagi jest wygładzony, więc hologramy mogą wydawać się powoli dryfować w miejscu, jeśli głębokość punktu koncentracji uwagi znacznie się zmieni. Hologramy, które znajdują się w różnych głębokościach od punktu koncentracji uwagi, mogą pojawić się przesunięcie ze świata rzeczywistego (zobacz przykład poniżej, w którym punkt koncentracji uwagi jest ustawiony na 2 metry, ale hologram jest ustawiony na 1 metr).

Holograms at 2 meters will appear perfectly registered to the world. Holograms at close or far distances may be slightly offset.

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 na urządzeniu "Roll aparatu". Możesz utworzyć niestandardowy rejestrator MRC lub skorzystać z wbudowanego interfejsu użytkownika przechwytywania aparatu.

MrC z wbudowanym interfejsem użytkownika aparatu

Deweloperzy mogą użyć 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 Mixed Reality Capture, jeśli musisz dodać własny interfejs użytkownika aparatu lub dostęp niższego poziomu do przechwytywania strumieni.

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 adds a custom MRC camera using MRC effects

Aplikacje aparatu Unity powinny widzieć Locatable_camera_in_Unity dla właściwości w celu włączenia hologramów.

Inne aplikacje mogą to zrobić przy użyciu 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.

Dowiedz się więcej na temat tworzenia niestandardowego rejestratora MRC (DirectX).

Jednoczesne ograniczenia 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 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 elementem SharedReadOnly.

Dostęp do wbudowanego aparatu fotograficznego/wideo MRC

Dowiedz się więcej o wbudowanym dostępie do aparatu fotograficznego/wideo MRC (DirectX).

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 będzie mieć pełną kontrolę nad ustawieniami aparatu, o ile masz świadomość ograniczeń wymienionych powyżej.

Dowiedz się więcej o dostępie MRC dla deweloperów (DirectX).

Zobacz też