Coğrafi Derinlik ile aralığınızı genişletin

Geospatial Depth Ana Görseli

ARCore Depth API artık, Streetscape Geometry de etkinleştirildiğinde Derinlik API'sinin menzilini ve hızını otomatik olarak artıran Geospatial Depth API'yi destekliyor. VPS kapsamı olan bir konumda ve Streetscape Geometrisinin etkin olduğu bir konumda olduğunda, Derinlik API'sinden alınan görüntüler, mevcut konumdan 65 metre mesafeye kadar alanda alınan arazi ve bina geometrisini içerir. Geometriden alınan bu derinlik verisi, yerel derinlik gözlemleriyle birleştirilir ve kullanıcı yeni bir konuma taşındıkça güncellenir.

ARCore Depth API çağrıları artık hem kameradan yerel gözlemler hem de Streetscape Geometry'den binaları ve arazileri tek bir derinlik resminde bir araya getiriyor.

Cihaz uyumluluğu

Coğrafi Derinlik, Depth API'yi destekleyen tüm cihazlarda kullanılabilir. Bu özellik, desteklenen bir donanım derinlik sensörü (ör. geçiş süresi (ToF) sensörü) gerektirmez. Bununla birlikte, Depth API bir cihazda desteklenen tüm donanım sensörlerinden yararlanır.

Performansa olan etkisi

Coğrafi Derinlik, Streetscape Geometrisinin ilk indirildiğinde derinlik gösterimine entegre edilmesi için oturumun başında tek seferlik küçük bir hesaplama işlevi sunuyor, ancak derinlik hesaplama maliyetini ölçülebilir şekilde artırmaz.

Derinlik aralığı

Coğrafi Derinlik olmadığında, derinlikli görüntülerdeki tipik aralıklar yaklaşık 20-30 metre uzaktadır ve bu aralığın ötesindeki derinlik gözlemlerinin yoğunluğu ve doğruluğu azaltılır. Coğrafi Derinlik etkinleştirildiğinde, yoğun biçimde örneklenmiş derinlik değerlerinin başlangıçta az miktarda hareketle bile 65, 535 metreye kadar ulaşması normaldir.

Kullanım alanları

ARCore Depth API, halihazırda desteklenen mevcut tüm kullanım alanlarında kullanılabilir. Coğrafi Derinlik sayesinde, VPS destekli konumlarda elde edilen derinlik görüntüleri, uzun aralıklı derinliklerle eskisinden daha hızlı doldurulacak. Böylece, dış mekan ortamlarında uzun mesafeli derinliği hedefleyen kullanım alanları elde edilebilecek. Bazı kullanım alanları şunlardır:

  • Sanal içerik ve diğer görsel efektler için bina ölçeği kapama
  • Dış mekan navigasyonu
  • Mesafe ölçümleri

Sınırlamalar

Coğrafi Derinlik yalnızca VPS yerelleştirme ve Streetscape Geometri'yi destekleyen bölgelerde desteklenir. Diğer alanlarda, ARCore Derinlik API'si Coğrafi değerler olmadan normal şekilde çalışır.

Ön koşullar

Devam etmeden önce temel AR kavramlarını ve ARCore oturumunu nasıl yapılandıracağınızı anladığınızdan emin olun.

Coğrafi Derinliği Etkinleştir

Yeni bir ARCore oturumunda, kullanıcının cihazının Derinlik ve Geospatial API'yi destekleyip desteklemediğini kontrol edin. ARCore uyumlu cihazların tümü, işlem gücü kısıtlamaları nedeniyle Depth API'yi desteklemez.

Kaynakları kaydetmek için, derinlik ARCore'da varsayılan olarak devre dışı bırakılır. Uygulamanızın Depth API'yi kullanması için derinlik modunu etkinleştirin. Buna ek olarak, Coğrafi Derinliği kullanmak için Coğrafi modu ve Streetscape Geometrisini etkinleştirin.

Java

Config config = session.getConfig();

// Check whether the user's device supports the Depth API.
boolean isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC);
boolean isGeospatialSupported =
    session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED);
if (isDepthSupported && isGeospatialSupported) {
  // These three settings are needed to use Geospatial Depth.
  config.setDepthMode(Config.DepthMode.AUTOMATIC);
  config.setGeospatialMode(Config.GeospatialMode.ENABLED);
  config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED);
}
session.configure(config);

Kotlin

val config = session.config

// Check whether the user's device supports the Depth API.
val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC)
val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED)
if (isDepthSupported && isGeospatialSupported) {
  // These three settings are needed to use Geospatial Depth.
  config.depthMode = Config.DepthMode.AUTOMATIC
  config.geospatialMode = Config.GeospatialMode.ENABLED
  config.streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
}
session.configure(config)

Coğrafi Derinlik etkinleştirildikten sonra, derinlik geliştirici kılavuzunda açıklandığı gibi derinlikli resimlere mevcut API çağrıları üzerinden erişilebilir.

Java

// Retrieve the depth image for the current frame, if available.
Image depthImage = null;
try {
  depthImage = frame.acquireDepthImage16Bits();
  // Use the depth image here.
} catch (NotYetAvailableException e) {
  // This means that depth data is not available yet.
  // Depth data will not be available if there are no tracked
  // feature points. This can happen when there is no motion, or when the
  // camera loses its ability to track objects in the surrounding
  // environment.
} finally {
  if (depthImage != null) {
    depthImage.close();
  }
}

Kotlin

// Retrieve the depth image for the current frame, if available.
try {
  frame.acquireDepthImage16Bits().use { depthImage ->
    // Use the depth image here.
  }
} catch (e: NotYetAvailableException) {
  // This means that depth data is not available yet.
  // Depth data will not be available if there are no tracked
  // feature points. This can happen when there is no motion, or when the
  // camera loses its ability to track objects in the surrounding
  // environment.
}

Sonraki adımlar