Jetpack XR için ARCore'u kullanarak uçakları algılama

Geçerli XR cihazlar
Bu kılavuz, bu tür XR cihazlar için deneyimler oluşturmanıza yardımcı olur.
XR Kulaklıklar
Kablolu XR Gözlükler

Jetpack XR için ARCore, kullanıcının ortamındaki düz yüzeyleri algılayabilir ve bu yüzeylerle ilgili poz, boyut ve yön gibi bilgiler sağlayabilir. Bu, uygulamanızın nesneleri yerleştirebileceği masalar gibi yüzeyleri bulmasına yardımcı olabilir.

Bir oturuma erişme

Jetpack XR için ARCore Session aracılığıyla düzlem bilgilerine erişme. XR için Jetpack Compose'u kullanarak üç boyutlu kullanıcı arayüzünü geliştiriyorsanız XR için Jetpack Compose'dan 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

Düzlem algılama, XR oturumlarında varsayılan olarak etkin değildir. Düzlem izlemeyi etkinleştirmek için oturumu yapılandırın ve PlaneTrackingMode.HORIZONTAL_AND_VERTICAL modunu ayarlayın:

val newConfig = session.config.copy(
    planeTracking = Config.PlaneTrackingMode.HORIZONTAL_AND_VERTICAL,
)
when (val result = session.configure(newConfig)) {
    is SessionConfigureSuccess -> TODO(/* Success! */)
    else ->
        TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */)
}

Algılanan düzlemlerin durumunu alma

Jetpack XR için ARCore, düzlemlerin durumunu düzlemlerin durumunu yayan bir StateFlow aracılığıyla sağlar. Bir oturumda düzlemlere abone olmak, düzlemler eklendiğinde, güncellendiğinde veya kaldırıldığında uygulamanızı bilgilendirir.

Plane.subscribe(session).collect { planes ->
    // Planes have changed; update plane rendering
}

Bir düzlem aşağıdaki özelliklere sahiptir:

  • label: Belirli bir Plane için anlamsal açıklama. WALL, FLOOR, CEILING veya TABLE olabilir.
  • centerPose: Algılanan düzlemin merkezinin duruşu.
  • extents: Algılanan düzlemin metre cinsinden boyutları.
  • vertices: Düzlemi yaklaşık olarak gösteren dışbükey bir poligonun köşelerinin listesi.

Düzlemlere karşı isabet testi gerçekleştirme

Vuruş testi, bir ışının oturum tarafından izlenen nesnelerle kesişimini hesaplama yöntemidir. Vurma testinin yaygın bir uygulaması, bir masayı işaretleyip o konuma bir nesne yerleştirmektir. İsabet testi yapıldığında isabet eden nesnelerin listesi oluşturulur. Diğer bir deyişle, isabet testi ilk isabette durmaz. Ancak genellikle belirli bir türdeki ilk nesne isabetiyle ilgilenirsiniz.

Bir isabet testi gerçekleştirmek için Interaction.hitTest() ile Ray kullanın:

val results = androidx.xr.arcore.hitTest(session, ray)
// When interested in the first Table hit:
val tableHit = results.firstOrNull {
    val trackable = it.trackable
    trackable is Plane && trackable.state.value.label == Plane.Label.TABLE
}