Přenos aplikací HoloLens (1. generace) do HoloLens 2
Tato příručka je přizpůsobená tak, aby vývojářům pomohla s existující aplikací Unity pro HoloLens (1. generace) přenést svou aplikaci na zařízení HoloLens 2. Existují čtyři klíčové kroky pro přenos aplikace Unity HoloLens (1. generace) do HoloLens 2.
Následující části obsahují podrobné informace o jednotlivých fázích:
Krok 1 | Krok 2 | Krok 3 | Krok 4 |
---|---|---|---|
Stažení nejnovějších nástrojů | Aktualizace projektu Unity | Kompilace pro ARM | Migrace na MRTK v2 |
Požadavky
Důrazně doporučujeme, abyste před zahájením procesu přenosu uložili snímek původního stavu aplikace pomocí správy zdrojového kódu. Doporučujeme také uložit stavy kontrolních bodů v různých časech během procesu. Může být užitečné mít v Unity otevřenou další instanci původní aplikace, abyste mohli porovnat souběžné zpracování přenosu.
Poznámka:
Před přenosem se ujistěte, že máte nainstalované nejnovější nástroje pro vývoj windows Mixed Reality. U většiny stávajících vývojářů HoloLens to zahrnuje aktualizaci na nejnovější verzi sady Visual Studio 2019 a instalaci příslušné sady Windows SDK. Obsah, který následuje, se podrobněji podíváme na různé verze Unity a sadu nástrojů MIXED Reality (MRTK) verze 2.
Další informace naleznete v tématu Instalace nástrojů.
Migrace projektu na nejnovější verzi Unity
Pokud používáte MRTK v2, doporučujeme, abyste před upgradem projektu na Unity 2020.3 LTS aktualizovali na MRTK 2.7. MRTK 2.7 podporuje Unity 2018, 2019 a 2020, což vám umožní zajistit, aby byl váš projekt připravený pro Unity 2020 ještě před upgradem Unity. Vyhodnoťte všechny závislosti modulu plug-in, které v projektu aktuálně existují, a určete, jestli je možné tyto knihovny DLL sestavit pro ARM64. U projektů s pevným modulem plug-in závislým na ARM možná budete muset pokračovat v sestavování aplikace pro ARM.
Aktualizace nastavení scény nebo projektu v Unity
Po aktualizaci na Unity 2020.3 LTS doporučujeme aktualizovat konkrétní nastavení v Unity pro optimální výsledky na zařízení. Tato nastavení jsou podrobně popsaná v doporučených nastaveních pro Unity.
Aby se znovu opakovalo, skriptovací back-end .NET je v Unity 2018 zastaralý a od verze Unity 2019 se odebral. Důrazně byste měli zvážit přepnutí projektu na IL2CPP.
Poznámka:
Skriptovací back-end IL2CPP může způsobit delší dobu sestavení z Unity do sady Visual Studio. Vývojáři by měli nastavit svůj vývojářský počítač pro optimalizaci časů sestavení IL2CPP. Můžete také těžit z nastavení serveru mezipaměti, zejména pro projekty Unity s velkým množstvím prostředků (s výjimkou souborů skriptu) nebo neustálé změny scén a prostředků. Při otevírání projektu ukládá Unity opravňující prostředky do interního formátu mezipaměti na vývojářském počítači. Při změně je nutné položky znovu importovat a znovu zpracovat. Tento proces lze provést jednou, uložit na server mezipaměti a pak sdílet s ostatními vývojáři, aby ušetřil čas, a ne každý vývojář zpracovávající opětovný import nových změn místně.
Po vyřešení všech zásadních změn, které vyplývají z přechodu na aktualizovanou verzi Unity, sestavte a otestujte aktuální aplikace na HoloLensu (1. generace). Toto je vhodná doba k vytvoření a uložení potvrzení do správy zdrojového kódu.
Kompilace závislostí a modulů plug-in pro procesor ARM
HoloLens (1. generace) spouští aplikace na procesoru x86; HoloLens 2 používá procesor ARM. Stávající aplikace HoloLens je potřeba přenést, aby podporovaly ARM. Jak už jsme uvedli dříve, Unity 2018 LTS podporuje kompilaci aplikací ARM32, zatímco Unity 2019 a novější podporuje kompilaci aplikací ARM32 a ARM64. Vývoj pro aplikace ARM64 je upřednostňovaný, protože existuje podstatný rozdíl v výkonu. To ale vyžaduje, aby se pro ARM64 vytvořily také všechny závislosti modulů plug-in.
Zkontrolujte všechny závislosti knihovny DLL ve vaší aplikaci. Doporučujeme odebrat závislosti, které už pro váš projekt nepotřebujete. U zbývajících modulů plug-in, které jsou potřeba, ingestujte příslušné binární soubory ARM32 nebo ARM64 do projektu Unity.
Po ingestování příslušných knihoven DLL sestavte řešení sady Visual Studio z Unity a zkompilujte AppX pro ARM v sadě Visual Studio, abyste ověřili, že je možné aplikaci sestavit pro procesory ARM. Doporučujeme uložit aplikaci jako potvrzení v řešení správy zdrojového kódu.
Důležité
Aplikace používající MRTK v1 je možné spustit na HoloLens 2 po změně cíle sestavení na ARM za předpokladu, že jsou splněny všechny ostatní požadavky. To zahrnuje jistotu, že máte verze ARM všech modulů plug-in. Vaše aplikace ale nebude mít přístup k funkcím specifických pro HoloLens 2, jako jsou kloubové ruce a sledování očí. MRTK v1 a MRTK v2 mají různé obory názvů, které umožňují, aby obě verze byly ve stejném projektu, což je užitečné pro přechod z jedné na druhou.
Aktualizace na MRTK verze 2
MRTK verze 2 je nová sada nástrojů na platformě Unity, která podporuje HoloLens (1. generace) i HoloLens 2. Tady jsou také přidané všechny nové funkce HoloLens 2, jako jsou interakce rukou a sledování očí.
Další informace o používání MRTK verze 2 najdete v následujících zdrojích informací:
Příprava pro migraci
Před ingestováním nových souborů *.unitypackage pro MRTK v2 doporučujeme inventarizaci (1) jakéhokoli vlastního integrovaného kódu, který se integruje s MRTK v1, a (2) veškerý vlastní kód pro vstupní interakce nebo komponenty uživatelského rozhraní. Nejběžnější a nejběžnější konflikt pro vývojáře hybridní reality ingestující MRTK v2 zahrnuje vstupy a interakce. Doporučujeme zkontrolovat vstupní model MRTK v2.
Nový MRTK v2 se nakonec přešel z modelu skriptů a objektů správce scén na architekturu zprostředkovatele konfigurace a služeb. Výsledkem je čistější hierarchie scén a model architektury, ale vyžaduje křivku učení pro pochopení nových konfiguračních profilů. Přečtěte si průvodce konfigurací sady nástrojů Mixed Reality a seznamte se s důležitými nastaveními a profily, které musíte upravit podle potřeb vaší aplikace.
Migrace projektu
Po importu MRTK v2 má váš projekt Unity pravděpodobně mnoho chyb souvisejících s kompilátorem. To jsou běžné kvůli nové struktuře oboru názvů a názvů komponent. Pokračujte v řešení těchto chyb úpravou skriptů na nové obory názvů a komponenty.
Informace o konkrétních rozdílech rozhraní API mezi HTK/MRTK a MRTK v2 najdete v průvodci přenosem na wikiwebu MRTK verze 2.
Osvědčené postupy
- Předávejte přednost standardnímu shaderu MRTK.
- Pracujte na jednom typu zásadní změny najednou (příklad: IFocusable na IMixedRealityFocusHandler).
- Otestujte po každé změně a použijte správu zdrojového kódu.
- Pokud je to možné, použijte výchozí uživatelské rozhraní MRTK (tlačítka, slate a tak dále).
- Neupravujte soubory MRTK přímo; vytvářet obálky kolem součástí MRTK.
- Tato akce usnadňuje budoucí příjem a aktualizace MRTK.
- Projděte si a prozkoumejte ukázkové scény poskytované v MRTK, zejména HandInteractionExamples.scene.
- Znovu sestavte uživatelské rozhraní založené na plátně pomocí čtyřúhelníků, kolidátorů a textu TextMeshPro.
- Povolte sdílení hloubkové vyrovnávací paměti nebo nastavte fokus; pro lepší výkon použijte 16bitovou vyrovnávací paměť hloubky. Zajistěte, aby se při vykreslení barvy vykreslovat také hloubka. Unity obecně nepíše hloubku pro průhledné a textové herní objekty.
- Vyberte vykreslování s jednou instancí průchodu.
- Použití konfiguračního profilu HoloLens 2 pro MRTK
Testování aplikace
Ve verzi 2 MRTK můžete simulovat interakce rukou přímo v Unity a vyvíjet pomocí nových rozhraní API pro interakce rukou a sledování očí. Zařízení HoloLens 2 se vyžaduje k vytvoření vyhovujícího uživatelského prostředí. Doporučujeme si prostudovat dokumentaci a nástroje, abyste lépe porozuměli. MRTK v2 podporuje vývoj v HoloLensu (1. generace) a tradiční vstupní modely, jako je například "select via air-tap", je možné testovat na HoloLens (1. generace).
Aktualizace modelu interakce pro HoloLens 2
Upozornění
Pokud váš projekt používá některý z XR. Rozhraní WSA API, všimněte si, že tato rozhraní jsou postupně ve prospěch nových vstupních rozhraní API XR Unity v budoucích verzích Unity. Další informace o vstupních rozhraních API XR najdete tady.
Jakmile se aplikace portuje a předpovědí pro HoloLens 2, můžete zvážit aktualizaci umístění modelu interakce a návrhu hologramu. V HoloLensu (1. generace) má vaše aplikace pravděpodobně pohled a potvrzení modelu interakce s hologramy relativně daleko, aby se vešla do pole zobrazení.
Aktualizace návrhu aplikace tak, aby byla nejvhodnější pro HoloLens 2:
- Komponenty MRTK: V případě, že jste přidali MRTK v2, existují různé komponenty a skripty, které jsou navržené a optimalizované pro HoloLens 2.
- Model interakce: Zvažte aktualizaci modelu interakce. Ve většině scénářů doporučujeme přepnout z pohledu a potvrzení rukou. Některé hologramy můžou být mimo dosah ruky a přepnutí na ruce vede k dalekou interakci ukazující paprsky a gesta.
- Umístění hologramu: Po přepnutí na model interakce rukou zvažte přesunutí některých hologramů blíž, aby s nimi uživatelé mohli přímo pracovat pomocí gest při téměř interakci s rukama. Typy hologramů, které se mají blížit k přímému uchopování nebo interakci, jsou:
- malé cílové nabídky
- ovládací prvky
- tlačítka
- menší hologramy, které se při chytání a kontrole vejdou do pole Zobrazení HoloLens 2.
Aplikace a scénáře se liší; budeme dál upřesňovat a publikovat pokyny k návrhu na základě zpětné vazby a dalšího učení.
Další tipy pro přesun aplikací z x86 do ARM
Jednoduché aplikace Unity jsou jednoduché, protože můžete sestavit sadu aplikací ARM nebo nasadit přímo do zařízení, aby sada běžela. Některé nativní moduly plug-in Unity můžou představovat určité problémy s vývojem. Z tohoto důvodu musíte upgradovat všechny nativní moduly plug-in Unity na Visual Studio 2019 a pak znovu sestavit pro ARM.
Jedna aplikace používala modul plug-in Unity AudioKinetic Wwise. Verze Unity, která se používá, neměla modul plug-in ARM pro UPW a došlo k značnému úsilí o přepracování zvukových schopností v příslušné aplikaci, aby běžela na ARM. Ujistěte se, že jsou všechny požadované moduly plug-in pro vaše vývojové plány nainstalované a dostupné v Unity.
V některých případech nemusí modul plug-in UPW/ARM existovat pro moduly plug-in vyžadované aplikací, které blokuje možnost portovat aplikaci a spouštět ji na HoloLens 2. Pokud chcete tento problém vyřešit, obraťte se na poskytovatele modulu plug-in a požádejte ho o podporu ARM.
Minfloat (a varianty jako min16float, minint atd.) ve shaderech se můžou u HoloLens 2 chovat odlišně než u HoloLensu (1. generace). Konkrétně tyto záruky, že se použije alespoň zadaný počet bitů. U grafických procesorů Intel/Nvidia se minfloaty z velké části považují za 32 bitů. V ARM je zadaný počet bitů ve skutečnosti dodržen. V praxi mohou mít tato čísla menší přesnost nebo rozsah na HoloLensu 2, než tomu bylo u HoloLens (1. generace).
Pokyny _asm nefungují na ARM, což znamená, že se musí přepsat žádný kód používající _asm instrukce.
ARM nepodporuje instrukční sadu SIMD, protože pro ARM nejsou k dispozici různé hlavičky, například xmmintrin.h, emmintrin.h, tmmintrin.h a immintrin.h.
Kompilátor shaderu na ARM se spustí během prvního volání kreslení po načtení shaderu nebo na něco, na čem se shader spoléhá, se změnil, a ne v době načítání shaderu. Dopad na framerate může být patrný v závislosti na tom, kolik shaderů je potřeba zkompilovat, s důsledky pro zpracování, zabalení a aktualizaci shaderů v HoloLens 2 vs HoloLens (1. generace).