Rumsliga fästpunkter

En rumslig 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 förankrade hologram är exakt på plats. Om du återger ett hologram i ett ankares koordinatsystem får du den mest exakta positionen för det hologrammet vid en viss tidpunkt. Detta sker på bekostnad av små justeringar över tid till hologrammets position när systemet kontinuerligt flyttar tillbaka det på plats baserat på den verkliga världen.

Du kan också spara och dela spatiala fästpunkter mellan programsessioner och mellan enheter:

  • Genom att spara lokala spatiala fästpunkter på disken och läsa in dem senare kan programmet 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 på flera HoloLens-, iOS- och Android-enheter. Genom att låta varje enhet rendera ett hologram med samma rumsliga fästpunkt ser användarna hologrammet visas på samma plats i verkligheten. Detta möjliggör delade upplevelser i realtid.
  • Du kan också använda Azure Spatial Anchors för asynkron hologrampersistence på HoloLens-, iOS- och Android-enheter. Genom att dela en beständig molns rumslig fästpunkt kan flera enheter observera samma bevarade hologram över tid, även om dessa enheter inte finns tillsammans samtidigt.

För stående skalnings- eller rumsskalningsupplevelser för kopplade skrivbordsheadset som håller sig inom en diameter på 5 meter kan du vanligtvis använda referensramen i stället för spatiala fästpunkter, vilket ger dig ett enda koordinatsystem där du kan återge allt innehåll. Men om ditt program låter användare vandra längre än 5 meter i HoloLens, kanske i en hel våning i en byggnad, behöver du rumsliga fästpunkter för att hålla innehållet stabilt.

Även om rumsliga fästpunkter är bra för hologram som ska förbli fasta i världen, kan den inte flyttas när en fästpunkt har placerats. Det finns alternativ till fästpunkter som är lämpligare 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 spatiala fästpunkter 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

Vanligtvis är det användarna som uttryckligen placerar rumsliga fästpunkter.

På HoloLens kan till exempel ett program korsa användarens blickstråle med det rumsliga mappningsnä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 i ursprunget till fästpunktens koordinatsystem.

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

Rendera alltid förankrade hologram inom 3 meter från fästpunkten

Rumsliga ankare stabiliserar sitt koordinatsystem nära fästpunktens ursprung. Om du återger hologram som är mer än 3 meter från ursprunget kan hologrammen uppleva märkbara positionsfel i proportion till avståndet från det ursprunget på grund av effekter med hävstänger. Detta fungerar om användaren står nära fästpunkten, eftersom hologrammet också ligger långt bort från användaren. Med andra ord är vinkelfelet i det avlägsna hologrammet litet. Men om användaren går upp till det avlägsna hologrammet är det stort i deras vy, vilket gör att spaken-arm-effekterna från det avlägsna ankar ursprunget blir uppenbara.

Gruppera hologram som ska bilda ett fast kluster

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

Om du till exempel animera ett holografiskt solsystem i ett rum är det bättre att binda alla solsystemobjekt till ett enda ankare i mitten. På så sätt kommer de att röra sig smidigt baserat på varandra. I det här fallet är det solsystemet som helhet som är förankrat, även om dess komponenter rör sig dynamiskt runt ankaret.

Den viktiga varningsregeln för att upprätthålla hologramstabiliteten är att följa regeln på 3 meter 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 mycket 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 befinner sig långt från hologrammet. Men detta är mindre troligt för dynamiska hologram: antingen rör sig hologrammet hela tiden ändå eller så håller dess rörelse den ständigt nära användaren där driften kommer att minimeras.

Ett intressant fall av dynamiska hologram är ett objekt som animerar från ett förankrat koordinatsystem till ett annat. Du kan till exempel ha två slott 10 meter från varandra, var och en på sitt eget rumsliga ankare med ett slott som skjuter en kanonkula mot det andra slottet. När kanonkulan avfyras kan du återge den på lämplig plats i den stationära referensramen för att sammanfalla med kanonen i det första slottets förankrade koordinatsystem. Den kan sedan följa sin bana i den stationära referensramen eftersom den flyger 10 meter genom luften. När kanonkulan når det andra slottet kan du flytta det till det andra slottets förankrade koordinatsystem för att möjliggöra fysikberäkningar med slottets stela kroppar.

Om du delar ett mycket dynamiskt hologram mellan enheter väljer du en molnbaserad fästpunkt som fungerar 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

Du kan vara frestad att låta programmet släppa ett vanligt 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 rör sig. Detta innebär dock mer hantering för ditt program, utan fördelen med de djupa sensordata 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örpositionerar en uppsättning rumsliga molnfästpunkter runt ett statiskt utrymme bör du överväga att placera de rumsliga fästpunkterna på platserna för de nyckelhologram som användaren stöter på 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 nyckelhologram.

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

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

Detta är särskilt viktigt för lokala fästpunkter som du har sparat i det rumsliga fästpunktsarkivet. Sensordata bakom dessa fästpunkter sparas permanent så att programmet kan hitta fästpunkten i framtida sessioner, vilket minskar det tillgängliga utrymmet för att spåra andra fästpunkter. Bevara bara lokala fästpunkter som du behöver hitta igen i framtida sessioner. Vi rekommenderar att du tar bort dem från arkivet när de inte längre är meningsfulla för användaren.

För molnbaserade fästpunkter 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