Anchor menjelaskan lokasi dan orientasi tetap di dunia nyata. Melampirkan objek ke penahan membantu objek tampak ditempatkan secara realistis di dunia nyata.
Membuat sesi ARCore untuk Jetpack XR
Membuat anchor melalui sesi ARCore untuk Jetpack XR. Lihat Memahami siklus proses Sesi untuk mendapatkan Session
.
Mengonfigurasi Sesi
Pembuatan dan pemuatan anchor tidak memerlukan konfigurasi sesi.
Namun, persistensi penanda tidak diaktifkan secara default pada sesi XR. Untuk mempertahankan
dan memuat penanda dari penyimpanan lokal, konfigurasikan sesi dan tetapkan mode
AnchorPersistenceMode.LOCAL
:
val newConfig = session.config.copy( anchorPersistence = Config.AnchorPersistenceMode.LOCAL, ) when (val result = session.configure(newConfig)) { is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* A different unhandled exception was thrown. */) }
Menyematkan konten ke lokasi tetap di ruang
Anchor dibuat menggunakan Pose
, yang dapat ditafsirkan relatif terhadap
Trackable
yang ada atau tidak.
Membuat anchor relatif terhadap Objek yang Dapat Dilacak
Saat anchor dibuat relatif terhadap Trackable
, seperti Plane
, yang membuat anchor mengikuti Trackable
yang terpasang saat bergerak melalui ruang.
when (val result = trackable.createAnchor(pose)) { is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ } else -> { /* handle failure */ } }
Membuat anchor tanpa Trackable
Untuk membuat anchor yang tidak terlampir ke Trackable
:
when (val result = Anchor.create(session, pose)) { is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ } else -> { /* handle failure */ } }
Menempelkan entitas ke penanda
Untuk merender model di lokasi ini, buat GltfModel
dan tetapkan induknya
ke AnchorEntity
.
AnchorEntity.create(session, anchor).apply { parent = session.scene.activitySpace addChild(entity) }
Memahami TrackingState
Setiap Trackable
memiliki TrackingState
yang harus diperiksa sebelum digunakan.
Trackable
yang memiliki TrackableState
Tracking
akan diperbarui secara aktif oleh sistem.Pose
Trackable
yang Paused
dapat menjadi Tracking
pada
masa mendatang, sedangkan yang Stopped
tidak akan pernah menjadi Tracking
.
Mempertahankan Anchor di seluruh sesi
Anchor yang tidak dipertahankan akan menghilang setelah sesi dihancurkan. Dengan mempertahankan anchor, aplikasi Anda akan mengingat posisi anchor tersebut dalam data aplikasi pribadinya. Anchor ini dapat diambil pada sesi berikutnya dan di-anchor di lokasi yang sama di dunia.
Untuk mempertahankan anchor, gunakan Anchor.persist()
seperti yang ditunjukkan di sini:
val uuid = anchor.persist()
Aplikasi Anda dapat mengambil penanda menggunakan UUID
dalam sesi mendatang:
when (val result = Anchor.load(session, uuid)) { is AnchorCreateSuccess -> { // Loading was successful. The anchor is stored in result.anchor. } else -> { // handle failure } }
Jika Anda tidak memerlukan anchor lagi, panggil unpersist()
. Tindakan ini akan menghapus
anchor dari penyimpanan aplikasi Anda dan membuat UUID yang diberikan tidak dapat diambil untuk
panggilan ke Anchor.load()
.
Anchor.unpersist(session, uuid)
Aplikasi Anda juga dapat meminta daftar semua anchor yang telah dipertahankan dan masih ada di penyimpanan aplikasi Anda:
val uuids = Anchor.getPersistedAnchorUuids(session)