Kotwica opisuje stałą lokalizację i orientację w świecie rzeczywistym. Przymocowanie obiektu do punktu zakotwiczenia sprawia, że obiekt wygląda realistycznie w świecie rzeczywistym.
Tworzenie sesji ARCore w Jetpack XR
Twórz kotwice w sesji ARCore w Jetpack XR. Aby uzyskać Session, przeczytaj artykuł Omówienie cyklu życia sesji.
Konfigurowanie sesji
Tworzenie i wczytywanie kotwic nie wymaga skonfigurowania sesji.
Jednak w sesjach XR trwałość kotwic nie jest domyślnie włączona. Aby utrwalać i wczytywać kotwice z pamięci lokalnej, skonfiguruj sesję i ustaw tryb AnchorPersistenceMode.LOCAL:
val newConfig = session.config.copy( anchorPersistence = Config.AnchorPersistenceMode.LOCAL, ) when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
Przytwierdzanie treści do stałego miejsca w przestrzeni
Punkt zakotwiczenia jest tworzony za pomocą elementu Pose, który może być interpretowany względem istniejącego elementu Trackable lub nie.
Tworzenie kotwicy względem obiektu Trackable
Gdy kotwica jest tworzona względem Trackable, np. Plane, dzięki czemu kotwica podąża za dołączonym Trackable, gdy ten porusza się w przestrzeni.
when (val result = trackable.createAnchor(pose)) { is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ } else -> { /* handle failure */ } }
Tworzenie kotwicy bez obiektu Trackable
Aby utworzyć kotwicę, która nie jest dołączona do Trackable:
when (val result = Anchor.create(session, pose)) { is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ } else -> { /* handle failure */ } }
Dołączanie elementu do kotwicy
Aby wyrenderować model w tej lokalizacji, utwórz GltfModel i ustaw jego element nadrzędny na AnchorEntity.
AnchorEntity.create(session, anchor).apply { parent = session.scene.activitySpace addChild(entity) }
Informacje o stanie śledzenia
Każdy Trackable ma TrackingState, który należy sprawdzić przed użyciem.
Trackable, który ma TrackableState o wartości Tracking, jest aktywnie aktualizowany przez system.Pose Trackable, które jest Paused, może w przyszłości stać się Tracking, natomiast Stopped nigdy nie stanie się Tracking.
Zachowywanie kotwicy w sesjach
Kotwica, która nie jest trwale zapisana, znika po zakończeniu sesji. Zapisując kotwicę, aplikacja zapamiętuje jej położenie w prywatnych danych aplikacji. Można go pobrać w kolejnej sesji i jest on zakotwiczony w tym samym miejscu na świecie.
Aby utrwalić kotwicę, użyj Anchor.persist(), jak pokazano poniżej:
val uuid = anchor.persist()
Aplikacja może pobrać kotwicę, używając w przyszłej sesji funkcji UUID:
when (val result = Anchor.load(session, uuid)) { is AnchorCreateSuccess -> { // Loading was successful. The anchor is stored in result.anchor. } else -> { // handle failure } }
Gdy kotwica nie będzie już potrzebna, kliknij unpersist(). Spowoduje to usunięcie kotwicy z pamięci aplikacji i uniemożliwi pobranie danego identyfikatora UUID w przypadku wywołań funkcji Anchor.load().
Anchor.unpersist(session, uuid)
Aplikacja może też poprosić o listę wszystkich zapisanych kotwic, które nadal znajdują się w pamięci aplikacji:
val uuids = Anchor.getPersistedAnchorUuids(session)