Spatial Anchors

En spatial fästpunkt representerar en viktig punkt i världen som systemet spårar över tid. Varje fästpunkt har ett justerbart koordinatsystem,baserat på andra fästpunkter eller referensramar, för att säkerställa att ankare hologram förblir exakt på plats. Genom att återge ett hologram i ett fästpunkts koordinatsystem får du den mest exakta placeringen av hologrammet vid en given tidpunkt. Detta sker på bekostnad av små justeringar över tid till hologrammets position när systemet kontinuerligt flyttar tillbaka det på plats baserat på verkligheten.

Du kan också bevara och dela rumsliga fästpunkter mellan programsessioner och mellan enheter:

  • Genom att spara lokala spatiala fästpunkter på disk och läsa in dem igen senare kan ditt program beräkna samma plats i verkligheten över flera programsessioner på en enda HoloLens.
  • Genom att använda Azure Spatial Anchors för att skapa en molnankare kan ditt program dela en spatial fästpunkt över flera HoloLens-, iOS- och Android-enheter. Genom att varje enhet återger ett hologram med samma spatiala fästpunkt ser användarna hologrammet på samma plats i den verkliga världen. Detta möjliggör delad realtidsupplevelse.
  • Du kan också använda Azure Spatial Anchors för asynkron hologrampersistence på HoloLens-, iOS- och Android-enheter. Genom att dela en beständig rumslig fästpunkt i molnet kan flera enheter se samma beständiga hologram över tid, även om dessa enheter inte finns tillsammans samtidigt.

För upplevelser i stående skala eller rumsskala för fristående headset som håller sig inom en 5-mätare, kan du vanligtvis använda fasramen som referens i stället för rumsliga fästpunkter, vilket ger dig ett enda koordinatsystem där du kan återge allt innehåll. Men om ditt program låter användare gå över 5 meter i HoloLens, kanske genom hela byggnaden, behöver du spatiala fästpunkter för att hålla innehållet stabilt.

Även om rumsliga fästpunkter är bra för hologram som ska vara fasta i världen kan de inte flyttas när en fästpunkt väl har placerats. Det finns alternativ till fästpunkter som är mer lämpliga för dynamiska hologram som taggar tillsammans med användaren. Det är bäst att placera dynamiska hologram med hjälp av en stationär referensram (grunden för Unitys världskoordinater) eller en bifogad referensram.

Bästa praxis

Dessa riktlinjer för spatial fästpunkt hjälper dig att återge stabila hologram som korrekt spårar den verkliga världen.

Skapa spatiala fästpunkter där användarna placerar dem

Normalt är det användarna som uttryckligen placerar spatiala fästpunkter.

På en HoloLens kan ett program t.ex. överse användarens blick med det rumsliga kartnätet så att användaren kan bestämma var ett hologram ska placeras. När användaren trycker för att placera hologrammet skapar du en spatial fästpunkt vid skärningspunkten och placerar sedan hologrammet vid ursprunget för fästpunktens koordinatsystem.

Lokala spatiala fästpunkter är enkla och presterande att skapa. Systemet kombinerar interna data om flera fästpunkter kan dela sina underliggande sensordata. Vi rekommenderar att du skapar en ny lokal spatial fästpunkt för varje hologram som en användare uttryckligen placerar, förutom i fall som beskrivs nedan, till exempel fasta grupper av hologram.

Återge alltid fäst hologram inom 3 meter från fästpunkten

Spatial anchors stabiliserar sitt koordinatsystem nära fästpunktens ursprung. Om du återger hologram mer än 3 meter från ursprunget kan hologrammen uppleva märkbara positionsfel i proportion till avståndet från ursprunget på grund av arm-effekter. Detta fungerar om användaren står nära fästpunkten eftersom hologrammet också är långt bort från användaren. Det avlägsna hologrammets angularfel är med andra ord litet. Men om användaren går fram till det avlägsna hologrammet blir det stort i deras vy, vilket gör att arm-effekterna från det avlägsna fästpunktens ursprung blir uppenbara.

Grupp hologram som ska utgöra ett fast kluster

Flera hologram kan dela samma spatiala fästpunkt om programmet förväntar sig att dessa hologram ska underhålla fasta relationer med varandra.

