Share via


Konfigurera och köra WLT+ASA-exemplen

Sammanfattning

World Locking Tools for Unity (WLT) tillhandahåller ett stabilt koordinatsystem baserat på lokal spårning. I kombination med Azure Spatial Anchors (ASA) kan det stabila koordinatsystemet bevaras mellan sessioner och delas mellan enheter.

Den här videon kan ge dig en uppfattning om vad du kan förvänta dig när du kör exemplet.

Vad finns i det här exemplet?

Det här exemplet innehåller tillgångar och skript för att:

  1. Konfigurera Unitys globala koordinatsystem med avseende på den fysiska miljön.
  2. Publicera som samordnar systemkonfigurationen till Azure med Hjälp av Azure Spatial Anchors.
  3. Hämta data från Azure för att återställa koordinatsystemet i senare sessioner eller på andra enheter.

Dokumentets struktur

  1. Installation – Så här installerar och distribuerar du exempelprogrammet.
  2. Anteckningar om hur du kör programmet tillsammans med föreslagna steg.
  3. Arkitekturbeskrivning av stödskripten.

Konfigurera och testade versioner

Det här exemplet har utvecklats och testats med hjälp av:

  • Unity 2020.3.8f1
  • Azure Spatial Anchors (ASA) v2.9.0 – v2.10.2.
  • Mixed Reality Toolkit v2.7.2
  • World Locking Tools för Unity v1.4.1
  • FrozenWorldEngine v1.1.1

Du kan installera WLT och det här exemplet antingen från WLT-versioner .unitypackage eller från Funktionsverktyget för Mixed Reality. Om du installerar från FeatureTool måste du inte bara installera WLT Examples-beroendet (automatiskt), utan även Importera exemplen till projektet. Mer information finns i Installera WLT från MR-funktionsverktyget .

Installera DLL:en för Frozen World Engine i projektet

Det första steget är att installera DLL för Frozen World Engine, v1.1.1. Instruktioner här, med antingen NuGet för Unity eller kommandorads nuget.exe.

Installera ASA

Skapa spatiala fästpunktsresurser

Den här snabbstartsguiden går igenom stegen för att skapa ett Azure-konto och nödvändiga spatiala fästpunkter. Konto-ID, kontodomän och kontonyckel krävs för att köra exemplet. Du lägger till dem i rätt fält i skriptet "Spatial Anchor Manager" i SpacePinBinder-objektet i scenen. Andra autentiseringsmetoder stöds, men konto-ID/domän/nyckel är det enklaste när du kommer igång.

Fält för autentiseringsuppgifter

Installera SDK:n

Installera sedan Azure Spatial Anchors v2.9.0 med någon av de metoder som beskrivs i dessa instruktioner. Jag använde mr feature tool-metoden.

Ytterligare installation för grov omlokalisering

När du använder Coarse Relocation krävs ytterligare installation när du distribuerar till Android eller HoloLens2.

Vad är grov omlokalisering?

Coarse Relocation är en teknik som gör att du kan söka efter tidigare skapade molnankare i din nuvarande närhet. Information om kursflytt finns i avsnittet Kursflytt i Dokumentationen om Azure Spatial Anchors.

Det här exemplet visar hur du hittar molnankare antingen via Coarse Relocation eller uttryckligen av molnankare-ID (GUID). Om grov omlokalisering är aktiverat krävs följande ytterligare konfigurationssteg. Om du inte är intresserad av Coarse Relocation kan du inaktivera den i komponenten "Publisher ASA" på SpacePinBinder-objektet.

Inaktivera grov omlokalisering

Ytterligare installationssteg för HoloLens2

För att aktivera Coarse Relocation på HoloLens2 måste du lägga till en behörighet till filen Package.appxmanifest som genererats i ARM/WorldLockingTools/Package.appxmanifest (förutsatt att du har valt mappen ARM som byggmål). Om det här projektet är ditt eget ersätter du lämpligt namn för WorldLockingTools i den sökvägen. Lägg till följande rad i avsnittet Funktioner:

    <DeviceCapability Name="wiFiControl"/>

