Udostępnij za pośrednictwem


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 odniesienia, aby zapewnić, że zakotwiczone hologramy pozostają dokładnie na miejscu. Renderowanie hologramu w systemie 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 na miejsce w oparciu o rzeczywisty świat.

Możesz również utrwalać i udostępniać kotwice przestrzenne między sesjami aplikacji: 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.

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 etapowej odwołania zamiast kotwic przestrzennych, który zapewnia jeden układ współrzędnych, w którym renderuje 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łym piętrze budynku, potrzebne będą kotwice przestrzenne, aby zachować stabilność zawartości.

Podczas gdy kotwice przestrzenne doskonale nadają się do hologramów, które powinny pozostać stałe na świecie, po umieszczeniu kotwicy nie można go przenosić. Istnieją alternatywy dla kotwic, które są bardziej odpowiednie dla dynamicznych hologramów tagu 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 odniesienia.

Najlepsze rozwiązania

Te wytyczne dotyczące zakotwiczenia przestrzennego ułatwią renderowanie stabilnych hologramów, które dokładnie śledzą świat rzeczywisty.

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

Zazwyczaj użytkownicy to te, które jawnie umieszczają kotwice przestrzenne.

Na przykład na urządzeniu HoloLens aplikacja może przecinać promienie wzroku użytkownika z siatką mapowania przestrzennego, aby umożliwić użytkownikowi podjęcie decyzji, gdzie umieścić hologram. Gdy użytkownik naciśnie 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 z czujników. 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ą swój układ współrzędnych w pobliżu źródła kotwicy. W przypadku renderowania hologramów ponad 3 metrów od źródła hologramy mogą wystąpić zauważalne błędy pozycyjne 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 daleki od użytkownika, zbyt. 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 odległego 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 powiązać wszystkie obiekty układu słonecznego z jedną kotwicą w środku. W ten sposób będą bezproblemowo 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.

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

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

Jeśli masz bardzo dynamiczny hologram, taki jak znak przechodzący 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 nieruchomą ramkę odniesienia. W środowisku Unity można to osiągnąć, umieszczając hologramy bezpośrednio we współrzędnych świata bez elementu WorldAnchor. Hologramy w nieruchomej ramce odniesienia mogą wystąpić dryf, gdy użytkownik jest daleki od hologramu. Ale jest to mniej prawdopodobne, aby być zauważalne dla dynamicznych hologramów: hologram stale porusza się mimo to lub jego ruch stale utrzymuje go blisko użytkownika, gdzie dryf zostanie zminimalizowany.

Jednym z interesujących przypadków hologramów dynamicznych jest obiekt animowany z jednego zakotwiczonego układu współrzędnych do innego. Na przykład możesz mieć dwa zamki 10 metrów od siebie, z których każda na własnym kotwicy przestrzennej z jednym zamkiem strzela kulę armatni na drugim zamku. Po wystrzeliciu armaty można go renderować w odpowiedniej lokalizacji w nieruchomej ramie odniesienia, aby zbiegać się z armatą w pierwszym zamku zakotwiczonego układu współrzędnych. Następnie może podążać za trajektorią w stacjonarnym ramie odniesienia, gdy leci 10 metrów przez powietrze. Gdy kula armaty dociera do drugiego zamku, można przenieść go do zakotwiczonego systemu współrzędnych drugiego zamku, aby umożliwić obliczenia fizyki z sztywnymi ciałami tego zamku.

Jeśli udostępniasz wysoce dynamiczny hologram na różnych urządzeniach, wybierz część kotwicy przestrzennej w chmurze, aby działać jako element nadrzędny, ponieważ nie można udostępniać ramek referencyjnych na urządzeniach. Należy jednak upewnić się, że dynamiczny hologram lub urządzenia wyświetlane na nim pozostają w promieniu 3-metrowym zakotwiczenia, aby hologram był stabilny na wszystkich urządzeniach.

Unikaj tworzenia siatki kotwic przestrzennych

Możesz być kuszony, aby aplikacja porzuciła zwykłą siatkę kotwic przestrzennych, gdy użytkownik przechodzi, przenosząc obiekty dynamiczne z kotwicy do kotwicy podczas poruszania się. Jednak wiąże się to z większym zarządzaniem aplikacją bez korzyści płynniejszych z danych z czujników, które sam system utrzymuje wewnętrznie. W takich przypadkach uzyskasz lepsze wyniki, umieszczając hologramy w nieruchomej ramce odniesienia zgodnie z opisem w powyższej sekcji. Jeśli wstępnie umieszczasz zestaw kotwic przestrzennych chmury wokół przestrzeni statycznej, rozważ umieszczenie kotwic przestrzennych w lokalizacjach hologramów kluczy, które użytkownik napotka na zasadzie powyżej, zamiast tworzyć 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 są blisko 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, które zostały utrwalone w magazynie kotwicy przestrzennej. 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. Utrwali tylko lokalne kotwice, które należy znaleźć ponownie w przyszłych sesjach. Zalecamy usunięcie ich ze sklepu, gdy użytkownik nie ma już znaczenia.

W przypadku kotwic przestrzennych chmury magazyn może być skalowany w miarę potrzeby scenariusza. Możesz przechowywać dowolną liczbę kotwic w chmurze, zwalniając je, gdy wiesz, że użytkownicy nie będą potrzebować kotwicy ponownie.

Zobacz też