Kiedy nosisz zestaw słuchawkowy rzeczywistości mieszanej, staje się centrum świata holograficznego. Składnik aparatu Unity automatycznie obsłuży renderowanie stereoskopowe i będzie śledzić ruch głowy i rotację. Jednak aby w pełni zoptymalizować jakość wizualną i stabilność hologramu, należy ustawić ustawienia aparatu opisane poniżej.
HoloLens vs vr immersyjne zestawy słuchawkowe
Ustawienia domyślne składnika aparatu Unity są przeznaczone dla tradycyjnych aplikacji 3D, które wymagają tła przypominającego skybox, ponieważ nie mają rzeczywistego świata.
Podczas uruchamiania na immersywnym zestawie słuchawkowym renderujesz wszystko, co widzi użytkownik, więc prawdopodobnie zechcesz zachować skybox.
Jednak podczas uruchamiania na holograficznego zestawu słuchawkowego , takiego jak HoloLens, rzeczywisty świat powinien pojawić się za wszystkim, co renderuje aparat. Ustaw tło aparatu na przezroczyste (w urządzeniu HoloLens czarne renderowanie jako przezroczyste) zamiast tekstury Skybox:
Wybierz kamerę główną w panelu Hierarchia
Na panelu Inspector (Inspektor) znajdź składnik Camera (Aparat) i zmień listę rozwijaną Clear Flags (Wyczyść flagi) z Skybox na Solid Color
Wybierz selektor kolorów tła i zmień wartości RGBA na (0, 0, 0, 0, 0)
Jeśli ustawisz tę wartość z kodu, możesz użyć aparatu Unity Color.clear
Możesz użyć kodu skryptu, aby określić w czasie wykonywania, czy zestaw słuchawkowy jest immersyjny, czy holograficzne, sprawdzając displayOpaque na aktywnie uruchomionym systemie XRDisplaySubsystem.
Niezależnie od rodzaju środowiska, które opracowujesz, aparat główny jest zawsze podstawowym składnikiem renderowania stereo dołączonym do wyświetlacza zamontowanego na głowie urządzenia. Łatwiej będzie rozłożyć aplikację, jeśli wyobrazisz sobie pozycję początkową użytkownika jako (X: 0, Y: 0, 0, Z: 0). Ponieważ aparat główny śledzi ruch głowy użytkownika, można ustawić pozycję początkową użytkownika, ustawiając pozycję początkową głównego aparatu.
Głównym wyborem, który należy zrobić, jest to, czy opracowujesz zestawy nagłowne HoloLens czy VR immersyjne zestawy słuchawkowe. Po jej utworzeniu przejdź do dowolnej sekcji konfiguracji.
Konfiguracja aparatu HoloLens
W przypadku aplikacji HoloLens należy użyć kotwic dla wszystkich obiektów, które chcesz zablokować w środowisku sceny. Zalecamy używanie niezwiązanego miejsca w celu zmaksymalizowania stabilności i tworzenia kotwic w wielu pokojach.
Postępuj zgodnie z tym samouczkiem krok po kroku, aby dodać i automatycznie skonfigurować zestaw narzędzi Mixed Reality Toolkit w projekcie aparatu Unity. Istnieje również możliwość bezpośredniej pracy z klasą MixedRealityPlayspace z zestawu NARZĘDZI MRTK dla aparatu Unity i ustawienie skali docelowej na świat:
MrTK powinien obsługiwać położenie przestrzeni playspace i aparatu automatycznie, ale dobrze jest dokładnie sprawdzić:
W panelu Hierarchia rozwiń obiekt podrzędny MixedRealityPlayspace GameObject i znajdź obiekt podrzędny Main Camera
W panelu Inspektor znajdź składnik Przekształć i zmień pozycję na (X: 0, Y: 0, Z: 0)
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Device);
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Unbounded); // Recommendation for OpenXR
Można użyć arSession dla aplikacji HoloLens, które działają lepiej z kotwicami i ARKit/ARCore.
Ważne
Sesja AR i powiązane funkcje wymagają zainstalowania programu AR Foundation.
Można również ręcznie zastosować zmiany aparatu bez korzystania z arsesji:
Wybierz pozycję Główny aparat w panelu Hierarchia
W panelu Inspektor znajdź składnik Przekształć i zmień pozycję na (X: 0, Y: 0, Z: 0)
Aparat w okienku Inspector (Inspektor) w aparacie Unity
Dodawanie elementu TrackedPoseDriver do aparatu głównego
Wybierz pozycję Główny aparat w panelu Hierarchia
W panelu Inspektor znajdź składnik Przekształć i zmień pozycję na (X: 0, Y: 0, Z: 0)
Aparat w okienku Inspector (Inspektor) w aparacie Unity
Przejdź do sekcji Inne ustawieniaw ustawieniach odtwarzacza sklepu Windows
Wybierz Windows Mixed Reality jako urządzenie, które może być wyświetlane jako Windows Holographic w starszych wersjach aparatu Unity
Wybieranie obsługiwanej rzeczywistości wirtualnej
Ponieważ obiekt Main Camera jest automatycznie oznaczony jako aparat, aparat Unity obsługuje cały ruch i tłumaczenie.
Uwaga
Te ustawienia należy zastosować do aparatu w każdej scenie aplikacji.
Domyślnie podczas tworzenia nowej sceny w środowisku Unity będzie zawierać obiekt Main Camera GameObject w hierarchii, który zawiera składnik Aparat fotograficzny, ale może nie mieć prawidłowo zastosowanych ustawień.
Konfiguracja kamery VR
Windows Mixed Reality obsługuje aplikacje w szerokim zakresie skalowania, od aplikacji tylko do orientacji i aplikacji skalowanych w górę za pośrednictwem aplikacji w skali pokoju. Na urządzeniu HoloLens możesz przejść dalej i tworzyć aplikacje na skalę światową, które pozwalają użytkownikom chodzić poza 5 metrów, eksplorując całe piętro budynku i poza nią.
Pierwszym krokiem w tworzeniu środowiska rzeczywistości mieszanej w środowisku Unity jest określenie, które środowisko skalowania aplikacji będzie dotyczyć:
Przejdź do sekcji Inne ustawieniaw ustawieniach odtwarzacza sklepu Windows
Wybierz Windows Mixed Reality jako urządzenie, które może być wyświetlane jako Windows Holographic w starszych wersjach aparatu Unity
Wybieranie obsługiwanej rzeczywistości wirtualnej
Ponieważ obiekt Main Camera jest automatycznie oznaczony jako aparat, aparat Unity obsługuje cały ruch i tłumaczenie.
Uwaga
Te ustawienia należy zastosować do aparatu w każdej scenie aplikacji.
Domyślnie podczas tworzenia nowej sceny w środowisku Unity będzie ona zawierać obiekt Main Camera GameObject w hierarchii, który zawiera składnik Camera, ale nie ma poniższych ustawień prawidłowo zastosowanych.
Przestrzeń nazw:UnityEngine.XR Type:XRDevice
W przypadku środowiska skalowania na stojąco lub w skali pomieszczenia należy umieścić zawartość względem podłogi. Przyczyną podłogi użytkownika jest etap przestrzenny, który reprezentuje zdefiniowane przez użytkownika źródło na poziomie podłogi i opcjonalną granicę pomieszczenia, skonfigurowaną podczas pierwszego uruchomienia.
Aby upewnić się, że aparat Unity działa z jego światowym systemem współrzędnych na poziomie podłogi, można ustawić i przetestować, że aparat Unity używa typu przestrzeni śledzenia RoomScale:
if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
// RoomScale mode was set successfully. App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
// RoomScale mode was not set successfully. App cannot make assumptions about where the floor plane is.
}
Jeśli funkcja SetTrackingSpaceType zwróci wartość true, aparat Unity pomyślnie przełączył swój system współrzędnych świata w celu śledzenia ramki etapu odwołania.
Jeśli funkcja SetTrackingSpaceType zwraca wartość false, aparat Unity nie może przełączyć się do ramki etapu odwołania, prawdopodobnie dlatego, że użytkownik nie skonfigurował podłogi w swoim środowisku. Chociaż wartość zwracana fałsz nie jest powszechna, może się zdarzyć, że etap jest skonfigurowany w innym pomieszczeniu, a urządzenie jest przenoszone do bieżącego pokoju bez konfigurowania nowego etapu przez użytkownika.
Po pomyślnym ustawieniu typu śledzenia roomScale zawartość umieszczona na płaszczyźnie y=0 zostanie wyświetlona na podłodze. Początek 0, 0, 0 będzie konkretnym miejscem na podłodze, na którym użytkownik stał podczas instalacji pomieszczenia, z -Z reprezentującym kierunek do przodu, przed którym stoi podczas instalacji.
Przejdź do sekcji Inne ustawieniaw ustawieniach odtwarzacza sklepu Windows
Wybierz Windows Mixed Reality jako urządzenie, które może być wyświetlane jako Windows Holographic w starszych wersjach aparatu Unity
Wybieranie obsługiwanej rzeczywistości wirtualnej
Ponieważ obiekt Main Camera jest automatycznie oznaczony jako aparat, aparat Unity obsługuje cały ruch i tłumaczenie.
Uwaga
Te ustawienia należy zastosować do aparatu w każdej scenie aplikacji.
Domyślnie podczas tworzenia nowej sceny w środowisku Unity będzie ona zawierać obiekt Main Camera GameObject w hierarchii, który zawiera składnik Camera, ale nie ma poniższych ustawień prawidłowo zastosowanych.
Przestrzeń nazw:UnityEngine.XR Type:XRDevice
Aby utworzyć środowisko tylko do orientacji lub na dużą skalę, należy ustawić środowisko Unity na typ przestrzeni śledzenia stacjonarnego. Stacjonarne śledzenie przestrzeni ustawia układ współrzędnych świata aparatu Unity w celu śledzenia stacjonarnej ramy odniesienia. W trybie śledzenia stacjonarnego zawartość umieszczona w edytorze tuż przed domyślną lokalizacją aparatu (do przodu to -Z) pojawi się przed użytkownikiem po uruchomieniu aplikacji.
W przypadku czystego środowiska tylko orientacji , takiego jak 360-stopniowa przeglądarka wideo (gdzie aktualizacje głowicy pozycyjnej zrujnuje iluzję), można następnie ustawić XR. InputTracking.disablePositionalTracking ma wartość true:
InputTracking.disablePositionalTracking = true;
W przypadku środowiska na dużą skalę, aby umożliwić użytkownikowi później nowsze miejsce pochodzenia, możesz wywołać XR. InputTracking.Recenter , metoda:
Jeśli używasz zestawu MRTK, tło aparatu jest automatycznie konfigurowane i zarządzane. W przypadku projektów XR SDK lub Starszych wersji WSA zalecamy ustawienie tła aparatu na stałe czarne na urządzeniu HoloLens i utrzymanie skyboxu dla vr.
Używanie wielu aparatów fotograficznych
Gdy w scenie znajduje się wiele składników aparatu, aparat Unity wie, który aparat ma być używany do renderowania steroskopowego na podstawie tagu MainCamera. W starszej wersji XR używa również tego tagu do synchronizacji śledzenia głowy. W zestawie SDK XR śledzenie głowy jest sterowane przez skrypt TrackedPoseDriver dołączony do aparatu.
Udostępnianie buforów głębokości
Udostępnianie buforu głębokości aplikacji do systemu Windows zapewni aplikacji jeden z dwóch impulsów w stabilności hologramu na podstawie typu zestawu nagłownego renderowania dla:
Immersyjne zestawy słuchawkowe VR mogą dbać o reprojektację pozycyjną, gdy jest dostarczany bufor głębokości, dostosowując hologramy pod kątem błędnego wyrażeń zarówno w położeniu, jak i orientacji.
Zestawy słuchawkowe HoloLens mają kilka różnych metod. Urządzenie HoloLens 1 automatycznie wybierze punkt koncentracji uwagi po udostępnieniu buforu głębokości, optymalizując stabilność hologramu wzdłuż płaszczyzny, która przecina największą zawartość. HoloLens 2 ustabilizuje zawartość przy użyciu biblioteki LSR głębokości (patrz uwagi).
Okno dialogowe konfiguracji zestawu narzędzi MRTK podejmie próbę ustawienia buforu głębokości dla zestawu SDK XR i starszej wersji WSA, ale warto sprawdzić te karty i zweryfikować ustawienia w środowisku Unity.
Aby ustawić, czy aplikacja Aparatu Unity zapewni bufor głębokości systemu Windows:
Przejdź do pozycji Edytuj>ustawienia> projektuZarządzanie wtyczką XR i upewnij się, że element menu został rozwinięty.
Kliknij element menu odpowiadający wybranemu środowisku uruchomieniowemu XR, Windows Mixed Reality lub OpenXR. Ponadto upewnij się, że wybrano prawidłową platformę kompilacji, ponieważ dostępne są karty zarówno dla systemu Windows Standalone, jak i platforma uniwersalna systemu Windows.
Aby włączyć i skonfigurować:
W polu OpenXR wybierz format głębokości lub "Brak" na liście rozwijanej Tryb przesyłania głębokości .
W przypadku Windows Mixed Reality zaznacz lub usuń zaznaczenie pola wyboru Bufor głębokości udostępnionej. Następnie wybierz format z listy rozwijanej Format buforu głębokości .
Uwaga
Ogólnie zaleca się używanie buforów głębokości 16 bitów w celu zwiększenia wydajności. Jednak w przypadku korzystania z formatu głębokości 16-bitowej wymagane efekty buforu wzornika (na przykład niektóre panele przewijania interfejsu użytkownika aparatu Unity) nie będą działać, ponieważ aparat Unity nie tworzy buforu wzornika w tym ustawieniu. Wybranie 24-bitowego formatu głębokości zazwyczaj spowoduje utworzenie 8-bitowego buforu wzornika , jeśli ma to zastosowanie na platformie grafiki punktu końcowego.
Aby ustawić, czy aplikacja Aparatu Unity zapewni bufor głębokości systemu Windows:
Przejdź do pozycji Edytuj>odtwarzacz>ustawień> projektu platforma uniwersalna systemu Windows kartę>Ustawienia XR.
Rozwiń element zestawu SDK Windows Mixed Reality.
Zaznacz lub usuń zaznaczenie pola wyboru Włącz udostępnianie buforu głębokości . Ustawienie Włącz udostępnianie buforu głębokości jest domyślnie sprawdzane w nowych projektach, ale może być domyślnie niezaznaczone w starszych projektach.
Bufor głębokości może poprawić jakość wizualizacji, tak długo, jak system Windows może dokładnie mapować znormalizowane wartości głębokości na piksel w buforze głębokości z powrotem do odległości w metrach, używając bliskich i odległych płaszczyzn ustawionych w aparacie Unity na głównym aparacie. Jeśli renderowanie przekazuje wartości głębokości w typowy sposób, zwykle powinno być dobrze, choć przezroczyste renderowanie przekazuje zapis do buforu głębokości, pokazując do istniejących pikseli kolorów, może mylić projekt. Jeśli wiesz, że przebieg renderowania pozostawi wiele końcowych pikseli głębokości z niedokładnymi wartościami głębokości, prawdopodobnie uzyskasz lepszą jakość wizualizacji, usuwając zaznaczenie opcji "Włącz udostępnianie buforu głębokości".
Uwaga
Ogólnie zaleca się używanie buforów głębokości 16 bitów w celu zwiększenia wydajności. Jednak w przypadku korzystania z formatu głębokości 16-bitowej wymagane efekty buforu wzornika (na przykład niektóre panele przewijania interfejsu użytkownika aparatu Unity) nie będą działać, ponieważ aparat Unity nie tworzy buforu wzornika w tym ustawieniu. Wybranie 24-bitowego formatu głębokości zazwyczaj spowoduje utworzenie 8-bitowego buforu wzornika , jeśli ma to zastosowanie na platformie grafiki punktu końcowego.
Używanie płaszczyzn wycinków
Renderowanie zawartości zbyt blisko użytkownika może być niewygodne w rzeczywistości mieszanej. Możesz dostosować bliskie i dalekie płaszczyzny klipów w składniku Aparat.
Wybierz kamerę główną w panelu Hierarchia
W panelu Inspector (Inspektor ) znajdź składnik CameraClipping Planes (Płaszczyzny przycinania ) i zmień pole tekstowe Near z zakresu od 0.3 do 0.85. Zawartość renderowana jeszcze bliżej może prowadzić do dyskomfortu użytkownika i powinna być unikana zgodnie z wytycznymi dotyczącymi odległości renderowania.
MrTK zapewnia wbudowany system teleportowania , który automatycznie działa w przegubowych rękach i kontrolerach.
Zalecamy użycie implementacji teleportacji zestawu narzędzi MRTK.
Jeśli zdecydujesz się nie używać zestawu narzędzi MRTK, środowisko Unity udostępnia implementację teleportacji w zestawie narzędzi do interakcji XR.
Jeśli zdecydujesz się wdrożyć własne, warto pamiętać, że nie można bezpośrednio przenieść aparatu. Ze względu na kontrolę aparatu Unity nad aparatem do śledzenia głowy, należy nadać kamerze element nadrzędny w hierarchii i przenieść ten obiekt GameObject. Jest to odpowiednik playspace mrTK.
Zalecamy użycie implementacji teleportacji zestawu narzędzi MRTK.
Jeśli zdecydujesz się wdrożyć własne, warto pamiętać, że nie można bezpośrednio przenieść aparatu. Ze względu na kontrolę aparatu Unity nad aparatem do śledzenia głowy, należy nadać kamerze element nadrzędny w hierarchii i przenieść ten obiekt GameObject. Jest to odpowiednik playspace mrTK.
Tryby ponownego projektu
Zarówno HoloLens, jak i immersywne zestawy słuchawkowe przeprojektują każdą ramkę renderowaną przez aplikację w celu dostosowania pod kątem błędnego ustawienia rzeczywistej pozycji głowy użytkownika podczas emisji fotonów.
Domyślnie:
Immersyjne zestawy słuchawkowe VR będą dbać o reprojektację pozycyjną, jeśli aplikacja zapewnia bufor głębokości dla danej ramki. Immersyjne zestawy słuchawkowe dostosują również hologramy pod kątem błędnego wyrażeń zarówno w położeniu, jak i orientacji. Jeśli nie podano buforu głębokości, system poprawi tylko błędy w orientacji.
Holograficzne zestawy słuchawkowe, takie jak HoloLens 2, będą dbać o reprojektację pozycyjną, niezależnie od tego, czy aplikacja zapewnia bufor głębokości, czy nie. Reprojektacja pozycyjna jest możliwa bez buforów głębokości na urządzeniu HoloLens, ponieważ renderowanie jest często rozrzedłe ze stabilnym tłem dostarczanym przez świat rzeczywisty.
Jeśli na przykład tworzysz środowisko tylko orientacji z sztywno zablokowaną zawartością treści (na przykład 360-stopniową zawartością wideo), możesz jawnie ustawić tryb ponownego projektowania tylko na orientację, ustawiając ją na ReprojectionMode.OrientationOnly.
Jeśli na przykład tworzysz środowisko tylko orientacji z sztywną zawartością zablokowaną treścią (na przykład 360-stopniową zawartością wideo), możesz jawnie ustawić tryb ponownego projektowania na orientację tylko przez ustawienie go na HolographicReprojectionMode.OrientationOnly.
Następny punkt kontrolny programowania
Jeśli obserwujesz drogę rozwoju aparatu Unity, którą ułożyliśmy, jesteś w środku eksplorowania podstawowych bloków konstrukcyjnych zestawu NARZĘDZI MRTK. W tym miejscu możesz przejść do następnego bloku konstrukcyjnego: