Reklama zakotwiczona opisuje stałą lokalizację i orientację w świecie rzeczywistym. Dołączenie obiektu do reklamy zakotwiczonej sprawia, że obiekty wyglądają realistycznie w świecie rzeczywistym.
Dostęp do sesji
Twórz reklamy zakotwiczone za pomocą ARCore dla Jetpack XR Session. Jeśli ulepszasz
przestrzenny interfejs użytkownika za pomocą Jetpack Compose for XR, uzyskaj dostęp do sesji z
Jetpack Compose for XR. Jeśli pracujesz z przestrzennymi elementami
z biblioteki Jetpack SceneCore, uzyskaj dostęp do sesji z Jetpack XR
Runtime.
Konfigurowanie sesji
Tworzenie i wczytywanie reklam zakotwiczonych nie wymaga konfigurowania sesji.
Jednak trwałość reklam zakotwiczonych nie jest domyślnie włączona w sesjach XR. Aby zachować
i wczytywać reklamy zakotwiczone z pamięci lokalnej, skonfiguruj sesję i ustaw
AnchorPersistenceMode.LOCAL tryb:
val newConfig = Config.Builder(session.config) .setAnchorPersistence(AnchorPersistenceMode.LOCAL) .build() when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
Zakotwiczanie treści w stałym miejscu w przestrzeni
Reklama zakotwiczona jest tworzona za pomocą Pose, którą można interpretować względem
istniejącego elementu Anchorable lub nie. Anchorable to element Trackable
, do którego można dołączyć reklamy zakotwiczone.
Tworzenie reklamy zakotwiczonej względem elementu Anchorable
Gdy reklama zakotwiczona jest tworzona względem elementu Anchorable, np. Plane, reklama zakotwiczona podąża za dołączonym elementem Anchorable, gdy ten porusza się w przestrzeni.
val anchor = plane.createAnchor(pose)
Tworzenie reklamy zakotwiczonej bez elementu Anchorable
Aby utworzyć reklamę zakotwiczoną, która nie jest dołączona do elementu Anchorable:
val anchor = Anchor.create(session, pose)
Dołączanie elementu do reklamy zakotwiczonej
Aby renderować model w tej lokalizacji, utwórz GltfModel i ustaw jego
element nadrzędny na AnchorSpace.
AnchorEntity.create(session, anchor).apply { parent = session.scene.activitySpace addChild(entity) }
Informacje o TrackingState
Każdy element Trackable ma TrackingState, który należy sprawdzić przed użyciem.
Element Trackable, który ma TrackableState ustawiony na Tracking, ma Pose aktywnie
aktualizowany przez system. Element Trackable, który jest Paused, może w przyszłości stać się Tracking, natomiast element Stopped nigdy nie stanie się Tracking.
Zachowywanie reklamy zakotwiczonej w sesjach
Reklama zakotwiczona, która nie jest zachowywana, znika po zniszczeniu sesji. Zachowując reklamę zakotwiczoną, aplikacja zapamiętuje jej położenie w prywatnych danych aplikacji. Tę reklamę zakotwiczoną można pobrać w kolejnej sesji i jest ona zakotwiczona w tej samej lokalizacji na świecie.
Aby zachować reklamę zakotwiczoną, użyj Anchor.persist() w sposób pokazany poniżej:
val uuid = anchor.persist()
Aplikacja może pobrać reklamę zakotwiczoną za pomocą 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ż reklamy zakotwiczonej, wywołaj unpersist(). Spowoduje to usunięcie
reklamy zakotwiczonej z pamięci aplikacji i uniemożliwi pobranie danego UUID w przypadku
wywołań Anchor.load().
Anchor.unpersist(session, uuid)
Aplikacja może też poprosić o listę wszystkich zachowanych reklam zakotwiczonych, które nadal znajdują się w pamięci aplikacji:
val uuids = Anchor.getPersistedAnchorUuids(session)