Mer information finns i det här inlägget på github.

Om du missar det här steget når utgivarens "beredskap" aldrig tillståndet "Klar", din framerate blir extremt låg och din UnityPlayer.log (om den genereras) kommer att vara full av undantag i formuläret:

InvalidOperationException: CoarseReloc: WiFi-åtkomst har nekats. Cv för begäran: . Svars-CV: .

Du måste lägga till den funktionen i Package.appxmanifest varje gång lösningen skapas från ren. Men efterföljande versioner från Unity bevarar funktionen.

I Project Inställningar/XR Plugin Management kontrollerar du att Windows Mixed Reality är den valda plugin-providern under fliken UWP (OpenXR stöds också för WLT med ASA).

MRTK-profilen XAmple XRSDK ToolkitConfigurationProfile i XAmpleApp/CustomProfiles är lämplig för körning på HoloLens2.

Ytterligare installationssteg för Android

Om du vill aktivera grov omlokalisering på Android följer du de här anvisningarna för att konfigurera filen Assets/Plugins/Android/mainTemplate.gradle.

I tillgångar/plugin-program/Android/AndroidManifest.xml måste dessutom många behörigheter aktiveras för att tillåta åtkomst till Wi-Fi på Android. Om du införlivar element i det här projektet i ditt eget projekt måste du också följa dessa steg för att kunna använda Grov omlokalisering. Mer information om behörigheter som krävs för att få åtkomst till Wi-Fi på Android finns i det här inlägget och inlägget som det länkar till.

Exempel på den ändrade mainTemplate.gradle och AndroidManifest.xml ingår i WLT-ASA-exempelprojektet, som är specifikt konfigurerat för att använda WLT och ASA tillsammans. De kan kopieras direkt till projektet när du har aktiverat "Custom Main Manifest" och "Custom Main Gradle Template" i Player Publishing-Inställningar enligt beskrivningen.

Om bygget misslyckas med ett Shader-fel i det MRTK_Standard materialet när du trycker på Skapa och kör kan du bara försöka skapa och köra igen. Det fungerar andra försöket för mig. Det finns viss information om detta i MRTK frågor, men så långt jag kan berätta all information finns det fel.

I Project Inställningar/XR Plugin Management kontrollerar du att ARCore är den valda plugin-providern under fliken Android.

MRTK-profilen XAmple AR ToolkitConfigurationProfile är lämplig för att köras på mobilen. Glöm inte att köra skriptet Mixed Reality/Utilities/UnityAR/Update Scripting Defines när du har växlat till Android eller iOS.

Vad knapparna gör

Klar

  • Växla pins – När SpacePins inte är aktiva kan deras manipuleringshandtag döljas.
  • Publicera – Spara den aktuella konfigurationen och aktivera dess hämtning i senare session eller på andra enheter.
  • Läs in Oracle – Använd tidigare lagrade bindningar för att återställa en rumslig konfiguration.
  • Clear Oracle – Ta bort alla stödresurser, särskilt Azure Spatial Anchors, och rensa bindningsoraklet.
  • Sök – Hitta alla Azure Spatial Anchors i omedelbar närhet och återställ den rumsliga konfigurationen från dem.
  • Rensa – Hitta alla Azure Spatial Anchors i omedelbar närhet och rensa dem.
  • Återställ pins – Ångra eventuella manipuleringar av blankstegsstift. Rensar inte några spatiala Azure-fästpunkter.

Menyn på mobilen är något annorlunda i form, men knapppositioner och betydelser är desamma.

Genomgång – Publicera från HoloLens2

Placera scenen med SpacePins

När du startar exemplet är koordinatsystemet position och orienterat baserat på huvudspårarens pose vid start. Det vill säga, det är ganska godtyckligt. Det första du behöver göra är att justera koordinatsystemet till önskat referenstillstånd.

