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ği yerleştirmek, gölgelendirmek veya gizlemek için kullanılabilir. Streetscape Geometri verileri, Google Street View görüntüleri aracılığıyla elde edilir.
Geospatial API'yi kurma
Cadde Manzarası 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.
Streetscape Geometrisini Etkinleştir
ArGeospatialMode
ArGeospatialModeEnabled
ve ArStreetscapeGeometryMode
ArStreetscapeGeometryModeEnabled
olarak ayarlandığında Geospatial API, 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
Sonuçları filtrelemek içinArSession_getAllTrackables()
ve AR_TRACKABLE_STREETSCAPE_GEOMETRY
simgesini 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ındaki bilgileri içerir:
-
ArStreetscapeGeometry_getType()
StreetscapeGeometry'yi arazi veya bina olarak tanımlar. -
ArStreetscapeGeometry_acquireMesh()
Bu araziye veya binaya karşılık gelen bir poligonArMesh
edinin. -
ArStreetscapeGeometry_getMeshPose()
Geometrinin başlangıç noktasını açıklar.ArMesh
içindeki tüm noktalarArStreetscapeGeometry_getMeshPose()
tarafından dönüştürülmelidir. -
ArStreetscapeGeometry_getQuality()
Örgü verilerinin kalitesini sağlar. Ayrıntı düzeyleri CityGML 2.0 standardında açıklanmıştır.
Bina YK 1
AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1
, düz bir yüzeye doğru uzatılmış bina ayak izlerinden oluşur. Bina yükseklikleri doğru olmayabilir.
Bina LOD 2
AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2
daha yüksek doğruluklu geometriye sahip olur. Örgü duvarlar ve çatılar, binanın şekline daha uygun olur. 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:
ArMesh_getVertexListSize()
Bu ağdaki köşe noktalarının sayısını alır.ArMesh_getVertexList()
Örgü köşelerinin birleştirilmiş konumlarını elde edin.ArStreetscapeGeometry_getMeshPose()
.ArMesh_getIndexListSize()
Bu ağdaki dizin sayısını döndürür.ArMesh_getIndexList()
Bir yüzü oluşturan köşelerin dizinlerini alın.
ArStreetscapeGeometry
'e artırılmış gerçeklik (AR) içeriği ekleme
AR içeriğini Streetscape Geometrisine eklemenin iki yolu vardır:
- Coğrafi Derinlik'i etkinleştirin ve Derinlik isabet testi kullanın. Bu, önerilen ve daha kolay yöntemdir.
ArStreetscapeGeometry
simgesine bağlı belirli bir pozda sabit bir poz oluşturmak içinArTrackable_acquireNewAnchor()
simgesini kullanın. Bu ankraj, izleme durumunu üst öğeArStreetscapeGeometry
'den devralı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, derinlik verilerini iyileştirmek için Streetscape Geometrisi ile yerel sensör girişini 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 rasterleştirilmiş Streetscape Geometrisi içerecek şekilde değiştirilmiştir. Bu, Derinlik kullanılarak yapılan pozların doğruluğunu iyileştirebilir.