Udostępnij za pośrednictwem


Przenoszenie aplikacji HoloLens (1. generacji) do urządzenia HoloLens 2

Ten przewodnik jest dostosowany do potrzeb deweloperów z istniejącą aplikacją aparatu Unity dla urządzenia HoloLens (1. generacji) i jego aplikacją na urządzeniu HoloLens 2. Istnieją cztery kluczowe kroki przenoszenia aplikacji Aparatu Unity urządzenia HoloLens (1. generacji) do urządzenia HoloLens 2.

Poniższe sekcje zawierają szczegółowe informacje dotyczące każdego etapu:

Krok 1 Krok 2 Krok 3 Krok 4
Logo Visual Studio Logo aparatu Unity Ikona aparatu Unity Logo zestawu narzędzi MRTK
Pobieranie najnowszych narzędzi Aktualizowanie projektu aparatu Unity Kompilowanie dla usługi ARM Migrowanie do zestawu narzędzi MRTK w wersji 2

Wymagania wstępne

Zdecydowanie zalecamy użycie kontroli źródła w celu zapisania migawki oryginalnego stanu aplikacji przed rozpoczęciem procesu przenoszenia. Zalecamy również zapisywanie stanów punktów kontrolnych w różnych momentach procesu. Przydatne może okazać się otwarcie innego wystąpienia oryginalnej aplikacji w środowisku Unity, aby można było porównać je obok siebie podczas procesu przenoszenia.

Uwaga

Przed rozpoczęciem przenoszenia upewnij się, że masz zainstalowane najnowsze narzędzia do programowania w środowisku Windows Mixed Reality. W przypadku większości istniejących deweloperów urządzenia HoloLens obejmuje to aktualizację do najnowszej wersji programu Visual Studio 2019 i zainstalowanie odpowiedniego zestawu Windows SDK. Zawartość, która zawiera dalsze informacje na temat różnych wersji aparatu Unity i zestawu narzędzi Mixed Reality Toolkit (MRTK) w wersji 2.

Aby uzyskać więcej informacji, zobacz Instalowanie narzędzi.

Migrowanie projektu do najnowszej wersji aparatu Unity

Jeśli używasz zestawu NARZĘDZI MRTK w wersji 2, zalecamy aktualizację do zestawu NARZĘDZI MRTK 2.7 przed uaktualnieniem projektu do wersji Unity 2020.3 LTS. Zestaw MRTK 2.7 obsługuje aparaty Unity 2018, 2019 i 2020, co pozwala zagwarantować, że projekt jest gotowy do korzystania z aparatu Unity 2020 jeszcze przed uaktualnieniem aparatu Unity. Oceń wszystkie zależności wtyczki , które obecnie istnieją w projekcie, i ustal, czy te biblioteki DLL można skompilować dla usługi ARM64. W przypadku projektów z twardą wtyczką zależną od usługi ARM może być konieczne kontynuowanie kompilowania aplikacji dla usługi ARM.

Aktualizowanie ustawień sceny/projektu w środowisku Unity

Po zaktualizowaniu do wersji Unity 2020.3 LTS zalecamy zaktualizowanie określonych ustawień aparatu Unity w celu uzyskania optymalnych wyników na urządzeniu. Te ustawienia zostały szczegółowo opisane w obszarze zalecanych ustawień aparatu Unity.

Aby powtórzyć, zaplecze skryptów platformy .NET jest przestarzałe w środowisku Unity 2018 i usunięte z wersji Unity 2019. Zdecydowanie należy rozważyć przełączenie projektu na IL2CPP.

Uwaga

Zaplecze skryptów IL2CPP może powodować dłuższe czasy kompilacji z aparatu Unity do programu Visual Studio. Deweloperzy powinni skonfigurować maszynę deweloperów do optymalizacji czasów kompilacji IL2CPP. Możesz również skorzystać z konfigurowania serwera pamięci podręcznej, zwłaszcza w przypadku projektów aparatu Unity z dużą ilością zasobów (z wyłączeniem plików skryptów) lub stale zmieniających się scen i zasobów. Podczas otwierania projektu aparat Unity przechowuje kwalifikujące się zasoby do wewnętrznego formatu pamięci podręcznej na maszynie dewelopera. Elementy muszą zostać ponownie zaimportowane i ponownie przetworzone po zmodyfikowaniu. Ten proces można wykonać raz, zapisać na serwerze pamięci podręcznej, a następnie udostępnić innym deweloperom, aby zaoszczędzić czas, w przeciwieństwie do każdego dewelopera przetwarzający ponowne importowanie nowych zmian lokalnie.

