Omówienie renderowania holograficznego

Renderowanie holograficzne umożliwia aplikacji rysowanie hologramu w dokładnej lokalizacji na całym świecie użytkownika, niezależnie od tego, czy jest on precyzyjnie umieszczony w świecie fizycznym, czy w utworzonym obszarze wirtualnym. Hologramy są obiektami wykonanymi z dźwięku i światła. Renderowanie umożliwia aplikacji dodanie światła.

Obsługa urządzeń

Funkcja HoloLens (pierwsza generacja) HoloLens 2 Immersyjne zestawy nagłowne
Renderowanie ✔️ ✔️ ✔️

Renderowanie holograficzne

Kluczem do renderowania holograficznego jest wiedza, jakiego rodzaju urządzenie jest używane. Urządzenia z wyświetlanymi ekranami, takimi jak HoloLens, dodają światło do świata. Czarne piksele są w pełni przezroczyste, a jaśniejsze piksele są coraz bardziej nieprzezroczyste. Ponieważ światło z wyświetlaczy jest dodawane do światła ze świata rzeczywistego, białe piksele są przezroczyste.

Chociaż renderowanie stereoskopowe zapewnia jeden sygnał głębi dla hologramów, dodanie efektów uziemienia może pomóc użytkownikom łatwiej zobaczyć powierzchnię, w której znajduje się hologram. Jedną z technik uziemienia jest dodanie blasku wokół hologramu na pobliskiej powierzchni, a następnie renderowanie cienia na tym blasku. W ten sposób cień wydaje się odjąć światło ze środowiska. Dźwięk przestrzenny to kolejny ważny sygnał głębokości, dzięki czemu użytkownicy mogą poznać odległość i względną lokalizację hologramu.

Urządzenia z nieprzezroczystych wyświetlaczy, takie jak Windows Mixed Reality immersywny zestaw słuchawkowy, blokują świat. Czarne piksele są stałe czarne, a każdy inny kolor jest wyświetlany jako ten kolor dla użytkownika. Aplikacja jest odpowiedzialna za renderowanie wszystkiego, co widzi użytkownik. To sprawia, że jeszcze ważniejsze jest utrzymanie stałej częstotliwości odświeżania, dzięki czemu użytkownicy mają wygodne środowisko.

Przewidywane parametry renderowania

Zestawy nagłowne rzeczywistości mieszanej (zarówno holoLens, jak i immersywne zestawy nagłowne) stale śledzą położenie i orientację głowy użytkownika względem otoczenia. Gdy aplikacja rozpocznie przygotowywanie następnej ramki, system przewiduje, gdzie głowa użytkownika będzie w przyszłości w dokładnym momencie wyświetlania ramki na ekranach. Na podstawie tego przewidywania system oblicza widok i przekształcenia projekcji do użycia dla tej ramki. Aplikacja musi używać tych przekształceń w celu uzyskania poprawnych wyników. Jeśli przekształcenia dostarczone przez system nie są używane, wynikowy obraz nie będzie zgodny z rzeczywistym światem, co prowadzi do dyskomfortu użytkownika.

Uwaga

Aby dokładnie przewidzieć, kiedy zostanie wyświetlona nowa ramka, system stale mierzy efektywne kompleksowe opóźnienie potoku renderowania aplikacji. Podczas gdy system dostosowuje się do długości potoku renderowania, można poprawić stabilność hologramu, utrzymując ten potok tak krótko, jak to możliwe.

Aplikacje korzystające z zaawansowanych technik rozszerzania przewidywania systemu mogą zastąpić widok systemowy i przekształcenia projekcji. Aplikacje te muszą nadal używać transformacji dostarczanych przez system jako podstaw dla ich niestandardowych przekształceń w celu uzyskania znaczących wyników.

Inne parametry renderowania

Podczas renderowania ramki system określa widok bufora zaplecza, w którym aplikacja powinna rysować. Ten widok jest często mniejszy niż pełny rozmiar buforu ramki. Niezależnie od rozmiaru ekranu, gdy ramka jest renderowana przez aplikację, system skaluje obraz w celu wypełnienia całej liczby wyświetlanych ekranów.

