Kotwice przestrzenne

Kotwica przestrzenna reprezentuje ważny punkt na świecie, który system śledzi w czasie. Każda kotwica ma regulowany układ współrzędnych, oparty na innych kotwicach lub ramkach odwołania, aby zapewnić, że zakotwiczone hologramy pozostają dokładnie na miejscu. Renderowanie hologramu w układzie współrzędnych kotwicy zapewnia najbardziej precyzyjne pozycjonowanie dla tego hologramu w danym momencie. Wiąże się to z kosztem małych korekt w czasie do pozycji hologramu, ponieważ system stale przenosi go z powrotem do miejsca w oparciu o rzeczywisty świat.

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

  • Zapisując lokalne kotwice przestrzenne na dysku i ładując je później, aplikacja może obliczyć tę samą lokalizację w świecie rzeczywistym w wielu sesjach aplikacji na jednym urządzeniu HoloLens.
  • Za pomocą usługi Azure Spatial Anchors do utworzenia kotwicy w chmurze aplikacja może współużytkować kotwicę przestrzenną na wielu urządzeniach HoloLens, iOS i Android. Jeśli każde urządzenie renderuje hologram przy użyciu tej samej kotwicy przestrzennej, użytkownicy zobaczą hologram wyświetlany w tym samym miejscu w świecie rzeczywistym. Umożliwia to udostępnianie środowisk w czasie rzeczywistym.
  • Możesz również użyć usługi Azure Spatial Anchors do asynchronicznego trwałości hologramu na urządzeniach HoloLens, iOS i Android. Dzięki udostępnieniu trwałej kotwicy przestrzennej chmury wiele urządzeń może obserwować ten sam utrwalone hologramy w czasie, nawet jeśli te urządzenia nie są obecne razem w tym samym czasie.

W przypadku środowisk na skalę stałą lub w skali pomieszczenia dla zestawów słuchawkowych stacjonarnych, które pozostaną w średnicy 5 metrów, zazwyczaj można użyć ramki etapu odwołania zamiast kotwic przestrzennych, który zapewnia jeden system współrzędnych, w którym można renderować całą zawartość. Jeśli jednak aplikacja pozwala użytkownikom wędrować poza 5 metrów w urządzeniu HoloLens, być może działa w całej podłodze budynku, musisz zakotwiczyć przestrzenne, aby zachować stabilność zawartości.

Podczas gdy kotwice przestrzenne są doskonałe dla hologramów, które powinny pozostać stałe na świecie, po umieszczeniu kotwicy nie można go przenieść. Istnieją alternatywy dla kotwic, które są bardziej odpowiednie dla dynamicznych hologramów, które tagują wraz z użytkownikiem. Najlepiej jest umieścić dynamiczne hologramy przy użyciu stacjonarnej ramki odniesienia (podstawy współrzędnych świata aparatu Unity) lub dołączonej ramki odwołania.

Najlepsze rozwiązania

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

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

Zazwyczaj użytkownicy są tymi, którzy jawnie umieszczają kotwice przestrzenne.

Na przykład na urządzeniu HoloLens aplikacja może przeciąć promienie wzroku użytkownika za pomocą siatki mapowania przestrzennego , aby umożliwić użytkownikowi podjęcie decyzji, gdzie umieścić hologram. Gdy użytkownik naciska, aby umieścić ten hologram, utwórz kotwicę przestrzenną w punkcie skrzyżowania, a następnie umieść hologram na początku układu współrzędnych tej kotwicy.

Lokalne kotwice przestrzenne są łatwe i wydajne do utworzenia. System łączy dane wewnętrzne, jeśli wiele kotwic może udostępniać swoje podstawowe dane czujnika. Zalecamy utworzenie nowej lokalnej kotwicy przestrzennej dla każdego hologramu, który użytkownik jawnie umieszcza, z wyjątkiem przypadków opisanych poniżej, takich jak sztywne grupy hologramów.

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

Kotwice przestrzenne stabilizują ich układ współrzędny w pobliżu źródła kotwicy. Jeśli renderujesz hologramy ponad 3 metrów od źródła, hologramy mogą doświadczać zauważalnych błędów pozycyjnych proporcjonalnie do ich odległości od tego źródła z powodu efektów dźwigni. To działa, jeśli użytkownik stoi w pobliżu kotwicy, ponieważ hologram jest daleko od użytkownika. Innymi słowy, błąd angular odległego hologramu będzie mały. Jeśli jednak użytkownik przejdzie do tego odległego hologramu, będzie duży w ich widoku, co sprawia, że efekty dźwigni arm z dalekiego pochodzenia kotwicy są oczywiste.

Hologramy grup, które powinny stanowić sztywny klaster

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

