Çapa, gerçek dünyadaki bir konumu ve yönü tanımlar. Bir nesneyi bir sabitleme noktasına eklemek, nesnelerin gerçek dünyada gerçekçi bir şekilde yerleştirilmiş gibi görünmesine yardımcı olur ve uygulamanızın her karede mantık çalıştırması gerekmediğinden güç tasarrufu yapmasını sağlar.
Bir oturuma erişme
Jetpack XR için ARCore Session aracılığıyla bağlantı oluşturun. XR için Jetpack Compose kullanarak uzamsal kullanıcı arayüzünü geliştiriyorsanız XR için Jetpack Compose'daki bir oturuma erişin. Jetpack SceneCore kitaplığındaki uzamsallaştırılmış öğelerle çalışıyorsanız Jetpack XR Runtime'dan bir oturuma erişin.
Oturumu yapılandırma
Çapalama oluşturmak ve yüklemek için oturumun yapılandırılması gerekmez.
Ancak, sabitleme kalıcılığı XR oturumlarında 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 = 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. */) }
İçeriği uzayda bir konuma sabitleme
Pose kullanılarak oluşturulan bir bağlantı, mevcut bir Anchorable ile ilişkili olarak yorumlanabilir veya dünyada sabitlenebilir. Anchorable, sabit reklamların eklenebileceği bir Trackable türüdür.
Anchorable öğesine göre bir bağlantı oluşturma
Anchorable'ya (ör. Plane) göre bir bağlantı oluşturulduğunda, bağlantı uzayda hareket ederken ekli Anchorable'yı takip eder.
val anchor = plane.createAnchor(pose)
Dünyaya sabitlenmiş bir bağlantı oluşturma
Dünyada sabit bir bağlantı oluşturmak için bağlantıyı bir Anchorable'ya eklemeyin. Bu tür bir sabitleme noktasını yalnızca uzayda yüzen noktalar için kullanın. Çünkü oturumun, hareket etmeyen nesnelerin konumuna ilişkin tahmini zaman içinde değişir:
val anchor = Anchor.create(session, pose)
Bir öğeyi bağlayıcıya ekleme
Bu konumda bir model oluşturmak için GltfModel oluşturun ve üst öğesini AnchorSpace olarak ayarlayın.
AnchorSpace.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. Paused olan bir Trackable gelecekte
Tracking olabilir. Stopped olan bir 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 Anchor.persist() öğesini burada gösterildiği gibi kullanın:
val uuid = anchor.persist()
Uygulamanız, gelecekteki bir oturumda UUID kullanarak bağlantıyı 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 kalmadığında unpersist() işlevini çağırın. Bu işlem, uygulamanızın depolama alanından sabiti kaldırır ve verilen UUID'nin Anchor.load() çağrıları için alınamaz hale gelmesini sağlar.
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)