Çapa, gerçek dünyada sabit bir konumu ve yönü tanımlar. Bir nesneyi tutturma noktasına eklemek, nesnelerin gerçek dünyada gerçekçi bir şekilde yerleştirilmiş gibi görünmesine yardımcı olur.
Jetpack XR için ARCore oturumu oluşturma
Jetpack XR için ARCore oturumu aracılığıyla bağlantı oluşturun. Session
almak için Oturumun yaşam döngüsünü anlama başlıklı makaleyi inceleyin.
Oturumu yapılandırma
Çapalama oluşturmak ve yüklemek için oturumun yapılandırılması gerekmez.
Ancak, XR oturumlarında bağlantı noktası kalıcılığı varsayılan olarak etkin değildir. Yerel depolama alanındaki bağlantıları kalıcı hale getirmek ve yüklemek için oturumu yapılandırın ve AnchorPersistenceMode.LOCAL
modunu ayarlayın:
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. */) }
İçeriği uzayda sabit bir konuma sabitleme
Pose
kullanılarak bir bağlantı oluşturulur. Bu bağlantı, mevcut bir Trackable
ile ilişkili olarak yorumlanabilir veya yorumlanmayabilir.
İzlenebilir bir öğeye göre bağlantı oluşturma
Trackable
gibi bir Plane
'ye göre bir bağlantı oluşturulduğunda, bağlantı uzayda hareket ederken bağlı Trackable
'yı takip eder.
when (val result = trackable.createAnchor(pose)) { is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ } else -> { /* handle failure */ } }
İzlenebilir öğe olmadan bağlantı oluşturma
Trackable
'ya bağlı olmayan bir bağlantı oluşturmak için:
when (val result = Anchor.create(session, pose)) { is AnchorCreateSuccess -> { /* anchor stored in `result.anchor`. */ } else -> { /* handle failure */ } }
Bir öğeyi bağlayıcıya ekleme
Bu konumda bir model oluşturmak için GltfModel
oluşturun ve üst öğesini AnchorEntity
olarak ayarlayın.
AnchorEntity.create(session, anchor).apply { parent = session.scene.activitySpace addChild(entity) }
TrackingState'i anlama
Her Trackable
öğesinin kullanılmadan önce kontrol edilmesi gereken bir TrackingState
vardır.
Tracking
TrackableState
değerine sahip bir Trackable
öğesinin Pose
özelliği sistem tarafından etkin bir şekilde güncellenir. Trackable
olan bir Paused
, gelecekte Tracking
olabilir. Stopped
olan bir Paused
ise asla Tracking
olmaz.
Oturumlar boyunca bir sabitleme noktasını koruma
Kalıcı olmayan bir bağlantı, oturum sonlandırıldıktan sonra kaybolur. Uygulamanız, bir sabitleme noktasını kalıcı hale getirerek bu sabitleme noktasının özel uygulama verilerindeki konumunu hatırlar. Bu bağlantı, sonraki bir oturumda alınabilir ve dünyada aynı konuma sabitlenir.
Bir sabitleme noktasını kalıcı hale getirmek için burada gösterildiği gibi Anchor.persist()
kullanın:
val uuid = anchor.persist()
Uygulamanız, gelecekteki bir oturumda UUID
kullanarak bağlantı noktasını 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 bir sabitleyiciye ihtiyacınız olmadığında unpersist()
işlevini çağırın. Bu işlem, sabiti uygulamanızın depolama alanından kaldırır ve verilen UUID'nin Anchor.load()
çağrıları için alınamaz hale gelmesine neden olur.
Anchor.unpersist(session, uuid)
Uygulamanız, kalıcı hale getirilmiş ve uygulamanızın depolama alanında hâlâ bulunan tüm bağlantı noktalarının listesini de isteyebilir:
val uuids = Anchor.getPersistedAnchorUuids(session)