Android SDK'sında (Kotlin/Java) etrafınızdaki binaları ve arazileri kullanma

Streetscape Geometri API'leri, bir sahnedeki arazi, bina veya diğer yapıların geometrisini sağlar. Geometri, isabet testi API'leri aracılığıyla AR içeriği yerleştirmek, gölgelendirmek veya gizlemek için kullanılabilir. Sokak Görünümü Geometrisi verileri, Google Street View görüntüleri aracılığıyla elde edilir.

Örneği deneyin

geospatial_java örnek uygulaması, Streetscape Geometries'i nasıl edineceğinizi ve oluşturacağınızı gösterir.

Coğrafi API'yi ayarlama

Sokak Görünümü Geometrisi'ni kullanmak için projenizde Coğrafi API'yi ayarlamanız gerekir. Geospatial API'yi ayarlamak için Geospatial API'yi etkinleştirme başlıklı makaledeki talimatları uygulayın.

Cadde Manzarası Geometrisini Etkinleştirme

Geospatial API, GeospatialMode GeospatialMode.ENABLED ve StreetscapeGeometryMode StreetscapeGeometryMode.ENABLED olarak ayarlandığında Streetscape Geometry verilerini alır.

Java

Config config = session.getConfig();
// Streetscape Geometry requires the Geospatial API to be enabled.
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
// Enable Streetscape Geometry.
config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED);
session.configure(config);

Kotlin

session.configure(
  session.config.apply {
    // Streetscape Geometry requires the Geospatial API to be enabled.
    geospatialMode = Config.GeospatialMode.ENABLED
    // Enable Streetscape Geometry.
    streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
  }
)

ARCore oturumunda Streetscape Geometrisi elde etme

Sonuçları filtrelemek için Session.getAllTrackables() ve StreetscapeGeometry.class simgesini kullanın.

Java

session.getAllTrackables(StreetscapeGeometry.class);

Kotlin

session.getAllTrackables(StreetscapeGeometry::class.java)

StreetscapeGeometry hakkında bilgi edinme

StreetscapeGeometry, bir bina hakkındaki bilgileri içerir:

Bina LOD 1

StreetscapeGeometry.Quality.BUILDING_LOD_1, düz bir üst yüzeye doğru yukarı doğru uzatılmış bina ayak izlerinden oluşur. Bina yükseklikleri doğru olmayabilir.

Bina LOD'si 2

StreetscapeGeometry.Quality.BUILDING_LOD_2 daha yüksek kaliteli geometriye sahiptir. Örgü duvarlar ve çatılar binanın şekliyle daha yakından eşleşir. Bacalar veya çatı havalandırmaları gibi küçük özellikler yine de ağın dışına çıkabilir.

Mesh hakkında bilgi edinme

Mesh, sokak manzarası geometrisinin yüzey yeniden yapılandırmasını temsil eden bir poligon örgüsüdür. Her Mesh bir köşe arabelleği ve dizin arabelleği içerir:

StreetscapeGeometry'a AR içeriği ekleme

AR içeriğini Streetscape Geometrisine eklemenin iki yolu vardır:

StreetscapeGeometry üzerinde isabet testi gerçekleştirin

Frame.hitTest(), Streetscape Geometrisi ile isabet testi yapmak için kullanılabilir. Kesişimler bulunursa, HitResult isabet konumu hakkında poz bilgilerinin yanı sıra isabet edilen StreetscapeGeometry için bir referans içerir. Bu Streetscape geometrisi, kendisine ekli bir sabit dosya oluşturmak için Trackable.createAnchor() öğesine iletilebilir.

Java

for (HitResult hit : frame.hitTest(singleTapEvent)) {
  if (hit.getTrackable() instanceof StreetscapeGeometry) {
    Pose hitPose = hit.getHitPose();
    hit.getTrackable().createAnchor(hitPose);
  }
}

Kotlin

for (hit in frame.hitTest(singleTapEvent)) {
  if (hit.trackable is StreetscapeGeometry) {
    val hitPose = hit.hitPose
    hit.trackable.createAnchor(hitPose)
  }
}

Coğrafi Derinlik'i etkinleştirme

Coğrafi Derinlik, derinlik verilerini iyileştirmek için Sokak Görünümü Geometrisi ile yerel sensör girişini birleştirir. Coğrafi Derinlik etkinleştirildiğinde, çıkış derinliği ve ham derinlik resimleri, yerel olarak gözlemlenen derinliğe ek olarak rasterleştirilmiş sokak manzarası geometrisini içerecek şekilde değiştirilir. Bu, derinlik özelliğini kullanarak pozların doğruluğunu artırabilir.