Kotwice przestrzenne

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

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.
  • Korzystając z usługi Azure Spatial Anchors do tworzenia kotwicy w chmurze, aplikacja może udostępniać kotwicę przestrzenną na wielu urządzeniach HoloLens, iOS i Android. Dzięki temu, że każde urządzenie wyrenderuje hologram przy użyciu tej samej kotwicy przestrzennej, użytkownicy zobaczą, że hologram pojawi się w tym samym miejscu w świecie rzeczywistym. Umożliwia to współdzielone środowisko w czasie rzeczywistym.
  • Usługi Azure Spatial Anchors można również używać do asynchronicznej trwałości hologramów na HoloLens, iOS i Android. Dzięki udostępnieniu trwałego zakotwiczenia przestrzennego 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 obsługi w skali stałej lub w pomieszczeniu dla tetheredowych zestawów nagłownych stacjonarnych, które będą pozostawać w zasięgu 5-miernikowego, zazwyczaj można użyć ramki etapu zamiast kotwic przestrzennych, która zapewnia jeden układ współrzędnych, w którym będzie renderowana cała zawartość. Jeśli jednak aplikacja pozwala użytkownikom wyjść poza 5 metrów w HoloLens, być może działając na całym poziomie budynku, potrzebne będą kotwice przestrzenne, aby zapewnić stabilność zawartości.

Kotwice przestrzenne są doskonałe dla hologramów, które powinny pozostać stałe na świecie, ale po umieszczeniu kotwicy nie można jej przenosić. 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 niesionej 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 pozycję, 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.

Kotwicone hologramy są zawsze renderowane 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 z powodu efektów ręki. 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 przechodzi do tego odległego hologramu, będzie on duży w widoku, dzięki czemu efekt ręki z odległego źródła kotwicy będzie oczywisty.

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 zachowają 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ę bez zakłóceń 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ą zastrzeżeniaą do zachowania stabilności hologramu jest zachowanie powyższej reguły 3-miernikowej.

Renderowanie wysoce dynamicznych hologramów przy użyciu ramek odwołania 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 klatkę referencyjną . W a aparatu Unity można to osiągnąć, umieszczając hologramy bezpośrednio w współrzędnych świata bez obiektu WorldAnchor. Hologramy w nieudokucyjną ramce odniesienia może wystąpić dryf, gdy użytkownik jest daleko od hologramu. Jednak jest to mniej prawdopodobne, że będzie to zauważalne w przypadku hologramów dynamicznych: 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 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. Po pożarze piłki można renderować ją w odpowiedniej lokalizacji w ramce odwołania, aby pokrywała się z chłoną w pierwszym zakotwiczonym układzie współrzędnych. Następnie może podążać za swoją trajektorią w najgorętszej ramce odniesienia, ponieważ ma 10 metrów w powietrzu. Gdy piłkę dotrze do drugiego grawisa, 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 na różnych urządzeniach, wybierz kotwicę przestrzenną chmury, która będzie pełnić swoją nadrzędną funkcji, ponieważ nie można udostępniać ramek referencyjnych między urządzeniami. Należy jednak upewnić się, że dynamiczny hologram lub wyświetlane na nim urządzenia pozostają w promieniu 3-miernika kotwicy, aby hologram był stabilny na wszystkich urządzeniach.

Unikaj tworzenia siatki kotwic przestrzennych

Może być kuszące, aby aplikacja pomieściła zwykłą siatkę kotwic przestrzennych podczas przechodzenia przez użytkownika, przenoszonych obiektów dynamicznych z kotwicy do kotwicy podczas ich poruszania się. Wiąże się to jednak z większą koniecznością zarządzania aplikacją bez korzystania z danych z głębokiego czujnika, które system utrzymuje wewnętrznie. W takich przypadkach można osiągnąć lepsze wyniki, umieszczając hologramy w bezdusznych ramkach odniesienia, zgodnie z opisem w powyższej sekcji. Jeśli ustawiasz wstępnie zestaw kotwic przestrzennych chmury wokół statycznej przestrzeni, rozważ umieszczenie kotwic przestrzennych w lokalizacjach kluczowych hologramów, na które użytkownik natknie się zgodnie z powyższymi zasadami, zamiast tworzyć dowolną siatkę kotwic. Dzięki temu zyskasz maksymalną stabilność dla tych kluczowych hologramów.

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

Gdy lokalna kotwica przestrzenna jest aktywna, system określa priorytet przechowywania danych czujników, 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 zgodnie z potrzebami.

Jest to szczególnie ważne w przypadku kotwic lokalnych utrwalonych w magazynie kotwic przestrzennych. Dane czujników za tymi kotwicami będą trwale przechowywane w pobliżu, aby umożliwić aplikacji odnalezienie 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 nie są 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 chmury, ile potrzebujesz, zwalniając je, gdy wiadomo, że użytkownicy nie będą już potrzebować kotwicy.

Zobacz też