Soffan i PinTestSofa scenen är 2,18 meter lång, 0,78 m hög och 1,0 m djup. SpacePin-handtagen på varje ände av soffans övre baksida är därför 2,18 m ifrån varandra och 0,78 m från marken. Jag rekommenderar att mäta och placera tillfälliga markörer 2,18 m ifrån varandra, på någon lämplig höjd. Du kan också justera scenen så att den passar ditt fysiska utrymme.

När du har skapat och distribuerat programmet till en HoloLens2-enhet väntar du tills statusen på den flytande menyn säger Klar (tips – statusraden kommer att gå från röd till vit när den är klar).

Inte redo

En i taget hämtar du var och en av SpacePin-handtagen (de vita trådramsfärerna) och drar den i position i förhållande till dina referensmarkörer.

Efter att ha släppt var och en av markörer på plats, borde scenen ha skiftat för att återställa baksidan av soffan i förhållande till SpacePin. Objekten i scenen flyttas inte, hela koordinatutrymmet justeras så att de ursprungliga koordinaterna för SpacePins finns på den plats i den fysiska värld som du drog dem till.

Publicera koordinatutrymmet

När du har upprättat det utrymme som du vill ha kan du nu publicera det utrymmet för att göra det tillgängligt i senare sessioner och på andra enheter.

Om du använder Coarse Relocation är det en bra idé att rensa alla tidigare skapade molnankare i det här läget. Tryck på knappen "Rensa från sökning" och vänta tills den har slutförts.

På den flytande menyn trycker du på knappen Publicera och väntar tills den har slutförts.

Klar

Genomgång – Använda från HoloLens2 med hjälp av grov omlokalisering

Starta programmet igen på en annan HoloLens2-enhet eller på samma enhet när du har stängt föregående session. När statusen visas som Klar trycker du på knappen "Läs in från sökning". När åtgärden är klar har det globala unity-koordinatsystemet justerats till din fysiska miljö som i föregående (publicerade) session.

Genomgång – Använda från HoloLens2 med IBindingOracle (SpacePinBinderFile)

När bindningarna publiceras på en enhet, eller när de återställs från sökningen, registreras de i en IBindingOracle. Det här exemplet innehåller det mest grundläggande Oracle som helt enkelt skriver bindningarna till en textfil.

Starta om programmet till en ny session. Om det här är samma HoloLens2 som publiceringen utfördes från finns det en bindningsfil kvar från publiceringen. Om det här är en annan HoloLens2, men en sökning utfördes i en tidigare session, kommer bindningsfilen att lämnas därifrån.

Tryck på knappen "Läs in från fil" för att läsa in tidigare inspelade bindningar och återställa koordinatutrymmet.

Genomgång – Använda från Android med hjälp av grov omlokalisering

UX ser lite annorlunda ut på Android, men fungerar exakt likadant. Den största skillnaden är att lite mer genomsökning av miljön vid start krävs i förhållande till HoloLens2, innan ASA är redo att fortsätta.

När systemet visas som Redo kan du trycka på den blå knappen (3:e från höger) för att söka efter de tidigare publicerade bindningarna och återställa koordinatsystemet.

Genomgång – Använda från Android med IBindingOracle (SpacePinBinderFile)

När en inläsning från sökning har slutförts har en bindningsfil lämnats kvar på enheten. I senare sessioner kan du bara trycka på Läs in från fil för att återställa koordinatsystemet.

Du kan också kopiera textfilen bindningar från publiceringsenheten till den förbrukande enheten. Standardplatsen för textfilen bindningar är:

HoloLens2: Användarmappar/LocalAppData/WLT-ASA/LocalState/BinderFile.txt

Android: Intern delad lagring/Android/data/com. WorldLockingTools.WLTASA/files/BinderFile.txt

Se även