W przypadku aplikacji, które nie mogą renderować się z wymaganą szybkością odświeżania, można skonfigurować parametry renderowania systemu w celu zmniejszenia ciśnienia pamięci i kosztu renderowania kosztem zwiększonego aliasu pikseli. Można również zmienić format buforu wstecznego, co w przypadku niektórych aplikacji może pomóc zwiększyć przepustowość pamięci i przepływność pikseli.

Renderowanie frustum, rozdzielczości i szybkości klatek, w których aplikacja jest proszona o renderowanie, może również zmienić się z ramki na ramkę i może się różnić w lewym i prawym oku. Na przykład gdy funkcja przechwytywania rzeczywistości mieszanej (MRC) jest aktywna, a konfiguracja widoku zdjęcia/kamery wideo nie jest włączona, jedno oko może być renderowane z większą rozdzielczością lub większą rozdzielczością.

W przypadku każdej ramki aplikacja musi renderować przy użyciu przekształcenia widoku, transformacji projekcji i rozdzielczości widoku udostępnionej przez system. Ponadto aplikacja nigdy nie musi zakładać, że żaden parametr renderowania lub wyświetlania pozostaje stały z ramki do ramki. Aparaty takie jak Unity obsługują wszystkie te przekształcenia w swoich własnych obiektach aparatu, dzięki czemu ruch fizyczny użytkowników i stan systemu jest zawsze szanowany. Jeśli aplikacja zezwala na ruch wirtualny użytkownika przez świat (np. za pomocą szminki na gamepad), możesz dodać obiekt nadrzędnej platformy nad kamerą, która go porusza. Powoduje to, że aparat odzwierciedla ruch wirtualny i fizyczny użytkownika. Jeśli aplikacja modyfikuje przekształcenie widoku, przekształcenie projekcji lub wymiar widoku dostarczony przez system, musi poinformować system przez wywołanie odpowiedniego interfejsu API zastąpienia.

Aby zwiększyć stabilność renderowania holograficznego, aplikacja powinna zapewnić systemowi Windows każdej klatce bufor głębokości używany do renderowania. Jeśli aplikacja zapewnia bufor głębokości, powinna mieć spójne wartości głębokości, z głębokością wyrażoną w metrach od aparatu. Dzięki temu system może używać danych głębokości na piksel, aby lepiej ustabilizować zawartość, jeśli głowa użytkownika kończy się nieznacznie przesunięty z przewidywanej lokalizacji. Jeśli nie możesz zapewnić buforu głębokości, możesz zapewnić punkt koncentracji uwagi i normalną elementy, definiując płaszczyznę przecinaną większość zawartości. Jeśli zapewniono zarówno bufor głębokości, jak i płaszczyznę koncentracji uwagi, system może używać obu tych elementów. W szczególności warto zapewnić zarówno bufor głębokości, jak i punkt koncentracji uwagi, który zawiera wektor prędkości, gdy aplikacja wyświetla hologramy, które są w ruchu.

Zapoznaj się z artykułem Renderowanie w trybie DirectX , aby uzyskać szczegółowe informacje na temat tego tematu.

Kamery holograficzne

Windows Mixed Reality wprowadza koncepcję aparatu holograficznego. Kamery holograficzne są podobne do tradycyjnego aparatu znalezionego w tekstach graficznych 3D; definiują zarówno właściwości extrinsic (położenie i orientację) i aparatu wewnętrznego. (Na przykład pole widoku służy do wyświetlania wirtualnej sceny 3D). W przeciwieństwie do tradycyjnych aparatów 3D aplikacja nie kontroluje położenia, orientacji i właściwości wewnętrznych aparatu. Zamiast tego położenie i orientacja aparatu holograficznego są niejawnie kontrolowane przez ruch użytkownika. Ruch użytkownika jest przekazywany do aplikacji na podstawie ramek po ramce za pośrednictwem przekształcenia widoku. Podobnie właściwości wewnętrzne aparatu są definiowane przez kalibrowane optyki urządzenia i przekazywane klatki po klatce za pośrednictwem transformacji projekcji.

