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.
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, 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
Sonuçları filtrelemek içinArSession_getAllTrackables()
ve AR_TRACKABLE_STREETSCAPE_GEOMETRY
seçeneklerini kullanın.
ArTrackableList* trackable_list = NULL; ArTrackableList_create(ar_session, &trackable_list); ArSession_getAllTrackables(ar_session, AR_TRACKABLE_STREETSCAPE_GEOMETRY, trackable_list);
ArStreetscapeGeometry
adlı ürünü anlayın
ArStreetscapeGeometry
bir bina hakkında bilgiler 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 kökenini açıklar.ArMesh
içindeki tüm noktalarArStreetscapeGeometry_getMeshPose()
ile 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 LOD 1
AR_STREETSCAPE_GEOMETRY_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
AR_STREETSCAPE_GEOMETRY_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.
ArMesh
adlı ürünü anlayın
ArMesh
, Streetscape Geometrisinin yüzey yeniden yapısını temsil eden bir poligon örgüdür.
Her ArMesh
bir köşe arabelleği ve dizin arabelleği içerir:
ArMesh_getVertexListSize()
Bu örgüdeki köşe noktalarının sayısını alır.ArMesh_getVertexList()
ArStreetscapeGeometry_getMeshPose()
ile göreli koordinatlarla örgü köşelerinin birleştirilmiş konumlarını elde edin.ArMesh_getIndexListSize()
Bu örgüdeki dizin sayısını alır.ArMesh_getIndexList()
Bir yüzü oluşturan köşelerin indekslerini elde edin.
ArStreetscapeGeometry
'e artırılmış gerçeklik içeriği ekleme
Streetscape Geometri'ye AR içeriği 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
ile ilişkili belirli bir pozda bir sabit oluşturmak içinArTrackable_acquireNewAnchor()
aracını kullanın. Bu sabit, izleme durumunu üst öğeden (ArStreetscapeGeometry
) devralacak.
ArStreetscapeGeometry
ile isabet testi yapın.
ArFrame_hitTest
, Streetscape Geometry'de isabet testi yapmak için kullanılabilir. Kesişmeler bulunursa ArHitResult
, isabet konumuyla ilgili poz bilgilerinin yanı sıra isabet alan ArStreetscapeGeometry
için bir referans içerir. Bu Streetscape Geometrisi, kendisine ekli bir çapa oluşturulması için ArTrackable_acquireNewAnchor()
'e 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 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.