Kiedy nosisz zestaw słuchawkowy rzeczywistości mieszanej, staje się centrum świata holograficznego. Składnik aparatu Unity automatycznie obsłuży renderowanie stereoskopowe i postępuje zgodnie z ruchem głowy i rotacją. Jednak aby w pełni zoptymalizować jakość wizualizacji i stabilność hologramu, należy ustawić ustawienia aparatu opisane poniżej.
Urządzenia HoloLens a immersyjne zestawy nagłowne VR
Domyślne ustawienia w składniku aparatu aparatu Unity są przeznaczone dla tradycyjnych aplikacji 3D, które wymagają tła przypominającego skybox, ponieważ nie mają prawdziwego świata.
Podczas uruchamiania na immersywnym zestawie słuchawkowym renderujesz wszystko, co widzi użytkownik, więc prawdopodobnie zechcesz zachować skybox.
Jednak podczas uruchamiania na zestawie słuchawkowym holograficznego, 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 Aparatu 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 to na podstawie kodu, możesz użyć aparatu Unity Color.clear
Kod skryptu można użyć do określenia w czasie wykonywania, czy zestaw słuchawkowy jest immersywny, czy holograficzne, sprawdzając displayOpaque na aktywnie uruchomionyM środowisku XRDisplaySubsystem.
Kod skryptu można użyć do określenia w czasie wykonywania, czy zestaw słuchawkowy jest immersywny, czy holograficzne, sprawdzając HolographicSettings.IsDisplayOpaque.
Konfiguracja aparatu
Niezależnie od tego, jakiego rodzaju doświadczenia opracowujesz, aparat główny jest zawsze podstawowym składnikiem renderowania stereo dołączonym do wyświetlacza zamontowanego na głowie urządzenia. Jeśli wyobrażasz sobie pozycję początkową użytkownika jako (X: 0, Y: 0, Z: 0, Z: 0, Z: 0). Ponieważ kamera główna śledzi ruch głowy użytkownika, można ustawić pozycję początkową użytkownika, ustawiając pozycję początkową kamery głównej.
Głównym wyborem, który musisz zrobić, jest to, czy opracowujesz zestawy nagłowne HoloLens, czy VR immersyjne zestawy słuchawkowe. Po zakończeniu tej pracy przejdź do sekcji konfiguracji, która ma zastosowanie.
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życie niezwiązanego miejsca w celu zmaksymalizowania stabilności i utworzenia 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. Można również pracować bezpośrednio z klasą MixedRealityPlayspace z zestawu NARZĘDZI MRTK dla aparatu Unity i ustawić skalę docelową na świat:
MrTK powinien obsługiwać położenie przestrzeni odtwarzania i kamery automatycznie, ale dobrze jest dokładnie sprawdzić:
W panelu Hierarchia rozwiń obiekt podrzędny MixedRealityPlayspace GameObject i znajdź obiekt podrzędny Main Camera
Na 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, co działa lepiej z kotwicami i ARKit/ARCore.
Ważne
Sesja AR i powiązane funkcje wymagają zainstalowania programu AR Foundation.
Istnieje również możliwość ręcznego zastosowania zmian aparatu bez korzystania z arsesji:
Wybierz pozycję Aparat główny w panelu Hierarchia
Na 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 trackedPoseDriver do kamery głównej
Wybierz pozycję Aparat główny w panelu Hierarchia
Na 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 ustawienia w ustawieniach odtwarzacza Sklepu Windows
Wybierz pozycję Windows Mixed Reality jako urządzenie, które może być wyświetlane jako Windows Holographic w starszych wersjach aparatu Unity
Wybierz pozycję Obsługiwana rzeczywistość wirtualna
Ponieważ obiekt Main Camera jest automatycznie oznaczony jako aparat fotograficzny, 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 aparacie Unity będzie ona zawierać główny obiekt GameObject aparatu w hierarchii, który zawiera składnik Aparat fotograficzny, ale może nie mieć poprawnie zastosowanych ustawień.
Konfiguracja kamery VR
Usługa Windows Mixed Reality obsługuje aplikacje w szerokim zakresie skalowania środowiska— 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 w skali światowej, które pozwalają użytkownikom przejść poza 5 metrów, eksplorując całe piętro budynku i nie tylko.
Pierwszym krokiem w tworzeniu środowiska rzeczywistości mieszanej w środowisku Unity jest określenie, które środowisko będzie skalowane dla aplikacji:
Jeśli tworzysz aplikację HL2, zalecamy utworzenie środowiska na poziomie oczu lub rozważ użycie usługi Scene Understanding , aby zrozumieć podłogę sceny.
Przejdź do sekcji Inne ustawienia w ustawieniach odtwarzacza Sklepu Windows
Wybierz pozycję Windows Mixed Reality jako urządzenie, które może być wyświetlane jako Windows Holographic w starszych wersjach aparatu Unity
Wybierz pozycję Obsługiwana rzeczywistość wirtualna
Ponieważ obiekt Main Camera jest automatycznie oznaczony jako aparat fotograficzny, 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 aparacie Unity będzie ona zawierać główny obiekt GameObject aparatu w hierarchii, który zawiera składnik Aparatu, ale nie ma odpowiednich ustawień poniżej.
Przestrzeń nazw:UnityEngine.XR Typ: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 użycie etapu przestrzennego, 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 systemem współrzędnych świata 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 parametr 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 właściwość 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ż fałsz zwracana wartość nie jest powszechna, może się zdarzyć, jeśli 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 skonfigurowaniu typu przestrzeni śledzenia roomScale zawartość umieszczona na płaszczyźnie y=0 będzie wyświetlana na podłodze. Początek 0, 0, 0 będzie konkretnym miejscem na podłodze, w którym użytkownik stał podczas konfiguracji pomieszczenia, z -Z reprezentującym kierunek przodu, z którym mieli do czynienia podczas instalacji.
Przejdź do sekcji Inne ustawienia w ustawieniach odtwarzacza Sklepu Windows
Wybierz pozycję Windows Mixed Reality jako urządzenie, które może być wyświetlane jako Windows Holographic w starszych wersjach aparatu Unity
Wybierz pozycję Obsługiwana rzeczywistość wirtualna
Ponieważ obiekt Main Camera jest automatycznie oznaczony jako aparat fotograficzny, 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 aparacie Unity będzie ona zawierać główny obiekt GameObject aparatu w hierarchii, który zawiera składnik Aparatu, ale nie ma odpowiednich ustawień poniżej.
Przestrzeń nazw:UnityEngine.XR Typ:XRDevice
Aby utworzyć środowisko skalowania tylko do orientacji lub siedzenia, należy ustawić aparat Unity na typ przestrzeni śledzenia stacjonarnego. Stacjonarne śledzenie kosmosu 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) będzie wyświetlana przed użytkownikiem po uruchomieniu aplikacji.
W przypadku czystego środowiska tylko orientacji, takiego jak przeglądarka wideo 360 stopni (gdzie aktualizacje pozycyjne głowy zrujnowałyby iluzję), można następnie ustawić XR. InputTracking.disablePositionalTracking ma wartość true:
InputTracking.disablePositionalTracking = true;
Aby umożliwić użytkownikowi późniejsze ostatnie miejsce miejsca, możesz wywołać XR. InputTracking.Recenter, metoda:
Jeśli używasz zestawu NARZĘDZI MRTK, tło aparatu jest automatycznie konfigurowane i zarządzane. W przypadku projektów XR SDK lub Legacy WSA zalecamy ustawienie tła aparatu na stałe czarne na urządzeniu HoloLens i utrzymanie skyboxu dla vr.
Korzystanie z wielu aparatów
Jeśli na scenie znajduje się wiele składników aparatu, aparat Unity wie, który aparat ma być używany do renderowania stereoskopowego na podstawie obiektu GameObject ma tag 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 głębokości
Udostępnianie buforu głębokości aplikacji do systemu Windows w każdej klatce zapewni aplikacji jeden z dwóch impulsów w stabilności hologramu na podstawie typu zestawu słuchawkowego, dla którego renderujesz:
Immersyjne zestawy nagłowne VR mogą dbać o reprodukcję pozycyjną, gdy jest dostarczany bufor głębokości, dostosowując hologramy pod kątem błędnego uwzględnienia zarówno położenia, jak i orientacji.
Zestawy nagłowne HoloLens mają kilka różnych metod. Urządzenie HoloLens 1 automatycznie wybiera punkt koncentracji uwagi po udostępnieniu buforu głębokości, optymalizując stabilność hologramu wzdłuż płaszczyzny, która przecina największą zawartość. Urządzenie HoloLens 2 ustabilizuje zawartość przy użyciu głębokości LSR (patrz uwagi).
Okno dialogowe konfiguracji zestawu narzędzi MRTK podejmie próbę ustawienia buforu głębokości dla zestawu SDK XR i starszej wersji usługi WSA, ale dobrze jest 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>projektu Zarządzanie wtyczką XR i upewnij się, że element menu został rozszerzony.
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 autonomicznego systemu Windows, jak i platforma uniwersalna systemu Windows.
Aby włączyć i skonfigurować:
W polu OpenXR wybierz format głębokości lub pozycję "Brak" na liście rozwijanej Tryb przesyłania głębokości.
W przypadku środowiska 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 głębokości 16 bitów w celu zwiększenia wydajności. Jeśli jednak używasz 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 bufora wzornika w tym ustawieniu. Wybranie formatu głębokości 24-bitowej 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 karcie>Ustawienia XR.
Rozwiń element zestawu WINDOWS Mixed Reality SDK.
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 mogło zostać 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 dalekich płaszczyzn ustawionych w aparacie głównym aparatu Unity. Jeśli renderowanie przechodzi do obsługi wartości głębokości w typowy sposób, zazwyczaj powinno być w tym miejscu, choć przezroczyste renderowanie przekazuje zapis do buforu głębokości podczas wyświetlania do istniejących pikseli kolorów może mylić ponowne projekty. Jeśli wiesz, że przebiegi 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 pola wyboru "Włącz udostępnianie buforu głębokości".
Uwaga
Ogólnie zaleca się używanie głębokości 16 bitów w celu zwiększenia wydajności. Jeśli jednak używasz 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 bufora wzornika w tym ustawieniu. Wybranie formatu głębokości 24-bitowej 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 Camera Clipping Planes (Płaszczyzny wycinków aparatu) i zmień pole tekstowe Near (Blisko) z 0.3 na 0.85. Zawartość renderowana jeszcze bliżej może prowadzić do dyskomfortu użytkownika i należy unikać zgodnie z wytycznymi dotyczącymi odległości renderowania.
Zestaw 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, aparat Unity udostępnia implementację teleportacji w zestawie narzędzi XR Interaction Toolkit.
Jeśli zdecydujesz się zaimplementować własne, warto pamiętać, że nie można bezpośrednio przenieść aparatu. Ze względu na kontrolę aparatu Unity pod kątem śledzenia głowy należy nadać aparatowi nadrzędne w hierarchii i przenieść ten obiekt GameObject. Jest to odpowiednik playspace zestawu NARZĘDZI MRTK.
Zalecamy użycie implementacji teleportacji zestawu narzędzi MRTK.
Jeśli zdecydujesz się zaimplementować własne, warto pamiętać, że nie można bezpośrednio przenieść aparatu. Ze względu na kontrolę aparatu Unity pod kątem śledzenia głowy należy nadać aparatowi nadrzędne w hierarchii i przenieść ten obiekt GameObject. Jest to odpowiednik playspace zestawu NARZĘDZI MRTK.
Tryby ponownego projektu
Zarówno holoLens, jak i immersyjne zestawy nagłowne przeprojektują każdą ramkę renderowaną przez aplikację, aby dostosować się do wszelkich błędów w rzeczywistej pozycji głowy użytkownika, gdy fotony są emitowane.
Domyślnie:
Immersyjne zestawy nagłowne VR będą dbać o reprojektację pozycyjną, jeśli aplikacja zapewnia bufor głębokości dla danej ramki. Immersyjne zestawy nagłowne dostosują również hologramy pod kątem błędnejpredykcji zarówno w położeniu, jak i orientacji. Jeśli nie podano buforu głębokości, system poprawi tylko błędy w orientacji.
Zestawy nagłowne holograficzne, takie jak HoloLens 2, będą dbać o reprojektację pozycyjną, niezależnie od tego, czy aplikacja zapewnia bufor głębokości, czy nie. Reprojektowanie pozycyjne jest możliwe bez głębokości na urządzeniu HoloLens, ponieważ renderowanie jest często rozrzedłe ze stabilnym tłem udostępnianym przez rzeczywisty świat.
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 ReprojectionMode.OrientationOnly.
Jeśli na przykład tworzysz środowisko tylko orientacji z sztywno zablokowaną treścią (na przykład zawartość wideo 360 stopni), możesz jawnie ustawić tryb ponownego projektowania na orientację tylko przez ustawienie go na HolographicReprojectionMode.OrientationOnly.
Następny punkt kontrolny programowania
Jeśli śledzisz określoną podróż do opracowywania aparatu Unity, jesteś w środku eksplorowania podstawowych bloków konstrukcyjnych zestawu narzędzi MRTK. W tym miejscu możesz przejść do następnego bloku konstrukcyjnego: