Share via


HoloLens-apps (1e generatie) overzetten naar HoloLens 2

Deze handleiding is afgestemd op ontwikkelaars met een bestaande Unity-toepassing voor HoloLens -poort (1e generatie) naar het HoloLens 2-apparaat. Er zijn vier belangrijke stappen voor het overzetten van een HoloLens -toepassing (1e gen) Unity naar HoloLens 2.

De onderstaande secties bevatten gedetailleerde informatie voor elke fase:

Stap 1 Stap 2 Stap 3 Stap 4
Logo van Visual Studio Unity-logo Unity-pictogram MRTK-logo
Nieuwste hulpprogramma's downloaden Unity-project bijwerken Compileren voor ARM Migreren naar MRTK v2

Vereisten

U wordt ten zeerste aangeraden broncodebeheer te gebruiken om een momentopname op te slaan van de oorspronkelijke status van uw toepassing voordat u het overdrachtsproces start. We raden u ook aan om controlepuntstatussen op verschillende tijdstippen tijdens het proces op te slaan. Het kan handig zijn om een ander exemplaar van de oorspronkelijke toepassing te openen in Unity, zodat u ze naast elkaar kunt vergelijken tijdens het overdrachtsproces.

Notitie

Zorg ervoor dat u de nieuwste hulpprogramma's hebt geïnstalleerd voor windows Mixed Reality-ontwikkeling voordat u de poort overgaat. Voor de meeste bestaande HoloLens-ontwikkelaars moet u dit bijwerken naar de nieuwste versie van Visual Studio 2019 en de juiste Windows SDK installeren. De inhoud die volgt, duikt verder in verschillende Unity-versies en de MRTK-versie (Mixed Reality Toolkit) versie 2.

Zie De hulpprogramma's installeren voor meer informatie.

Uw project migreren naar de nieuwste versie van Unity

Als u MRTK v2 gebruikt, raden we u aan om bij te werken naar MRTK 2.7 voordat u uw project bijwerkt naar Unity 2020.3 LTS. MRTK 2.7 ondersteunt Unity 2018, 2019 en 2020, zodat u zeker weet dat uw project gereed is voor Unity 2020, zelfs voordat u Unity upgradet. Evalueer eventuele invoegtoepassingsafhankelijkheden die momenteel aanwezig zijn in uw project en bepaal of deze DLL's kunnen worden gebouwd voor ARM64. Voor projecten met een harde ARM-afhankelijke invoegtoepassing moet u mogelijk doorgaan met het bouwen van uw app voor ARM.

Scène-/projectinstellingen bijwerken in Unity

Na het bijwerken naar Unity 2020.3 LTS raden we u aan om bepaalde instellingen in Unity bij te werken voor optimale resultaten op het apparaat. Deze instellingen worden gedetailleerd beschreven onder aanbevolen instellingen voor Unity.

Om het nogmaals te herhalen, wordt de back-end van .NET-scripts afgeschaft in Unity 2018 en verwijderd vanaf Unity 2019. Overweeg om uw project over te schakelen naar IL2CPP.

Notitie

De BACK-end voor IL2CPP-scripts kan langere buildtijden veroorzaken van Unity naar Visual Studio. Ontwikkelaars moeten hun ontwikkelcomputer instellen voor het optimaliseren van IL2CPP-buildtijden. U kunt ook profiteren van het instellen van een cacheserver, met name voor Unity-projecten met een grote hoeveelheid assets (met uitzondering van scriptbestanden) of voortdurend veranderende scènes en assets. Bij het openen van een project slaat Unity in aanmerking komende assets op in een interne cache-indeling op de ontwikkelcomputer. Items moeten opnieuw worden geïmporteerd en opnieuw worden verwerkt wanneer ze worden gewijzigd. Dit proces kan eenmaal worden uitgevoerd, opgeslagen in een cacheserver en vervolgens worden gedeeld met andere ontwikkelaars om tijd te besparen, in tegenstelling tot elke ontwikkelaar die het opnieuw importeren van nieuwe wijzigingen lokaal verwerkt.

Nadat u eventuele belangrijke wijzigingen hebt aangepakt die het gevolg zijn van een overstap naar de bijgewerkte Unity-versie, bouwt en test u uw huidige toepassingen op HoloLens (1e generatie). Dit is een goed moment om een doorvoer in broncodebeheer te maken en op te slaan.

Afhankelijkheden/invoegtoepassingen compileren voor ARM-processor

HoloLens (1e generatie) voert toepassingen uit op een x86-processor; De HoloLens 2 maakt gebruik van een ARM-processor. Bestaande HoloLens-toepassingen moeten worden overgezet om ARM te ondersteunen. Zoals eerder vermeld, ondersteunt Unity 2018 LTS het compileren van ARM32-apps terwijl Unity 2019 en hoger ondersteuning biedt voor het compileren van ARM32- en ARM64-apps. Ontwikkelen voor ARM64-toepassingen heeft de voorkeur omdat er een materiaalverschil is in prestaties. Hiervoor moeten echter alle invoegtoepassingsafhankelijkheden ook worden gebouwd voor ARM64.

Bekijk alle DLL-afhankelijkheden in uw toepassing. U wordt aangeraden afhankelijkheden te verwijderen die niet meer nodig zijn voor uw project. Voor resterende invoegtoepassingen die vereist zijn, neemt u de respectieve binaire ARM32- of ARM64-bestanden op in uw Unity-project.

Nadat u de relevante DLL's hebt opgenomen, bouwt u een Visual Studio-oplossing van Unity en compileert u een AppX voor ARM in Visual Studio om te controleren of uw toepassing kan worden gebouwd voor ARM-processors. U wordt aangeraden de toepassing op te slaan als een doorvoering in uw broncodebeheeroplossing.

Belangrijk

Toepassingen met MRTK v1 kunnen worden uitgevoerd op HoloLens 2 nadat het builddoel is gewijzigd in ARM, ervan uitgaande dat aan alle andere vereisten wordt voldaan. Dit omvat het controleren of u ARM-versies van al uw invoegtoepassingen hebt. Uw app heeft echter geen toegang tot HoloLens 2-specifieke functies, zoals gearticuleerde hand- en oogtracking. MRTK v1 en MRTK v2 hebben verschillende naamruimten waarmee beide versies zich in hetzelfde project kunnen bevinden, wat handig is voor het overstappen van het ene naar het andere.

Bijwerken naar MRTK versie 2

MRTK versie 2 is de nieuwe toolkit boven op Unity die zowel HoloLens (1e generatie) als HoloLens 2 ondersteunt. Hier zijn ook alle nieuwe HoloLens 2-mogelijkheden toegevoegd, zoals handinteracties en oogtracking.

Bekijk de volgende bronnen voor meer informatie over het gebruik van MRTK versie 2:

Voorbereiden op de migratie

Voordat u de nieuwe *.unitypackage-bestanden voor MRTK v2 opneemt, raden we u aan een inventarisatie te maken van (1) aangepaste code die is geïntegreerd met MRTK v1 en (2) eventuele aangepaste code voor invoerinteracties of UX-onderdelen. Het meest voorkomende en veelvoorkomende conflict voor een mixed reality-ontwikkelaar die MRTK v2 opneemt, omvat invoer en interacties. We raden u aan om het MRTK v2-invoermodel te bekijken.

Ten slotte is de nieuwe MRTK v2 overgestapt van een model van scripts en in-scene manager-objecten naar een architectuur van een configuratie- en serviceprovider. Dit resulteert in een schoner scènehiërarchie- en architectuurmodel, maar vereist een leercurve voor het begrijpen van de nieuwe configuratieprofielen. Lees de Mixed Reality Toolkit-configuratiehandleiding om vertrouwd te raken met de belangrijke instellingen en profielen die u moet aanpassen aan de behoeften van uw toepassing.

Het project migreren

Na het importeren van MRTK v2 heeft uw Unity-project waarschijnlijk veel fouten met betrekking tot compileren. Deze zijn gebruikelijk vanwege de nieuwe naamruimtestructuur en onderdeelnamen. Ga door met het oplossen van deze fouten door uw scripts te wijzigen in de nieuwe naamruimten en onderdelen.

Voor meer informatie over de specifieke API-verschillen tussen HTK/MRTK en MRTK v2 raadpleegt u de porting guide on the MRTK version 2 wiki.

Aanbevolen procedures

  • Geef prioriteit aan de MRTK-standaard-shader.
  • Werk tegelijk aan één wijzigingstype dat fouten veroorzaken (bijvoorbeeld: IFocusable voor IMixedRealityFocusHandler).
  • Test na elke wijziging en gebruik broncodebeheer.
  • Gebruik indien mogelijk standaard MRTK UX (knoppen, slaten, enzovoort).
  • Wijzig MRTK-bestanden niet rechtstreeks; wrappers maken rond MRTK-onderdelen.
    • Deze actie vereenvoudigt toekomstige MRTK-opname en -updates.
  • Bekijk en verken voorbeeldscènes in de MRTK, met name HandInteractionExamples.scene.
  • Bouw de gebruikersinterface op basis van canvas opnieuw met quads, colliders en TextMeshPro-tekst.
  • Schakel dieptebuffer delen in of stel het focuspunt in. Gebruik een 16-bits dieptebuffer voor betere prestaties. Zorg ervoor dat u ook diepte weergeeft wanneer u kleur weergeeft. Unity schrijft over het algemeen geen diepte voor transparante en tekst gameobjecten.
  • Selecteer Single Pass Instanced Rendering.
  • Het HoloLens 2-configuratieprofiel voor MRTK gebruiken

Uw toepassing testen

In MRTK versie 2 kunt u handinteracties rechtstreeks in Unity simuleren en ontwikkelen met de nieuwe API's voor handinteracties en oogtracering. Het HoloLens 2-apparaat is vereist om een bevredigende gebruikerservaring te creëren. We raden u aan de documentatie en hulpprogramma's te bestuderen voor meer inzicht. MRTK v2 ondersteunt ontwikkeling op HoloLens (1e generatie) en traditionele invoermodellen zoals 'selecteren via luchttik' kunnen worden getest op HoloLens (1e generatie).

