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, gizlemek veya oluşturmak için kullanılabilir. Sokak Görünümü Geometrisi verileri, Google Street View görüntüleri aracılığıyla elde edilir.
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, ArGeospatialMode
ArGeospatialModeEnabled
ve ArStreetscapeGeometryMode
ArStreetscapeGeometryModeEnabled
olarak ayarlandığında Streetscape Geometry 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 sokak manzarası geometrisini alma
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
hakkında bilgi edinme
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
elde edin. -
ArStreetscapeGeometry_getMeshPose()
Geometrinin kaynağını açıklar.ArMesh
içindeki tüm noktalarArStreetscapeGeometry_getMeshPose()
tarafından dönüştürülmelidir. -
ArStreetscapeGeometry_getQuality()
Ağın kalitesini sağlar. Ayrıntı düzeyleri CityGML 2.0 standardında açıklanmıştır.
Bina LOD 1
AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1
, düz bir üst kısım olacak şekilde yukarı 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 kaliteli geometriye sahip olacaktır. Örgü duvarlar ve çatılar, binanın şekline daha uygun olur. Bacalar veya çatı havalandırmaları gibi küçük özellikler yine de ağın dışına çıkabilir.
ArMesh
hakkında bilgi edinme
ArMesh
, sokak manzarası geometrisinin yüzey yeniden yapılandırmasını temsil eden bir poligon örgüsüdür.
Her ArMesh
, bir köşe ucu arabelleği ve dizin arabelleği içerir:
ArMesh_getVertexListSize()
Bu ağdaki köşe sayısını döndürür.ArMesh_getVertexList()
ArStreetscapeGeometry_getMeshPose()
'e göre koordinatlarda, ağ köşelerinin birleştirilmiş konumlarını alın.ArMesh_getIndexListSize()
Bu ağdaki dizin sayısını döndürür.ArMesh_getIndexList()
Bir yüzü oluşturan köşe noktalarının dizinlerini alın.
AR içeriğini ArStreetscapeGeometry
'a 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
'e bağlı belirli bir duruşta bir ankraj oluşturmak içinArTrackable_acquireNewAnchor()
simgesini kullanın. Bu ankraj, izleme durumunu üst öğeArStreetscapeGeometry
'den devralır.
ArStreetscapeGeometry
ile isabet testi yapın
ArFrame_hitTest
, Streetscape Geometrisi ile isabet testi yapmak için kullanılabilir. Kesişim bulunursa ArHitResult
, isabet edilen konumla ilgili poz bilgilerinin yanı sıra isabet edilen ArStreetscapeGeometry
'e referans içerir. Bu Streetscape Geometrisi, kendisine bağlı bir ankraj oluşturmak için ArTrackable_acquireNewAnchor()
'a 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 Derinlik'i etkinleştirme
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 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.