Punkt kotwiczenia określa stałą lokalizację i orientację w świecie rzeczywistym. Dodanie obiektu do punktu zakotwiczenia pomaga w realistycznym umieszczeniu obiektów w świecie rzeczywistym.
Tworzenie sesji ARCore na potrzeby Jetpack XR
Tworzenie punktów kotwiczenia w ramach sesji Jetpack XR dla ARCore. Aby uzyskać Session
, zapoznaj się z artykułem Omówienie cyklu życia sesji.
Konfigurowanie sesji
Tworzenie i wczytywanie kotwic nie wymaga konfiguracji sesji. Jednak w sesjach XR trwałość kotwicy nie jest domyślnie włączona. Aby zachować i załadować kotwy, skonfiguruj sesję:
val newConfig = session.config.copy( anchorPersistence = Config.AnchorPersistenceMode.Enabled, ) when (val result = session.configure(newConfig)) { is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) is SessionConfigurePermissionsNotGranted -> TODO(/* The required permissions in result.permissions have not been granted. */) is SessionConfigureSuccess -> TODO(/* Success! */) }
zakotwiczenie treści w stałym miejscu w przestrzeni,
Kotwica jest tworzona za pomocą elementu Pose
, który może być interpretowany w stosunku do istniejącego elementu Trackable
lub nie.
Tworzenie kotwicy względem śledzonego obiektu
Gdy kotwnik jest tworzony względem Trackable
, np. Plane
, co powoduje, że kotwnik 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 śledzenia
Aby utworzyć kotwicę, która nie jest powiązana z 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 tym miejscu, [utwórz element GltfModel
][5] i ustaw jego element nadrzędny na AnchorEntity
.
AnchorEntity.create(session, anchor).apply { setParent(session.activitySpace) addChild(entity) }
Opis stanu śledzenia
Każdy Trackable
ma TrackingState
, który należy sprawdzić przed użyciem.
Trackable
z TrackableState
Tracking
ma Pose
aktywnie aktualizowane przez system. Element Trackable
o wartości Paused
może w przyszłości uzyskać wartość Tracking
, natomiast element o wartości Stopped
nigdy nie będzie miał wartości Tracking
.
Zachowywanie punktu kotwiczenia w całości sesji
Kotwica, która nie jest trwała, znika po zakończeniu sesji. Dzięki zapisaniu kotwicy aplikacja zapamięta jej pozycję w swoich prywatnych danych. Ten punkt kotwiczenia można pobrać w kolejnych sesjach. Jest on zakotwiczony w tym samym miejscu na świecie.
Aby zachować kotwicę, użyj elementu anchor.persist()
, jak pokazano tutaj:
val uuid = anchor.persist()
Aplikacja może pobrać kotwicę, używając parametru UUID
w przyszłej sesji:
when (val result = Anchor.load(session, uuid)) { is AnchorCreateSuccess -> { // Loading was successful. The anchor is stored in result.anchor. } else -> { // handle failure } }
Gdy nie potrzebujesz już kotwicy, zadzwoń pod numer unpersist()
. Spowoduje to usunięcie kotwicy z pamięci aplikacji i uniemożliwi odzyskanie podanego identyfikatora UUID w przypadku wywołań funkcji Anchor.load()
.
Anchor.unpersist(session, uuid)
Aplikacja może też poprosić o listę wszystkich zachowanych kotwic, które są nadal dostępne w pamięci aplikacji:
val uuids = Anchor.getPersistedAnchorUuids(session)