Po rozwiązaniu wszelkich zmian powodujących niezgodność, które wynikają z przejścia do zaktualizowanej wersji aparatu Unity, skompiluj i przetestuj bieżące aplikacje na urządzeniu HoloLens (1. generacji). Jest to dobry moment na utworzenie i zapisanie zatwierdzenia w kontroli źródła.

Kompilowanie zależności/wtyczek dla procesora ARM

Urządzenie HoloLens (1. generacji) wykonuje aplikacje na procesorze x86; Urządzenie HoloLens 2 używa procesora ARM. Aby obsługiwać usługę ARM, należy przenosić istniejące aplikacje HoloLens. Jak wspomniano wcześniej, środowisko Unity 2018 LTS obsługuje kompilowanie aplikacji ARM32, podczas gdy aparat Unity 2019 lub nowszy obsługuje kompilowanie aplikacji ARM32 i ARM64. Tworzenie aplikacji ARM64 jest preferowane, ponieważ istnieje istotnych różnic w wydajności. Wymaga to jednak skompilowania wszystkich zależności wtyczki dla usługi ARM64.

Przejrzyj wszystkie zależności bibliotek DLL w aplikacji. Zalecamy usunięcie zależności, które nie są już potrzebne dla projektu. W przypadku pozostałych wtyczek, które są wymagane, należy pozyskać odpowiednie pliki binarne ARM32 lub ARM64 w projekcie aparatu Unity.

Po pozyskiwaniu odpowiednich bibliotek DLL skompiluj rozwiązanie programu Visual Studio z poziomu aparatu Unity i skompiluj aplikację AppX for ARM w programie Visual Studio, aby sprawdzić, czy aplikacja może być utworzona dla procesorów ARM. Zalecamy zapisanie aplikacji jako zatwierdzenia w rozwiązaniu kontroli źródła.

Ważne

Aplikacje korzystające z zestawu MRTK w wersji 1 można uruchamiać na urządzeniu HoloLens 2 po zmianie celu kompilacji na arm, przy założeniu, że zostaną spełnione wszystkie inne wymagania. Obejmuje to upewnienie się, że masz wersje arm wszystkich wtyczek. Jednak Twoja aplikacja nie będzie miała dostępu do funkcji specyficznych dla urządzenia HoloLens 2, takich jak przegubowe śledzenie ręki i oczu. Zestaw NARZĘDZI MRTK w wersji 1 i MRTK w wersji 2 mają różne przestrzenie nazw, które umożliwiają korzystanie z obu wersji w tym samym projekcie, co jest przydatne do przejścia z jednego do drugiego.

Aktualizacja do zestawu narzędzi MRTK w wersji 2

Zestaw narzędzi MRTK w wersji 2 to nowy zestaw narzędzi na platformie Unity, który obsługuje urządzenia HoloLens (1. generacji) i HoloLens 2. Jest to również miejsce, w którym dodano wszystkie nowe możliwości urządzenia HoloLens 2, takie jak interakcje z rękami i śledzenie oczu.

Aby uzyskać więcej informacji na temat korzystania z zestawu narzędzi MRTK w wersji 2, zapoznaj się z następującymi zasobami:

Przygotowywanie do migracji

Przed pozyskiwaniem nowych plików *.unitypackage dla zestawu narzędzi MRTK w wersji 2 zalecamy utworzenie spisu (1) dowolnego niestandardowego kodu integrjącego się z zestawem NARZĘDZI MRTK w wersji 1 i (2) dowolnego niestandardowego kodu na potrzeby interakcji wejściowych lub składników środowiska użytkownika. Najczęstszy i rozpowszechniony konflikt dla dewelopera rzeczywistości mieszanej pozyskiwania zestawu narzędzi MRTK w wersji 2 obejmuje dane wejściowe i interakcje. Zalecamy przejrzenie modelu wejściowego zestawu narzędzi MRTK w wersji 2.

