Kotwice przestrzenne

Kotwica przestrzenna reprezentuje ważny punkt na świecie, który system śledzi w czasie. Każda kotwica ma dostosowywany system współrzędnych oparty na innych kotwicach lub ramkach odniesienia, aby upewnić się, że kotwicone hologramy pozostają dokładnie na miejscu. Renderowanie hologramu w układzie współrzędnych kotwicy zapewnia najbardziej precyzyjne pozycjonowanie tego hologramów w danym momencie. Jest to kosztem niewielkich korekt w czasie pozycji hologramu, ponieważ system ciągle przenosi go z powrotem na miejsce w zależności od świata rzeczywistego.

Można również utrwalać i udostępniać kotwice przestrzenne między sesjami aplikacji i między urządzeniami:

  • Zapisując lokalne kotwice przestrzenne na dysku i ładując je z powrotem później, aplikacja może obliczyć tę samą lokalizację w świecie rzeczywistym w wielu sesjach aplikacji na jednym HoloLens.
  • Za pomocą usługi Azure Spatial Anchors do utworzenia kotwicy w chmurze aplikacja może udostępniać kotwicę przestrzenną na wielu urządzeniach z HoloLens, iOS i Android. Dzięki temu, że każde urządzenie wyrenderuje hologram przy użyciu tego samego zakotwiczenia przestrzennego, użytkownicy zobaczą hologramów w tym samym miejscu w świecie rzeczywistym. Umożliwia to korzystanie z udostępnionych doświadczeń w czasie rzeczywistym.
  • Możesz również użyć usługi Azure Spatial Anchors, aby uzyskać asynchroniczną trwałość hologramów na HoloLens, iOS i Android. Udostępniając trwałą kotwicę przestrzenną w chmurze, wiele urządzeń może obserwować ten sam utrwalony hologram w czasie, nawet jeśli te urządzenia nie są obecne razem w tym samym czasie.

W przypadku korzystania ze skalowania na stałe lub w skali pomieszczenia dla tetheredowych zestawów nagłownych, które będą pozostawać w zasięgu 5-miernikowego, można zwykle używać ramki etapu zamiast kotwic przestrzennych, co zapewnia jeden układ współrzędnych, w którym będzie renderowana cała zawartość. Jeśli jednak aplikacja pozwala użytkownikom wędrować poza 5 metrów w HoloLens, być może działając na całym budynku, potrzebne będą kotwice przestrzenne, aby zapewnić stabilność zawartości.

Chociaż kotwice przestrzenne są doskonałe dla hologramów, które powinny pozostać stałe na świecie, po umieszczeniu kotwicy nie można jej przenieść. Istnieją alternatywy dla kotwic, które są bardziej odpowiednie dla dynamicznych hologramów, które tagują użytkownika. Najlepszym rozwiązaniem jest pozycjonowanie dynamicznych hologramów przy użyciu niejednej ramki odwołania (podstawy współrzędnych świata aparatu Unity) lub dołączonej ramki odwołania.

Najlepsze rozwiązania

Te wytyczne dotyczące kotwic przestrzennych ułatwiają renderowanie stabilnych hologramów, które dokładnie śledzą świat rzeczywisty.

Tworzenie kotwic przestrzennych, w których użytkownicy je umieszczają

Zazwyczaj użytkownicy jawnie umieszczają kotwice przestrzenne.

Na przykład na HoloLens aplikacja może przecinać spojrzenie użytkownika z siatką mapowania przestrzennego, aby pozwolić użytkownikowi zdecydować, gdzie umieścić hologram. Gdy użytkownik nacisnie się, aby umieścić ten hologram, utwórz kotwicę przestrzenną w punkcie przecięcia, a następnie umieść hologram na początku układu współrzędnych tej kotwicy.

Lokalne kotwice przestrzenne są łatwe i łatwe do utworzenia. System łączy dane wewnętrzne, jeśli wiele kotwic może udostępniać swoje bazowe dane czujników. Zalecamy utworzenie nowego lokalnego zakotwiczenia przestrzennego dla każdego hologramu, który użytkownik jawnie umieszcza, z wyjątkiem przypadków przedstawionych poniżej, takich jak sztywne grupy hologramów.

Zawsze renderuj zakotwiczone hologramy w odległości 3 metrów od ich kotwicy

Kotwice przestrzenne stabilizują swój układ współrzędnych w pobliżu źródła kotwicy. W przypadku renderowania hologramów większej niż 3 metry od źródła hologramów mogą wystąpić zauważalne błędy pozyacyjne proporcjonalnie do odległości od tego źródła ze względu na efekty z ramienia. Działa to, jeśli użytkownik znajduje się blisko kotwicy, ponieważ hologram jest również daleko od użytkownika. Innymi słowy, błąd kątowy odległego hologramu będzie mały. Jeśli jednak użytkownik podchodzy do tego odległego hologramu, będzie on duży w widoku, dzięki czemu efekty ręki ręki odległego źródła kotwicy są oczywiste.

Grupowanie hologramów, które powinny tworzyć sztywny klaster

Wiele hologramów może współużytkować tę samą kotwicę przestrzenną, jeśli aplikacja oczekuje, że te hologramy będą utrzymywać ze sobą stałe relacje.

