Tworzenie punktów orientacyjnych za pomocą ARCore w Jetpack XR

Obsługiwane urządzenia z XR
Te wskazówki pomogą Ci tworzyć aplikacje na te typy urządzeń z XR.
Gogle XR
Przewodowe okulary XR

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)