Omówienie przechwytywania rzeczywistości mieszanej

Uwaga

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

W dowolnym momencie możesz zrobić zdjęcie lub wideo rzeczywistości mieszanej (MRC), ale istnieje kilka rzeczy, o których należy pamiętać podczas tworzenia aplikacji. Obejmuje to najlepsze rozwiązania dotyczące jakości wizualizacji MRC i reagowania na zmiany systemu podczas przechwytywania mrC.

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

MrC on HoloLens (pierwsza generacja) obsługuje filmy wideo i zdjęcia w rozdzielczości do 720p, natomiast rozwiązanie MRC w programie HoloLens 2 obsługuje filmy wideo w rozdzielczości do 1080p i zdjęcia do rozdzielczości 4K.

Znaczenie jakości mrC

Niezależnie od tego, czy są to zrzuty ekranu rzeczywistości mieszanej na stronie Microsoft Store, czy też inni użytkownicy udostępniają zawartość przechwytywania w sieciach społecznościowych, Przechwytywanie rzeczywistości mieszanej media są często pierwszym dostępem użytkowników do aplikacji. Za pomocą funkcji MRC możesz pokazać aplikację, edukować użytkowników, dzielić się swoimi interakcjami ze światem mieszanym oraz badać użytkowników i rozwiązywać problemy.

Wpływ mrC na aplikację

Włączanie funkcji MRC w aplikacji

Domyślnie aplikacja nie musi nic robić, aby umożliwić użytkownikom przechwytywanie rzeczywistości mieszanej.

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

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

Oznacza to, że hologramy poza płaszczyzną koncentracji uwagi nie będą wyrównane ze względu na fizyczną odległość między kamerą PV a prawym ekranem.

Ustawianie punktu koncentracji uwagi

Aplikacje immersyjne (HoloLens) powinny ustawić punkt koncentracji uwagi, w którym mają się znaleźć płaszczyzna ustabilizowania. Zapewnia to najlepsze wyrównanie zarówno zestawu nagłownego, jak i przechwytywania rzeczywistości mieszanej.

Jeśli punkt koncentracji uwagi nie jest ustawiony, płaszczyzna ustabilizowania domyślnie ma wartość 2 metry.

Renderowanie z kamery PV (opcjonalnie)

HoloLens 2 dodaje możliwość renderowania aplikacji immersyjnej z aparatu PV, gdy funkcja przechwytywania rzeczywistości mieszanej jest uruchomiona. Aby zapewnić, że aplikacja poprawnie obsługuje dodatkowe renderowanie, musi wyrazić zgodę na tę funkcję.

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

  • Wyrównanie hologramu do środowiska fizycznego i rąk w przypadku bliskich 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 nagłownym nie zostanie naruszone, ponieważ nie będzie używane do renderowania hologramów danych wyjściowych MRC.

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

Najlepsze rozwiązania (specyficzne HoloLens)

Oczekuje się, że mrC będzie działać bez dodatkowych nakładów pracy programistycznych, ale istnieje kilka rzeczy, o których należy pamiętać, zapewniając najlepsze środowisko przechwytywania rzeczywistości mieszanej.

MrC używa kanału alfa hologramu, aby wtopić się w obrazy aparatu

Najważniejszym krokiem jest upewninie się, że aplikacja jest czyszczący do przezroczystej czarnej, a nie nieprzezroczystej czarnej. W a aparatu Unity jest to wykonywane domyślnie za pomocą zestawu narzędzi MixedRealityToolkit. Jeśli program używasz aparatu spoza aparatu Unity, może być konieczne wprowadzić jedną zmianę w wierszu.

Poniżej podano niektóre artefakty, które można zobaczyć w mrC, jeśli aplikacja nie jest czyszczona do przezroczystego czarnego:

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

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 w tle hologramu jest wyświetlana jako czarna. Ustawienie wartości alfa tła jednego powoduje czarne tło

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

Oczekiwany wynik:Hologramy są prawidłowo wmieszane ze światem rzeczywistym (oczekiwany wynik w przypadku czyszczenia do przezroczystej czarnej)

Expected result if clearing to transparent black

Rozwiązanie 2.

  • Zmień zawartość, która jest pokazywana jako nieprzezroczysty czarny, aby mieć wartość alfa 0.
  • Upewnij się, że aplikacja jest czyszcząca na przezroczysty czarny.
  • Domyślnie unity automatycznie usuwa dane za pomocą zestawu MixedRealityToolkit, ale jeśli jest to aplikacja spoza aparatu Unity, należy zmodyfikować kolor używany z id3D11DeiceContext::ClearRenderTargetView(). Chcesz mieć pewność, że przezroczysta czarny (0,0,0,0) zamiast nieprzezroczystego czarnego (0,0,0,1).