Jeśli na przykład animujesz holograficzny układ słoneczny w pomieszczeniu, lepiej powiązać wszystkie obiekty układu słonecznego z pojedynczą kotwicą w środku. Dzięki temu będą poruszać się sprawnie w zależności od siebie. W tym przypadku jest to układ słoneczny jako całość, który jest zakotwiczony, mimo że jego części składowe są dynamicznie poruszane wokół kotwicy.

Kluczową zasadą zachowania stabilności hologramów jest zachowanie powyższej reguły 3-miernikowej.

Renderowanie wysoce dynamicznych hologramów przy użyciu klatki odniesienia zamiast lokalnej kotwicy przestrzennej

Jeśli masz wysoce dynamiczny hologram, taki jak znak poruszający się po pomieszczeniu lub zmiennoprzecinkowy interfejs użytkownika, który znajduje się wzdłuż ściany w pobliżu użytkownika, najlepiej pominąć lokalne kotwice przestrzenne i renderować te hologramy bezpośrednio w układzie współrzędnych dostarczonym przez układ odejścia. W a unity można to osiągnąć, umieszczając hologramy bezpośrednio w współrzędnych świata bez obiektu WorldAnchor. Hologramy w klatce referencyjnej może wystąpić dryf, gdy użytkownik jest daleko od hologramu. Jest to jednak mniej prawdopodobne do zauważalnia w przypadku dynamicznych hologramów: hologram i tak się przesuwa lub jego ruch stale utrzymuje blisko użytkownika, gdzie dryf zostanie zminimalizowany.

Jednym z interesujących przypadków hologramów dynamicznych jest obiekt, który jest animowany z jednego zakotwiczenia układu współrzędnych do innego. Na przykład możesz mieć dwa piłki o długości 10 metrów, z których każdy znajduje się na własnej kotwicy przestrzennej, a jeden z nich wyzwala piłkę w drugiej piłki. Po pożarze piłki można renderować ją w odpowiedniej lokalizacji w bezbłędnej ramce odniesienia, aby zbiegała się z piłką w pierwszym zakotwiczonym układzie współrzędnych. Następnie może podążać za swoją trajektorią w bezbłędnych ramkach odniesienia, ponieważ 10 metrów przepływa w powietrzu. Gdy piłka dotrze do drugiej piłki, można przenieść ją do zakotwiczenia układu współrzędnych drugiego z nich, aby umożliwić obliczenia fizyki z sztywnymi treściami tego układu.

Jeśli udostępniasz bardzo dynamiczny hologram między urządzeniami, wybierz jakieś kotwice przestrzenne w chmurze, aby pełnić swoją nadrzędną funkcji, ponieważ nie można udostępniać ramek odwołania między urządzeniami. Należy jednak upewnić się, że dynamiczny hologram lub wyświetlane na nim urządzenia pozostają w 3-miernikowym promieniu kotwicy, aby hologram był stabilny na wszystkich urządzeniach.

Unikaj tworzenia siatki zakotwiczeń przestrzennych

Może być kuszące, aby aplikacja popuszczała regularną siatkę kotwic przestrzennych podczas przechodzenia przez użytkownika, przerzucając obiekty dynamiczne z kotwicy do kotwicy podczas poruszania się. Wiąże się to jednak z większą koniecznością zarządzania aplikacją bez korzystania z danych z czujników głębokich, które system przechowuje wewnętrznie. W takich przypadkach można osiągnąć lepsze wyniki, umieszczając hologramy w nędzy ramce odwołania, jak opisano w powyższej sekcji. Jeśli wstępnie ustawiasz zestaw kotwic przestrzennych chmury wokół statycznej przestrzeni, rozważ umieszczenie kotwic przestrzennych w lokalizacjach hologramów kluczowych, na które użytkownik natknie się zgodnie z powyższymi obyczami, zamiast tworzyć dowolną siatkę kotwic. Dzięki temu zyskasz maksymalną stabilność dla tych hologramów kluczy.

Zwalnianie lokalnych kotwic przestrzennych, które nie są już potrzebne

Gdy lokalna kotwica przestrzenna jest aktywna, system określa priorytet przechowywania danych czujnika, które są blisko tej kotwicy. Jeśli nie używasz już kotwicy przestrzennej, zatrzymaj dostęp do jej układu współrzędnych. Dzięki temu jego bazowe dane czujników mogą być usuwane w razie potrzeby.

Jest to szczególnie ważne w przypadku kotwic lokalnych utrwalonych w magazynie zakotwiczeń przestrzennych. Dane czujnika za tymi kotwicami zostaną trwale zachowane, aby umożliwić aplikacji znalezienie tej kotwicy w przyszłych sesjach, co zmniejsza ilość miejsca dostępnego do śledzenia innych kotwic. Utrwalaj tylko lokalne kotwice, które trzeba będzie znaleźć ponownie w przyszłych sesjach. Zalecamy usunięcie ich ze sklepu, gdy nie będą już zrozumiałe dla użytkownika.

W przypadku kotwic przestrzennych w chmurze magazyn można skalować zgodnie z potrzebami scenariusza. Możesz przechowywać tyle kotwic w chmurze, ile potrzebujesz, zwalniając je, gdy wiesz, że użytkownicy nie będą już potrzebować kotwicy.

Zobacz też