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

Streetscape Geometry API'leri, bir sahnedeki arazinin, binaların veya diğer yapıların geometrisini sunar. Geometri; isabet testi API'leri aracılığıyla AR içeriğini kapamak, oluşturmak veya yerleştirmek için kullanılabilir. Streetscape Geometri verileri, Google Street View görüntüleri aracılığıyla elde edilir.

Örneği deneyin

geospatial_java örnek uygulaması, Streetscape Geometrislerinin nasıl edinileceğini ve oluşturulduğunu gösterir.

Geospatial API'yi ayarlama

Streetscape Geometri'yi kullanmak için projenizde Geospatial API'yi ayarlamanız gerekir. Geospatial API'yi ayarlamak için Geospatial API'yi etkinleştirme bölümündeki talimatları uygulayın.

Streetscape Geometrisini Etkinleştir

Geospatial API, GeospatialMode GeospatialMode.ENABLED ve StreetscapeGeometryMode StreetscapeGeometryMode.ENABLED olarak ayarlandığında Streetscape Geometri 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 seçeneklerini kullanın.

Java

session.getAllTrackables(StreetscapeGeometry.class);

Kotlin

session.getAllTrackables(StreetscapeGeometry::class.java)

StreetscapeGeometry adlı ürünü anlayın

StreetscapeGeometry bir bina hakkında bilgiler içerir:

Bina LOD 1

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

Bina LOD 2

StreetscapeGeometry.Quality.BUILDING_LOD_2, geometriye daha iyi uyum sağlar. Örgü duvarlar ve çatılar binanın şekliyle daha uyumlu olacaktır. Bacalar veya çatı menfezleri gibi küçük detaylar yine de ağın dışına kırılabilir.

Mesh adlı ürünü anlayın

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

StreetscapeGeometry'e artırılmış gerçeklik içeriği ekleme

Streetscape Geometri'ye AR içeriği eklemenin iki yolu vardır:

StreetscapeGeometry ile isabet testi yapın.

Frame.hitTest(), Streetscape Geometry'de isabet testi yapmak için kullanılabilir. Kesişmeler bulunursa HitResult, isabet konumuyla ilgili poz bilgilerinin yanı sıra isabet alan StreetscapeGeometry için bir referans içerir. Bu Streetscape Geometrisi, kendisine ekli bir çapa oluşturulması için Trackable.createAnchor()'e 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 Derinliği Etkinleştir

Coğrafi Derinlik, derinlik verilerini iyileştirmek için Streetscape Geometrisini yerel sensör girişiyle birleştirir. Coğrafi Derinlik etkinleştirildiğinde, çıkış derinliği ve ham derinlik görüntüleri, yerel olarak gözlemlenen derinliğe ek olarak pikselleştirilmiş Streetscape Geometrisi içerecek şekilde değiştirilir. Bu, Derinlik özelliği kullanılarak pozların doğruluğunu artırabilir.