Sabitleyici, gerçek dünyadaki sabit bir konumu ve yönü tanımlar. Bir nesneyi bir ankraja bağlamak, nesnelerin gerçek dünyada gerçekçi bir şekilde yerleştirilmiş görünmesine yardımcı olur.
Jetpack XR için ARCore oturumu oluşturma
Jetpack XR için ARCore oturumu aracılığıyla ankrajlar oluşturun. Session
almak için Oturumların yaşam döngüsünü anlama başlıklı makaleyi inceleyin.
Oturumu yapılandırma
Yer işaretleri oluşturmak ve yüklemek için oturumun yapılandırılması gerekmez. Ancak ankraj devamlılığı, XR oturumlarında varsayılan olarak etkin değildir. Sabitlemek ve yüklemek için oturumu yapılandırın:
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! */) }
İçeriği alanda sabit bir konuma sabitleme
Bir Pose
kullanılarak bir ankraj oluşturulur. Bu ankraj, mevcut bir Trackable
'e göre yorumlanabilir veya yorumlanamaz.
İzlenebilir öğeye göre bir anafor oluşturma
Bir sabitleyici, Plane
gibi bir Trackable
'ye göre oluşturulduğunda, sabitleyici, alanda hareket ederken bağlı Trackable
'yi takip eder.
when (val result = trackable.createAnchor(pose)) { is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ } else -> { /* handle failure */ } }
İzlenebilir olmadan bir ana sayfa bağlantısı oluşturma
Trackable
öğesine bağlı olmayan bir ana başlık oluşturmak için:
when (val result = Anchor.create(session, pose)) { is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ } else -> { /* handle failure */ } }
Bir öğeyi bir ana sayfaya ekleme
Bu konumda bir model oluşturmak için [GltfModel
oluşturun][5] ve üst öğesini AnchorEntity
olarak ayarlayın.
AnchorEntity.create(session, anchor).apply { setParent(session.activitySpace) addChild(entity) }
TrackingState'i anlama
Her Trackable
öğesinin, kullanılmadan önce kontrol edilmesi gereken bir TrackingState
'si vardır.
Tracking
TrackableState
değerine sahip bir Trackable
'nin Pose
değeri sistem tarafından etkin bir şekilde güncellenir. Paused
olan bir Trackable
gelecekte Tracking
olabilir, ancak Stopped
olan bir Trackable
hiçbir zaman Tracking
olmaz.
Sabit noktaları oturumlar boyunca koruma
Kalıcı olmayan bir ankraj, oturum sona erdikten sonra kaybolur. Uygulamanız, bir ankarayı kalıcı hale getirerek bu ankarayı özel uygulama verilerinde hatırlar. Bu ankraj, sonraki bir oturumda alınabilir ve dünyadaki aynı konuma sabitlenir.
Sabit bir yer işareti oluşturmak için burada gösterildiği gibi anchor.persist()
simgesini kullanın:
val uuid = anchor.persist()
Uygulamanız, gelecekteki bir oturumda UUID
kullanarak ankörü alabilir:
when (val result = Anchor.load(session, uuid)) { is AnchorCreateSuccess -> { // Loading was successful. The anchor is stored in result.anchor. } else -> { // handle failure } }
Artık sabitleyiciye ihtiyacınız kalmadığında unpersist()
numaralı telefonu arayın. Bu işlem, ankörü uygulamanızın depolama alanından kaldırır ve belirtilen UUID'yi Anchor.load()
çağrıları için alınamaz hale getirir.
Anchor.unpersist(session, uuid)
Uygulamanız, kalıcı hale getirilmiş ve uygulamanızın depolama alanında hâlâ bulunan tüm ankrajların listesini de isteyebilir:
val uuids = Anchor.getPersistedAnchorUuids(session)