Android NDK'da (C) etrafınızdaki binaları ve arazileri kullanın

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

Geospatial API'yi ayarlama

Streetscape Geometri'yi kullanmak için projenizde Geospatial API'yi kurmanı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, ArGeospatialMode ArGeospatialModeEnabled ve ArStreetscapeGeometryMode ArStreetscapeGeometryModeEnabled olarak ayarlandığında Streetscape Geometri verilerini alır.

// Create a session config.
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);

// Enable the Geospatial API.
ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Enable Streetscape Geometry.
ArConfig_setStreetscapeGeometryMode(ar_session, ar_config, AR_STREETSCAPE_GEOMETRY_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Release config resources.
ArConfig_destroy(ar_config);

ARCore oturumunda Streetscape Geometrisi elde etme

ArSession_getAllTrackables() ile sonuçları filtrelemek için AR_TRACKABLE_STREETSCAPE_GEOMETRY operatörünü kullanın.

ArTrackableList* trackable_list = NULL;
ArTrackableList_create(ar_session, &trackable_list);
ArSession_getAllTrackables(ar_session, AR_TRACKABLE_STREETSCAPE_GEOMETRY, trackable_list);

ArStreetscapeGeometry'i anlama

ArStreetscapeGeometry bir bina hakkında bilgi içeriyor:

Bina YK 1

AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1, yukarı doğru düz bir yüzeye uzatılmış bina ayak izlerinden oluşur. Bina yükseklikleri yanlış olabilir.

Bina LOD'si 2

AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2 daha yüksek doğruluklu geometriye sahip olur. Örgü duvarlar ve çatılar binanın şekliyle daha yakından eşleşir. Bacalar veya çatı havalandırmaları gibi daha küçük detaylar, ağın dışına çıkmaya devam edebilir.

ArMesh'i anlama

ArMesh, Streetscape geometrisinin yüzey rekonstrüksiyonunu temsil eden bir poligon örgüsüdür. Her ArMesh bir köşe arabelleği ve dizin arabelleği içerir:

ArStreetscapeGeometry'e artırılmış gerçeklik (AR) içeriği ekleme

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

ArStreetscapeGeometry üzerinde isabet testi gerçekleştirin

ArFrame_hitTest, Streetscape geometrisine karşı isabet testi yapmak için kullanılabilir. Kesişimler bulunursa, ArHitResult isabet konumu hakkında poz bilgilerinin yanı sıra isabet edilen ArStreetscapeGeometry için bir referans içerir. Bu Streetscape geometrisi, kendisine ekli bir sabit dosya oluşturmak için ArTrackable_acquireNewAnchor() öğesine iletilebilir.

ArHitResultList *hit_result_list = NULL;
ArHitResult *hit_result = NULL;
ArHitResultList_create(ar_session, &hit_result_list);
ArHitResult_create(ar_session, &hit_result);

ArFrame_hitTestRay(ar_session, ar_frame, origin, direction, hit_result_list);
ArHitResultList_getItem(ar_session, hit_result_list, 0, hit_result);

ArAnchor *out_anchor = NULL;
ArStatus status = ArHitResult_acquireNewAnchor(ar_session, hit_result, &out_anchor);
CHECK(status == AR_SUCCESS);

Coğrafi Derinliği etkinleştir

Coğrafi Derinlik, Sokak Görünümü Geometrisini birleştirir yerel sensör girişine yardımcı olalım. Coğrafi Derinlik etkinleştirildiğinde, çıkış derinliği ve ham derinlik görüntüleri, yerel olarak gözlemlenen derinliğe ek olarak rasterleştirilmiş Streetscape Geometrisi içerecek şekilde değiştirilmiştir. Bu, Derinlik kullanılarak yapılan pozların doğruluğunu iyileştirebilir.