Platforma özel kılavuzlar
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine
AR uygulama geliştiricisi olarak, kullanıcılarınız için sanal ile gerçek olanı sorunsuz bir şekilde harmanlamak istersiniz. Kullanıcılar sahnelerine yerleştirdikleri sanal nesnelerin gerçek dünyaya ait gibi görünmesini ister. Kullanıcıların mobilya alışverişi yapabileceği bir uygulama geliştiriyorsanız satın alacakları koltuğun evlerine sığacağından emin olmalarını istersiniz.
Derinlik API'si, cihazın kamerasının bir sahnedeki gerçek nesnelerin boyutunu ve şeklini anlamasına yardımcı olur. Derinlik görüntüleri veya derinlik haritaları oluşturarak uygulamalarınıza gerçekçilik katmanı ekler. Etkileyici ve gerçekçi kullanıcı deneyimleri sunmak için derinlik resminin sağladığı bilgileri kullanabilirsiniz.
Depth API ile geliştirme için kullanım alanları
Derinlik API'si, nesne gizleme, daha iyi bir deneyim ve AR deneyimlerinin gerçekçiliğini artıran yeni etkileşimler sunabilir. Aşağıda, bu özelliği kendi projelerinizde kullanabileceğiniz bazı yöntemler verilmiştir. Derinlik özelliğinin kullanıldığı örnekler için ARCore Derinlik Laboratuvarı'ndaki örnek sahneleri inceleyin. Bu sahnelerde, derinlik verilerine erişmenin farklı yolları gösterilmektedir. Bu Unity uygulaması, GitHub'da açık kaynak olarak sunulmaktadır.
Kapamayı etkinleştir
Gölgeleme veya gerçek dünyadaki nesnelerin arkasında sanal bir nesnenin doğru şekilde oluşturulması, sürükleyici bir AR deneyimi için çok önemlidir. Kullanıcının, bir kapının yanında bagaj bulunan bir sahneye yerleştirmek isteyebileceği sanal bir Andy olduğunu varsayalım. Engelleme olmadan oluşturulan Andy, bagajın kenarıyla gerçekçi olmayan bir şekilde örtüşür. Bir sahnenin derinliğini kullanır ve sanal Andy'nin ahşap gövde gibi çevreye göre ne kadar uzakta olduğunu anlarsanız Andy'yi gölgelendirmeyle doğru şekilde oluşturabilir ve çevresine göre çok daha gerçekçi görünmesini sağlayabilirsiniz.
Bir sahneyi dönüştürme
Koltuklarının kollarına ve yastıklarına yerleşen sanal kar taneleri oluşturarak veya oturma odalarını sisli bir ortama dönüştürerek kullanıcılarınızı yeni ve etkileyici bir dünyaya taşıyın. Sanal ışıkların gerçek nesnelerle etkileşime geçtiği, nesnelerin arkasına gizlendiği ve nesneleri yeniden aydınlattığı bir sahne oluşturmak için Derinlik'i kullanabilirsiniz.
Mesafe ve alan derinliği
Bir şeyin uzakta olduğunu göstermeniz mi gerekiyor? Derinlik API'sini kullanarak mesafe ölçümünü kullanabilir ve bir sahnenin arka planını veya ön planını bulanıklaştırma gibi alan derinliği efektleri ekleyebilirsiniz.
Kullanıcıların AR nesneleriyle etkileşim kurmasını sağlama
Sanal içeriğin çarpışma ve fizik yoluyla gerçek dünyayla etkileşim kurmasını sağlayarak kullanıcıların uygulamanız aracılığıyla dünyaya "dokunmasına" izin verin. Sanal nesnelerin gerçek dünyadaki engelleri aşmasını veya sanal paintball toplarının gerçek bir ağaca çarpıp sıçramasını sağlayın. Derinliğe dayalı çarpışmayı oyun fiziğiyle birleştirdiğinizde, deneyimi canlandırabilirsiniz.
İsabet testlerini iyileştirme
Derinlik, isabet testi sonuçlarını iyileştirmek için kullanılabilir. Düzlem isabet testleri yalnızca dokuya sahip düzlemsel yüzeylerde çalışır. Derinlik isabet testleri ise daha ayrıntılıdır ve düzlemsel olmayan ve düşük dokuya sahip alanlarda bile çalışır. Bunun nedeni, derinlik isabet testlerinin bir noktanın doğru derinliğini ve yönünü belirlemek için sahnedeki derinlik bilgilerini kullanmasıdır.
Aşağıdaki örnekte yeşil Andy'ler standart düzlem isabet testlerini, kırmızı Andy'ler ise derinlik isabet testlerini temsil etmektedir.
Cihaz uyumluluğu
Derinlik API'si yalnızca derinliği destekleyebilecek işleme gücüne sahip cihazlarda desteklenir ve Derinliği etkinleştirme bölümünde açıklandığı gibi ARCore'da manuel olarak etkinleştirilmelidir.
Bazı cihazlarda uçuş süresi (ToF) sensörü gibi donanım derinlik sensörleri de bulunabilir. Depth API'yi destekleyen cihazların güncel listesi ve ToF sensör gibi desteklenen donanım derinlik sensörüne sahip cihazların listesi için ARCore tarafından desteklenen cihazlar sayfasına bakın.
Derinlikli resimler
Derinlik API'si, dünyanın 3D görünümünü sunan derinlik görüntüleri oluşturmak için hareketten derinlik algoritması kullanır. Derinlik resmindeki her piksel, sahnenin kameradan ne kadar uzakta olduğunun ölçümüyle ilişkilendirilir. Bu algoritma, farklı açılardan çekilmiş birden fazla cihaz resmini alır ve kullanıcı telefonunu hareket ettirirken her piksele olan mesafeyi tahmin etmek için bunları karşılaştırır. Kullanıcının minimum hareketi olsa bile derinlik işlemeyi artırmak için makine öğrenimini seçici bir şekilde kullanır. Ayrıca kullanıcının cihazında bulunan ek donanımlardan da yararlanır. Cihazda ToF gibi özel bir derinlik sensörü varsa algoritma, mevcut tüm kaynaklardan gelen verileri otomatik olarak birleştirir. Bu sayede mevcut derinlik resmi geliştirilir ve kamera hareket etmediğinde bile derinlik elde edilebilir. Ayrıca, beyaz duvarlar gibi çok az veya hiç özelliği olmayan yüzeylerde ya da hareket eden insanlar veya nesnelerin bulunduğu dinamik sahnelerde daha iyi derinlik sağlar.
Aşağıdaki resimlerde, duvarında bisiklet olan bir koridorun kamera görüntüsü ve kamera görüntülerinden oluşturulan derinlik görüntüsünün görselleştirmesi gösterilmektedir. Kırmızı renkli alanlar kameraya daha yakın, mavi renkli alanlar ise daha uzaktadır.
Hareketle derinlik
Derinlik verileri, kullanıcı cihazını hareket ettirdiğinde kullanılabilir hale gelir. Algoritma, 0 ila 65 metre uzaklıktan güçlü ve doğru derinlik tahminleri elde edebilir. En doğru sonuçlar, cihaz gerçek dünyadaki sahneden yarım ila beş metre uzaktayken elde edilir. Kullanıcıyı cihazını daha fazla hareket ettirmeye teşvik eden deneyimler daha iyi sonuçlar elde etmenizi sağlar.
Derinlik görüntüleri elde etme
Derinlik API'si ile her kamera karesine uyan derinlik görüntüleri alabilirsiniz. Elde edilen derinlik resmi, kamerayla aynı zaman damgasına ve görüş alanı içsel özelliklerine sahiptir. Derinlik hareketten elde edildiğinden, geçerli derinlik verileri yalnızca kullanıcı cihazını hareket ettirmeye başladıktan sonra kullanılabilir. Beyaz duvarlar gibi çok az veya hiç özelliği olmayan yüzeyler, belirsiz derinlikle ilişkilendirilir.
Sırada ne var?
- Derinlik verilerine erişmenin farklı yollarını gösteren ARCore Derinlik Laboratuvarı'na göz atın.