Teraz możesz dostroić wartości alfa swoich zasobów, jeśli chcesz, ale zazwyczaj nie jest to konieczne. W większości przypadków mrC będą wyglądać dobrze. MrC zakłada wstępnie pomnożony kanał alfa. Wartości alfa będą mieć wpływ tylko na przechwytywanie MRC.

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

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

  • System ogranicza renderowanie aplikacji do 30 Hz. Powoduje to utworzenie zapasu dla mrc do uruchomienia, dzięki czemu aplikacja nie musi zachować stałej rezerwy budżetu, a także dopasowuje ramkę rekordów wideo MRC o wartości 30 minut
  • Zawartość hologramu w prawym oku urządzenia może wydawać się "rozsyłana" podczas nagrywania/przesyłania strumieniowego mrC: tekst może stać się trudniejszy do odczytania, a krawędzie hologramu mogą wydawać się bardziej rozgałężające (rezygnacja z renderowania trzeciego aparatu na platformie HoloLens 2 pozwala uniknąć tego naruszenia)
  • Zdjęcia i wideo mrC będą przestrzegać punktu 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 wideo punkt koncentracji uwagi jest wygładzone, więc hologramy mogą wydawać się powoli dryfować w miejsce, jeśli głębokość punktu koncentracji uwagi znacznie się zmieni. Hologramy, które znajdują się na różnych głębokościach od punktu koncentracji uwagi, mogą wyglądać na przesunięcie od świata rzeczywistego (zobacz przykład poniżej, gdzie punkt koncentracji uwagi jest ustawiony na 2 metry, ale hologram jest umieszczony na 1 mierniku).

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 uruchamiać przechwytywanie zdjęć mrC lub wideo z poziomu aplikacji, a przechwycona zawartość jest dostępna dla aplikacji bez przechowywania w "rolce aparatu" urządzenia. 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 interfejsu użytkownika funkcji Camera Capture, aby pobrać zdjęcie lub wideo rzeczywistości mieszanej przechwycone przez użytkownika z zaledwie kilkoma liniami kodu.

Ten interfejs API uruchamia wbudowany interfejs użytkownika aparatu MRC, w którym użytkownicy mogą zrobić zdjęcie lub wideo i zwraca wynikowe przechwytywanie do aplikacji. Możesz utworzyć niestandardowy rejestrator Przechwytywanie rzeczywistości mieszanej, 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 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, podobnie jak MRC. Dzięki temu aplikacja może rozpoczynać przechwytywanie danych z danych wejściowych użytkownika, tworzyć niestandardowe interfejsy użytkownika rejestrowania lub dostosowywać ustawienia MRC, aby nazwać kilka przykładów.

Aplikacja HoloStudio dodaje niestandardowy aparat MRC przy użyciu efektów MRC

HoloStudio adds a custom MRC camera using MRC effects

Aplikacje aparatu Unity powinny Locatable_camera_in_Unity dla właściwości, aby włączyć hologramy.

Inne aplikacje mogą to zrobić za pomocą interfejsów API przechwytywania multimediów Windows w celu sterowania aparatem i dodania efektu wideo i dźwięku MRC, aby uwzględnić wirtualne hologramy i dźwięk aplikacji w obrazach i wideo.

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

Jednoczesne ograniczenia mrC

Musisz mieć świadomość pewnych ograniczeń, gdy wiele aplikacji uzyskuje dostęp do mrC w tym samym czasie.

Dostęp do aparatu fotograficznego/wideo

Na HoloLens 1 mrc nie będzie w stanie przechwycić zdjęcia lub przechwycić wideo, gdy proces rejestruje wideo lub chwyci zdjęcie. Odwrotna jest również prawda: jeśli mrc jest uruchomiony, aplikacja nie może uzyskać dostępu do aparatu.

W 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ć obiekt MediaCapture przy użyciu właściwości SharedMode z właściwością SharedReadOnly.

Dostęp do wbudowanej kamery mrC ze zdjęciami/wideo

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

Dostęp mrC dla deweloperów

Zalecamy, aby zawsze żądać kontroli wyłącznej dla aparatu podczas korzystania z funkcji MRC. 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ż