Uw interactiemodel bijwerken voor HoloLens 2

Let op

Als uw project een van de XR gebruikt. WSA-API's, houd er rekening mee dat deze worden uitgefaseerd ten gunste van de nieuwe XR-invoer-API's van Unity in toekomstige Unity-releases. Meer informatie over de XR-invoer-API's vindt u hier.

Zodra uw toepassing is overgezet en voorbereid voor HoloLens 2, kunt u overwegen uw interactiemodel en hologramontwerpplaatsingen bij te werken. In HoloLens (1e generatie) heeft uw toepassing waarschijnlijk een gaze- en doorvoerinteractiemodel met hologrammen die relatief ver weg zijn om in het weergaveveld te passen.

Uw toepassingsontwerp bijwerken zodat dit het meest geschikt is voor HoloLens 2:

  1. MRTK-onderdelen: Als u MRTK v2 hebt toegevoegd, zijn er verschillende onderdelen/scripts die zijn ontworpen en geoptimaliseerd voor HoloLens 2.
  2. Interactiemodel: Overweeg het bijwerken van uw interactiemodel. Voor de meeste scenario's raden we u aan om over te stappen van gazen naar handen. Sommige hologrammen zijn mogelijk buiten het bereik van de arm en het overschakelen naar handen resulteert in veel interactie die stralen aanwijst en bewegingen grijpt.
  3. Hologramplaatsing: Nadat u overschakelt naar een interactiemodel voor handen, kunt u overwegen om een aantal hologrammen dichter bij elkaar te plaatsen, zodat gebruikers rechtstreeks met hen kunnen communiceren met behulp van handbewegingen in bijna-interactie. De typen hologrammen die dichter bij het rechtstreeks pakken of werken zijn:
  • kleine doelmenu's
  • besturingselementen
  • Knoppen
  • kleinere hologrammen die, wanneer ze worden opgehaald en geïnspecteerd, binnen het HoloLens 2-weergaveveld passen.

Toepassingen en scenario's variëren; We blijven de ontwerprichtlijnen verfijnen en posten op basis van feedback en voortgezette lessen.

Aanvullende tips over het verplaatsen van toepassingen van x86 naar ARM

  • Eenvoudige Unity-toepassingen zijn eenvoudig omdat u een ARM-toepassingsbundel kunt bouwen of rechtstreeks op het apparaat kunt implementeren om de bundel uit te voeren. Sommige systeemeigen Unity-invoegtoepassingen kunnen bepaalde ontwikkelingsuitdagingen opleveren. Daarom moet u alle systeemeigen Unity-invoegtoepassingen upgraden naar Visual Studio 2019 en vervolgens opnieuw bouwen voor ARM.

  • Eén toepassing heeft de Unity AudioKinetic Wwise-invoegtoepassing gebruikt. De Unity-versie in gebruik had geen UWP ARM-invoegtoepassing en er was een aanzienlijke inspanning om geluidsmogelijkheden opnieuw te bewerken in de betreffende toepassing om te worden uitgevoerd op ARM. Zorg ervoor dat alle vereiste invoegtoepassingen voor uw ontwikkelplannen zijn geïnstalleerd en beschikbaar zijn in Unity.

  • In sommige gevallen bestaat er mogelijk geen UWP-/ARM-invoegtoepassing voor invoegtoepassingen die vereist zijn voor toepassingen, waardoor de mogelijkheid om de toepassing te overzetten en uit te voeren op HoloLens 2 wordt geblokkeerd. Neem contact op met uw provider van de invoegtoepassing om het probleem op te lossen en ondersteuning te bieden voor ARM.

  • De minfloat (en varianten zoals min16float, minint, enzovoort) in shaders kunnen zich anders gedragen op HoloLens 2 dan op HoloLens (1e generatie). Deze garanderen met name dat ten minste het opgegeven aantal bits wordt gebruikt. Op Intel/Nvidia GPU's worden minfloats grotendeels behandeld als 32 bits. In ARM wordt het aantal opgegeven bits daadwerkelijk nageleefd. In de praktijk hebben deze getallen mogelijk minder precisie of een bereik op HoloLens 2 dan op HoloLens (1e generatie).

  • De _asm instructies lijken niet te werken met ARM, wat betekent dat code die _asm instructies gebruikt, opnieuw moet worden geschreven.

  • ARM biedt geen ondersteuning voor de SIMD-instructieset omdat verschillende headers, zoals xmmintrin.h, emmintrin.h, tmmintrin.h en immintrin.h, niet beschikbaar zijn in ARM.

  • De shader-compiler op ARM wordt uitgevoerd tijdens de eerste tekenaanroep nadat de shader is geladen of iets waarop de shader afhankelijk is, is gewijzigd, niet tijdens de laadtijd van de shader. De impact op framerate kan merkbaar zijn, afhankelijk van het aantal shaders dat moet worden gecompileerd, met gevolgen voor de manier waarop shaders moeten worden verwerkt, verpakt en anders moeten worden bijgewerkt op HoloLens 2 versus HoloLens (1e generatie).

Zie ook