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
- Artırılmış gerçeklik deneyiminizde Streetscape Geometri'yi nasıl kullanacağınızı öğrenin.
- Sahne Semantiği ve Coğrafi Derinlik codelab'i ile ilerleyerek Coğrafi Derinlik ile kendi uygulamanızı nasıl oluşturacağınızı öğrenin.