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
GeospatialExample uygulaması, Streetscape Geometries'in nasıl edinileceğini ve oluşturulacağını gösterir.
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, GARGeospatialMode
GARGeospatialModeEnabled
ve GARStreetscapeGeometryMode
GARStreetscapeGeometryModeEnabled
olarak ayarlandığında Streetscape Geometri verilerini alır.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
ARCore oturumunda Streetscape Geometrisi elde etme
GARStreetscapeGeometry
nesnelerin tümünü almak için GARFrame.streetscapeGeometries
işlevini kullanın.
GARStreetscapeGeometry
'i anlama
GARStreetscapeGeometry
bir bina hakkında bilgi içeriyor:
-
GARStreetscapeGeometry.type
StreetscapeGeometri'yi arazi veya bina olarak tanımlar. -
GARStreetscapeGeometry.mesh
Bu araziye veya binaya karşılık gelen bir poligonGARMesh
edinin. -
GARStreetscapeGeometry.meshTransform
Geometrinin başlangıç noktasını açıklar.GARMesh
içindeki tüm noktalarGARStreetscapeGeometry.meshTransform
tarafından dönüştürülmelidir. -
GARStreetscapeGeometry.quality
Örgü verilerinin kalitesini sağlar. Ayrıntı düzeyleri CityGML 2.0 standardında açıklanmıştır.
Bina YK 1
GARStreetscapeGeometryQualityBuildingLOD_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
GARStreetscapeGeometryQualityBuildingLOD_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.
GARMesh
'i anlama
GARMesh
, Streetscape geometrisinin yüzey rekonstrüksiyonunu temsil eden bir poligon örgüsüdür.
Her GARMesh
bir köşe arabelleği ve dizin arabelleği içerir:
GARMesh.vertexCount
Bu ağdaki köşe noktalarının sayısını alır.GARMesh.vertices
Örgü köşelerinin birleştirilmiş konumlarını elde edin.GARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
Bu ağdaki dizin sayısını alır.GARMesh.triangles
Bir yüzü oluşturan köşelerin indekslerini elde edin.
GARStreetscapeGeometry
'e artırılmış gerçeklik (AR) içeriği ekleme
GARStreetscapeGeometry.meshTransform
yakınındaki belirli bir pozda sabit oluşturmak için GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
simgesini kullanın. Bu sabit, izleme durumunu üst GARStreetscapeGeometry
öğesinden devralır.
GARStreetscapeGeometry
üzerinde isabet testi gerçekleştirin
GARSession.raycastStreetscapeGeometry:direction:error:
, Streetscape geometrisine karşı isabet testi yapmak için kullanılabilir. Kesişimler bulunursa, GARStreetscapeGeometryRaycastResult
isabet konumu hakkında poz bilgilerinin yanı sıra isabet edilen GARStreetscapeGeometry
için bir referans içerir. Bu Streetscape geometrisi, kendisine ekli bir sabit dosya oluşturmak için GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
öğesine iletilebilir.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];