Na koniec nowy zestaw NARZĘDZI MRTK v2 przeszedł z modelu skryptów i obiektów menedżera sceny do architektury dostawcy konfiguracji i usług. Powoduje to bardziej czytelną hierarchię scen i model architektury, ale wymaga krzywej uczenia się w celu zrozumienia nowych profilów konfiguracji. Przeczytaj przewodnik konfiguracji zestawu narzędzi Mixed Reality Toolkit, aby rozpocząć zapoznanie się z ważnymi ustawieniami i profilami, które należy dostosować do potrzeb aplikacji.

Migrowanie projektu

Po zaimportowaniu zestawu narzędzi MRTK w wersji 2 projekt aparatu Unity najprawdopodobniej zawiera wiele błędów związanych z kompilatorem. Są one typowe ze względu na nową strukturę przestrzeni nazw i nazwy składników. Kontynuuj rozwiązywanie tych błędów, modyfikując skrypty w nowych przestrzeniach nazw i składnikach.

Aby uzyskać informacje na temat konkretnych różnic interfejsu API między zestawem HTK/MRTK i zestawem narzędzi MRTK w wersji 2, zobacz przewodnik przenoszenia w witrynie typu wiki zestawu narzędzi MRTK w wersji 2.

Najlepsze rozwiązania

  • Nadaj priorytet standardowemu cieniatorowi zestawu narzędzi MRTK.
  • Pracuj nad jednym typem zmiany powodującej niezgodność naraz (na przykład: IFocusable to IMixedRealityFocusHandler).
  • Przetestuj po każdej zmianie i użyj kontroli źródła.
  • Użyj domyślnego środowiska użytkownika zestawu narzędzi MRTK (przycisków, slates itd.), jeśli jest to możliwe.
  • Powstrzymaj się od bezpośredniego modyfikowania plików MRTK; tworzenie otoek wokół składników zestawu narzędzi MRTK.
    • Ta akcja ułatwia pozyskiwanie i aktualizacje zestawu narzędzi MRTK.
  • Przejrzyj i zapoznaj się z przykładowymi scenami podanymi w zestawie narzędzi MRTK, zwłaszcza HandInteractionExamples.scene.
  • Skompiluj interfejs użytkownika oparty na kanwie za pomocą czworokątów, zderzaków i tekstu TextMeshPro.
  • Włącz udostępnianie buforu głębokości lub ustaw punkt koncentracji uwagi; aby uzyskać lepszą wydajność, użyj buforu głębokości 16-bitowej. Upewnij się, że podczas renderowania koloru renderowana jest również głębokość renderowania. Aparat Unity zazwyczaj nie zapisuje głębi dla obiektów gameobject przezroczystych i tekstowych.
  • Wybierz pozycję Renderowanie pojedynczego wystąpienia z przekazywaniem.
  • Korzystanie z profilu konfiguracji urządzenia HoloLens 2 dla zestawu narzędzi MRTK

Testowanie aplikacji

W zestawie narzędzi MRTK w wersji 2 można symulować interakcje ręczne bezpośrednio w afiszacie Unity i opracowywać za pomocą nowych interfejsów API na potrzeby interakcji z rękami i śledzenia oczu. Urządzenie HoloLens 2 jest wymagane do utworzenia satysfakcjonującego środowiska użytkownika. Zalecamy zapoznanie się z dokumentacją i narzędziami w celu lepszego zrozumienia. Zestaw MRTK w wersji 2 obsługuje programowanie na urządzeniu HoloLens (1. generacji) i tradycyjne modele wejściowe, takie jak "select via air-tap", można przetestować na urządzeniu HoloLens (1. generacji).

Aktualizowanie modelu interakcji dla urządzenia HoloLens 2

Uwaga

Jeśli projekt korzysta z dowolnego Z XR. Interfejsy API usługi WSA należy pamiętać, że są one wycofywane na rzecz nowych interfejsów API wejściowych XR aparatu Unity w przyszłych wersjach aparatu Unity. Więcej informacji na temat interfejsów API wejściowych XR można znaleźć tutaj.

Po porcie aplikacji i wstępnie przygotowanej dla urządzenia HoloLens 2 możesz rozważyć zaktualizowanie modelu interakcji i umieszczania projektów hologramu. W urządzeniu HoloLens (1. generacji) aplikacja prawdopodobnie ma model interakcji wzroku i zatwierdzania z hologramami stosunkowo daleko, aby zmieścić się w polu widoku.