Jeśli na przykład animujesz holograficznego układu słonecznego w pomieszczeniu, lepiej jest powiązać wszystkie obiekty układu słonecznego z pojedynczą kotwicą w środku. W ten sposób będą płynnie poruszać się nawzajem. W tym przypadku jest to układ słoneczny jako całość, która jest zakotwiczona, mimo że jego części składowe poruszają się dynamicznie wokół kotwicy.

Kluczową zastrzeżeniem utrzymania stabilności hologramu jest przestrzeganie powyższej reguły 3-metrowej.

Renderowanie wysoce dynamicznych hologramów przy użyciu stacjonarnej ramki odwołania zamiast lokalnej kotwicy przestrzennej

Jeśli masz bardzo dynamiczny hologram, taki jak znak spaceru po pomieszczeniu lub pływający interfejs użytkownika, który następuje 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 ramę stacjonarnego odwołania. W środowisku Unity można to osiągnąć, umieszczając hologramy bezpośrednio we współrzędnych świata bez elementu WorldAnchor. Hologramy w stacjonarnej ramce odniesienia mogą wystąpić dryf, gdy użytkownik jest daleki od hologramu. Ale jest to mniej prawdopodobne, aby zauważalne dla dynamicznych hologramów: hologram stale porusza się i tak lub jego ruch stale utrzymuje go blisko użytkownika, w którym dryf zostanie zminimalizowany.

Jednym z interesujących przypadków dynamicznych hologramów jest obiekt, który animuje się z jednego zakotwiczonego układu współrzędnych do innego. Na przykład możesz mieć dwa zamki 10 metrów od siebie, każdy na własnej kotwicy przestrzennej z jednym zamkiem strzelając do armaty na drugim zamku. Gdy kula armaty jest wystrzeliwane, można ją renderować w odpowiedniej lokalizacji w stacjonarnym ramie odniesienia, aby zbiegać się z armatą w zakotwiczonym układzie współrzędnych pierwszego zamku. Następnie może podążać za trajektorią w stacjonarnej ramie odniesienia, gdy leci 10 metrów przez powietrze. Gdy armata dociera do drugiego zamku, możesz przenieść go do drugiego zamku zakotwiczonego systemu współrzędnych, aby umożliwić obliczenia fizyki z sztywnymi ciałami tego zamku.

Jeśli udostępniasz wysoce dynamiczny hologram na urządzeniach, wybierz kotwicę przestrzenną chmury, aby pełnić rolę elementu nadrzędnego, ponieważ nie można udostępniać stacjonarnych ram referencyjnych między urządzeniami. Należy jednak upewnić się, że dynamiczny hologram lub urządzenia, które wyświetlają go, pozostają w zasięgu 3-metrowego promienia kotwicy, aby hologram był stabilny na wszystkich urządzeniach.

Unikaj tworzenia siatki kotwic przestrzennych

Możesz być kuszony, aby aplikacja upuściła zwykłą siatkę zakotwiczeń przestrzennych, gdy użytkownik przechodzi, przenosząc obiekty dynamiczne z kotwicy do kotwicy w miarę poruszania się. Wiąże się to jednak z większym zarządzaniem aplikacją bez korzyści z głębokich danych czujników, które sam system utrzymuje wewnętrznie. W takich przypadkach uzyskasz lepsze wyniki, umieszczając hologramy w stacjonarnej ramce odniesienia, zgodnie z opisem w powyższej sekcji. Podczas wstępnego pozycjonowania zestawu kotwic przestrzennych chmury wokół przestrzeni statycznej rozważ umieszczenie kotwic przestrzennych w lokalizacjach hologramów kluczy, które użytkownik napotka na zasadzie powyżej, a nie tworząc dowolną siatkę kotwic. Dzięki temu uzyskasz maksymalną stabilność dla tych hologramów kluczy.

Zwalnianie lokalnych kotwic przestrzennych, których już nie potrzebujesz

Podczas gdy lokalna kotwica przestrzenna jest aktywna, system określa priorytet przechowywania danych czujnika, które zbliżają się do tej kotwicy. Jeśli nie używasz już kotwicy przestrzennej, zatrzymaj dostęp do jego układu współrzędnych. Umożliwia to usunięcie podstawowych danych czujników w razie potrzeby.

Jest to szczególnie ważne w przypadku lokalnych kotwic utrwalonych w magazynie zakotwiczenia przestrzennego. Dane czujnika za tymi kotwicami będą przechowywane trwale, 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 należy znaleźć ponownie w przyszłych sesjach. Zalecamy usunięcie ich ze sklepu, gdy użytkownik nie będzie już zrozumiały.

W przypadku zakotwiczeń przestrzennych w chmurze magazyn może być skalowany w zależności od scenariusza. Możesz przechowywać dowolną liczbę kotwic w chmurze, zwalniając je, gdy wiesz, że użytkownicy nie będą musieli ponownie zakotwiczyć.

Zobacz też