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

Jeo-uzaysal Derinlik Kahramanı

ARCore Depth API artık, Streetscape Geometri de etkinleştirildiğinde Depth API'nin aralığını ve hızını otomatik olarak artıran Coğrafi Derinlik'i desteklemektedir. Depth API'den alınan çıkış resimleri, VPS kapsama alanı ve Streetscape Geometri özelliği etkinken, ilgili bölgeden mevcut konumdan 65 metre uzakta alınan arazi ve bina geometrisini içerir. Geometriden alınan bu derinlik verileri, yerel derinlik gözlemleriyle birleştirilir ve kullanıcı yeni bir konuma taşınırken güncellenir.

ARCore Depth API çağrıları artık hem kameradan yerel gözlemler hem de Streetscape Geometri'den alınan bina ve arazileri tek bir derinlikte birleştirilmiş halde sunmaktadır.

Cihaz uyumluluğu

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

Performansa olan etkisi

Jeo-uzaysal Derinlik, Streetscape Geometri'yi ilk indirildiğinde derinlik gösterimine entegre etmek için oturumun başında tek seferlik küçük bir hesaplama yapar, ancak bunun dışında derinlik hesaplama maliyetini ölçülebilir bir şekilde artırmaz.

Derinlik aralığı

Coğrafi Derinlik kullanılmadığında, derinlikli görüntüdeki tipik aralıklar yaklaşık 20-30 metre uzaklıktadır. Derinlik gözlemlerinin yoğunluğu ve doğruluğu bu aralığın dışına çıkarılır. Coğrafi Derinlik etkinken, genellikle az miktarda ilk hareket olsa bile bol miktarda örneklenmiş derinlik değerlerinin maksimum 65, 535 metreye ulaştığı görülebilir.

Kullanım alanları

ARCore Depth API, halihazırda desteklenen tüm mevcut kullanım alanlarında kullanılabilir. Coğrafi Derinlik sayesinde, VPS destekli konumlarda elde edilen derinlik görüntüleri eskisinden daha hızlı bir şekilde uzun menzilli derinlikle doldurulacak. Böylece, dış ortamlarda uzun menzilli derinliği hedefleyen kullanım alanları mümkün olacak. Bazı kullanım alanları şunlardır:

  • Sanal içerikleri ve diğer görsel efektleri bina düzeyinde kapama
  • Dış mekanda navigasyon
  • Mesafe ölçümleri

Sınırlamalar

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

Ön koşullar

Temel artırılmış gerçeklik kavramlarını anladığınızdan emin olun ve devam etmeden önce ARCore oturumunun nasıl yapılandırılacağı hakkında daha fazla bilgi edinin.

Coğrafi Derinliği etkinleştir

Yeni bir ARCore oturumunda, Kullanıcının cihazının Depth ve Geospatial API'yi destekleyip desteklemediğini kontrol edebilirsiniz. İşlem gücü kısıtlamaları nedeniyle ARCore uyumlu cihazların hepsi Depth API'yi desteklemez.

Kaynaklardan tasarruf etmek için ARCore'da derinlik varsayılan olarak devre dışıdır. Uygulamanızın Depth API'yi kullanması için derinlik modunu etkinleştirin. Ayrıca, coğrafi Derinlik kullanıyor.

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ştirildiğinde derinlik görüntülerine mevcut API çağrıları üzerinden derinlik geliştirici kılavuzunda açıklandığı şekilde 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.
}

Sırada ne var?