Om du till exempel animerar ett holografiskt solsystem i ett rum är det bättre att koppla alla solsystemobjekt till en enda fästpunkt i mitten. På så sätt kan de flyttas smidigt baserat på varandra. I det här fallet är det solsystemet som helhet som är fäst, även om dess komponentdelar flyttas dynamiskt runt fästpunkten.

Den viktigaste varningen för att upprätthålla hologramstabiliteten är att följa regeln på 3 mätare ovan.

Rendera mycket dynamiska hologram med hjälp av den stationära referensramen i stället för en lokal spatial fästpunkt

Om du har ett dynamiskt hologram, till exempel ett tecken som går runt i ett rum eller ett flytande användargränssnitt som följer längs väggen nära användaren, är det bäst att hoppa över lokala spatiala fästpunkter och rendera dessa hologram direkt i koordinatsystemet som tillhandahålls av den stationära referensramen. I Unity uppnår du detta genom att placera hologram direkt i världskoordinater utan en WorldAnchor. Hologram i en stationär referensram kan uppleva drift när användaren är långt från hologrammet. Men det är mindre troligt att detta är märkbart för dynamiska hologram: antingen rör sig hologrammet hela tiden ändå eller så håller dess rörelse det ständigt nära användaren där förflyttningen minimeras.

Ett intressant fall med dynamiska hologram är ett objekt som animerar från ett fäst koordinatsystem till ett annat. Du kan till exempel ha två 10 meter ifrån varandra, där var och en ligger på sin egen rumsliga fästpunkt med en skjutning i enball vid den andra. Närballen har uttjänats kan du rendera den på lämplig plats i referensramen så att den sammanträffar med hanen i den första snårets fästpunktssystem. Den kan sedan följa sin trajktori i den stationära referensramen eftersom den 10 meter genom luften. Närballen når den andran kan du flytta den till den andra bens ankarkoordinatsystem för att möjliggöra fysikberäkningar med den platsens fasta organ.

Om du delar ett dynamiskt hologram mellan enheter väljer du en molns spatial fästpunkt som ska fungera som överordnad eftersom stationära referensramar inte kan delas mellan enheter. Du bör dock se till att antingen det dynamiska hologrammet eller de enheter som visar det håller sig inom fästpunktens radie på 3 meter så att hologrammet visas stabilt på alla enheter.

Undvik att skapa ett rutnät med spatiala fästpunkter

Det kan vara lockande att få ditt program att släppa ett regelbundet rutnät med spatiala fästpunkter när användaren går runt och flyttar dynamiska objekt från fästpunkt till fästpunkt när de flyttas runt. Detta innebär dock mer hantering för ditt program, utan att dra nytta av de djupsensordata som själva systemet underhåller internt. I dessa fall får du bättre resultat genom att placera hologrammen i den stationära referensramen enligt beskrivningen i avsnittet ovan. När du förpositionering av en uppsättning rumsliga molnankare runt ett statiskt utrymme bör du överväga att placera de spatiala fästpunkter på platserna för de nyckel hologram som användaren kommer över enligt principen ovan i stället för att skapa ett godtyckligt rutnät med fästpunkter. Detta säkerställer att du får maximal stabilitet för dessa nyckel hologram.

Frigöra lokala spatiala fästpunkter som du inte längre behöver

När en lokal spatial fästpunkt är aktiv prioriterar systemet att hålla sensordata nära fästpunkten. Om du inte längre använder en spatial fästpunkt kan du sluta komma åt dess koordinatsystem. Detta gör att dess underliggande sensordata kan tas bort vid behov.

Detta är särskilt viktigt för lokala fästpunkter som du har bevarat i den rumsliga fästpunktslagret. Sensordata bakom dessa fästpunkter hålls kvar permanent så att ditt program kan hitta fästpunkten i framtida sessioner, vilket minskar det tillgängliga utrymmet för att spåra andra fästpunkter. Spara bara lokala fästpunkter som du behöver hitta igen i framtida sessioner. Vi rekommenderar att du tar bort dem från butiken när de inte längre är meningsfulla för användaren.

För rumsliga molnankare kan lagringen skalas efter behov. Du kan lagra så många molnankare som du behöver och släppa dem när du vet att användarna inte behöver fästpunkten igen.

Se även