Ogólnie rzecz biorąc, aplikacja będzie renderowana dla pojedynczego aparatu stereo. Niezawodna pętla renderowania będzie obsługiwać wiele kamer i będzie obsługiwać zarówno kamery mono, jak i stereo. Na przykład system może poprosić aplikację o renderowanie z alternatywnej perspektywy, gdy użytkownik aktywuje funkcję, np. przechwytywanie rzeczywistości mieszanej (MRC), w zależności od kształtu zestawu nagłownego. Aplikacje, które mogą obsługiwać wiele aparatów, mogą je uzyskać, decydując się na rodzaj kamer, które mogą obsługiwać.

Renderowanie woluminów

Podczas renderowania medycznych mrI lub woluminów inżynieryjnych w 3D często używane są techniki renderowania woluminów . Te techniki mogą być interesujące w rzeczywistości mieszanej, gdzie użytkownicy mogą naturalnie wyświetlać taki wolumin z kluczowych kątów, po prostu przesuwając głowę.

Obsługiwane rozwiązania na urządzeniu HoloLens (pierwsza generacja)

  • Maksymalny rozmiar widoku jest właściwością HolographicDisplay. Urządzenie HoloLens jest domyślnie ustawione na maksymalny rozmiar widoku, czyli 720p (1268x720).
  • Rozmiarportu widoku można zmienić, ustawiając parametr ViewportScaleFactor na holographicCamera. Ten współczynnik skalowania mieści się w zakresie od 0 do 1.
  • Najniższy obsługiwany rozmiar ekranu na urządzeniu HoloLens (pierwsza generacja) to 50% z 720p, czyli 360p (634x360). Jest to element ViewportScaleFactor w wersji 0.5.
  • Wszystkie elementy niższe niż 540p nie są zalecane ze względu na degradację wizualizacji, ale mogą służyć do identyfikowania wąskich gardeł w współczynniku wypełnienia pikseli.

Obsługiwane rozwiązania dotyczące HoloLens 2

  • Bieżące i maksymalne obsługiwane rozmiary obiektów docelowych renderowania to właściwości konfiguracji widoku. HoloLens 2 jest ustawiona na maksymalny rozmiar docelowy renderowania, czyli domyślnie 1440 x 936.
  • Aplikacje mogą zmieniać rozmiar buforów docelowych renderowania przez wywołanie metody RequestRenderTargetSize w celu zażądania nowego rozmiaru obiektu docelowego renderowania. Zostanie wybrany nowy rozmiar docelowy renderowania, który spełnia lub przekracza żądany rozmiar docelowy renderowania. Ten interfejs API zmienia rozmiar buforu docelowego renderowania, który wymaga ponownej alokacji pamięci na procesorze GPU. Implikacje tego zadania obejmują: rozmiar docelowy renderowania można skalować w dół, aby zmniejszyć wykorzystanie pamięci na procesorze GPU, a ta metoda nie powinna być wywoływana z dużą częstotliwością.
  • Aplikacje nadal mogą zmieniać rozmiar ekranu w taki sam sposób, jak w przypadku urządzenia HoloLens 1. Nie ma dodatkowej alokacji pamięci na procesorze GPU, więc można ją zmienić z dużą częstotliwością, ale nie można jej użyć do zmniejszenia ciśnienia pamięci na procesorze GPU.
  • Najniższy obsługiwany rozmiar widoku w HoloLens 2 to 634 x 412, a parametr ViewportScaleFactor wynosi około 0,44, gdy domyślny rozmiar docelowy renderowania jest używany.
  • Jeśli zostanie podany rozmiar docelowy renderowania, który jest mniejszy niż najniższy obsługiwany rozmiar widoku, współczynnik skalowania widoku zostanie zignorowany.
  • Wszystkie elementy niższe niż 540p nie są zalecane ze względu na degradację wizualizacji, ale mogą służyć do identyfikowania wąskich gardeł w współczynniku wypełnienia pikseli.

Zobacz też