Aby zaktualizować projekt aplikacji, aby najlepiej pasował do urządzenia HoloLens 2:

  1. Składniki zestawu narzędzi MRTK: w przypadku dodania zestawu narzędzi MRTK w wersji 2 istnieją różne składniki/skrypty do wykorzystania, które zostały zaprojektowane i zoptymalizowane pod kątem urządzenia HoloLens 2.
  2. Model interakcji: rozważ zaktualizowanie modelu interakcji. W przypadku większości scenariuszy zalecamy przejście z spojrzenia i zatwierdzenie na ręce. Niektóre hologramy mogą być poza zasięgiem ramienia i przełączanie się na ręce powoduje daleko idącą interakcję wskazującą promienie i chwytając gesty.
  3. Umieszczanie hologramu: po przejściu na model interakcji z rękami rozważ przeniesienie niektórych hologramów bliżej, aby użytkownicy mogli bezpośrednio z nimi korzystać przy użyciu gestów niemal interakcji z rękami. Typy hologramów, z którymi można się zbliżyć do bezpośredniego chwytania lub interakcji, to:
  • małe menu docelowe
  • kontrolki
  • przyciski
  • mniejsze hologramy, które po chwyceniu i sprawdzeniu mieszczą się w polu HoloLens 2 widoku.

Aplikacje i scenariusze różnią się; Będziemy nadal uściślić i publikować wskazówki dotyczące projektowania na podstawie opinii i dalszych szkoleń.

Dodatkowe porady dotyczące przenoszenia aplikacji z architektury x86 do usługi ARM

  • Proste aplikacje aparatu Unity są proste, ponieważ można utworzyć pakiet aplikacji ARM lub wdrożyć go bezpośrednio na urządzeniu, aby pakiet był uruchamiany. Niektóre wtyczki natywne aparatu Unity mogą stanowić pewne wyzwania programistyczne. W związku z tym należy uaktualnić wszystkie wtyczki natywne aparatu Unity do programu Visual Studio 2019, a następnie ponownie skompilować dla usługi ARM.

  • Jedna aplikacja użyła wtyczki Unity AudioKinetic Wwise. Wersja aparatu Unity w użyciu nie miała wtyczki usługi ARM platformy UNIWERSALNEJ systemu Windows i nastąpił znaczny wysiłek, aby przerobić możliwości dźwięku w danej aplikacji w celu uruchomienia jej w usłudze ARM. Upewnij się, że wszystkie wymagane wtyczki dla planów programowania są zainstalowane i dostępne w środowisku Unity.

  • W niektórych przypadkach wtyczka platformy UWP/ARM może nie istnieć dla wtyczek wymaganych przez aplikację, co blokuje możliwość przenoszenia aplikacji i uruchamiania jej na urządzeniu HoloLens 2. Skontaktuj się z dostawcą wtyczki, aby rozwiązać ten problem i zapewnić pomoc techniczną dla usługi ARM.

  • Minfloat (i warianty, takie jak min16float, minint itd.) w cieniowaniach mogą zachowywać się inaczej na urządzeniu HoloLens 2 niż na urządzeniu HoloLens (1. generacji). W szczególności gwarantuje to, że będzie używana co najmniej określona liczba bitów. Na procesorach GPU Intel/Nvidia minfloats są w dużej mierze traktowane jako 32 bity. W usłudze ARM określona liczba bitów jest rzeczywiście zgodna. W praktyce te liczby mogą mieć mniejszą precyzję lub zakres na urządzeniu HoloLens 2 niż w urządzeniu HoloLens (1. generacji).

  • Instrukcje _asm nie wydają się działać w usłudze ARM, co oznacza, że każdy kod korzystający z instrukcji _asm musi zostać przepisany.

  • Usługa ARM nie obsługuje zestawu instrukcji SIMD, ponieważ różne nagłówki, takie jak xmmintrin.h, emmintrin.h, tmmintrin.h i immintrin.h, nie są dostępne w usłudze ARM.

  • Kompilator cieniowania w usłudze ARM jest uruchamiany podczas pierwszego wywołania rysowania po załadowaniu cieniowania lub coś, na czym polega cieniowanie, uległo zmianie, a nie w czasie ładowania cieniowania. Wpływ na szybkość klatek może być zauważalny, w zależności od liczby cieniowania, które należy skompilować, co ma mieć wpływ na sposób obsługi cieniowania, spakowania i aktualizowania w inny sposób na urządzeniach HoloLens 2 i HoloLens (1. generacji).

Zobacz też