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.
Örneği dene
geospatial_java örnek uygulaması, Streetscape Geometries'i nasıl edineceğinizi ve oluşturacağınızı gösterir.
Coğrafi 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.
Cadde Manzarası Geometrisini Etkinleştirme
GeospatialMode
GeospatialMode.ENABLED
ve StreetscapeGeometryMode
StreetscapeGeometryMode.ENABLED
olarak ayarlandığında Geospatial API, 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 sokak manzarası geometrisini alma
Session.getAllTrackables()
ile sonuçları filtrelemek için StreetscapeGeometry.class
operatörünü kullanın.
Java
session.getAllTrackables(StreetscapeGeometry.class);
Kotlin
session.getAllTrackables(StreetscapeGeometry::class.java)
StreetscapeGeometry
'i anlama
StreetscapeGeometry
bir bina hakkında bilgi içeriyor:
-
StreetscapeGeometry.getType()
StreetscapeGeometri'yi arazi veya bina olarak tanımlar. -
StreetscapeGeometry.getMesh()
Bu araziye veya binaya karşılık gelen bir poligonMesh
edinin. -
StreetscapeGeometry.getMeshPose()
Geometrinin başlangıç noktasını açıklar.Mesh
içindeki tüm noktalarStreetscapeGeometry.getMeshPose()
tarafından dönüştürülmelidir. -
StreetscapeGeometry.getQuality()
Örgü verilerinin kalitesini sağlar. Ayrıntı düzeyleri CityGML 2.0 standardında açıklanmıştır.
Bina YK 1
StreetscapeGeometry.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 2
StreetscapeGeometry.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.
Mesh
hakkında bilgi edinme
Mesh
, sokak manzarası geometrisinin yüzey yeniden yapılandırmasını temsil eden bir poligon örgüsüdür.
Her Mesh
, bir köşe ucu arabelleği ve dizin arabelleği içerir:
Mesh.getVertexListSize()
Bu ağdaki köşe sayısını döndürür.Mesh.getVertexList()
Örgü köşelerinin birleştirilmiş konumlarını elde edin.StreetscapeGeometry.getMeshPose()
.Mesh.getIndexListSize()
Bu ağdaki dizin sayısını alır.Mesh.getIndexList()
Bir yüzü oluşturan köşelerin indekslerini elde edin.
StreetscapeGeometry
'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 bir Derinlik isabet testi kullanın. Bu, önerilen ve daha kolay yöntemdir.
StreetscapeGeometry
simgesine bağlı belirli bir pozda sabit bir bağlantı oluşturmak içinTrackable.createAnchor()
simgesini kullanın. Bu sabit, izleme durumunu üstStreetscapeGeometry
öğesinden devralır.
StreetscapeGeometry
üzerinde isabet testi gerçekleştirin
Frame.hitTest()
, Streetscape geometrisine karşı isabet testi yapmak için kullanılabilir. Kesişimler bulunursa, HitResult
isabet konumu hakkında poz bilgilerinin yanı sıra isabet edilen StreetscapeGeometry
için bir referans içerir. Bu Streetscape geometrisi, kendisine ekli bir sabit dosya oluşturmak için Trackable.createAnchor()
öğesine 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, 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.