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.
Örneği deneyin
GeospatialExample uygulaması, Streetscape geometrilerinin nasıl elde edilip oluşturulacağını gösterir.
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, GARGeospatialMode
GARGeospatialModeEnabled
ve GARStreetscapeGeometryMode
GARStreetscapeGeometryModeEnabled
olarak ayarlandığında Streetscape Geometry verilerini alır.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
ARCore oturumunda sokak manzarası geometrisini alma
TümGARStreetscapeGeometry
nesnelerini almak için GARFrame.streetscapeGeometries
kullanın.
GARStreetscapeGeometry
hakkında bilgi edinme
GARStreetscapeGeometry
, bir bina hakkındaki bilgileri içerir:
-
GARStreetscapeGeometry.type
StreetscapeGeometry'yi arazi veya bina olarak tanımlar. -
GARStreetscapeGeometry.mesh
Bu araziye veya binaya karşılık gelen bir poligonGARMesh
elde edin. -
GARStreetscapeGeometry.meshTransform
Geometrinin kaynağını açıklar.GARMesh
içindeki tüm noktalarGARStreetscapeGeometry.meshTransform
tarafından dönüştürülmelidir. -
GARStreetscapeGeometry.quality
Ağın kalitesini sağlar. Ayrıntı düzeyleri CityGML 2.0 standardında açıklanmıştır.
Bina LOD 1
GARStreetscapeGeometryQualityBuildingLOD_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
GARStreetscapeGeometryQualityBuildingLOD_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.
GARMesh
hakkında bilgi edinme
GARMesh
, sokak manzarası geometrisinin yüzey yeniden yapılandırmasını temsil eden bir poligon örgüsüdür.
Her GARMesh
, bir köşe ucu arabelleği ve dizin arabelleği içerir:
GARMesh.vertexCount
Bu ağdaki köşe sayısını döndürür.GARMesh.vertices
GARStreetscapeGeometry.meshTransform
'e göre koordinatlarda, ağ köşelerinin birleştirilmiş konumlarını alın.GARMesh.triangleCount
Bu ağdaki dizin sayısını döndürür.GARMesh.triangles
Bir yüzü oluşturan köşe noktalarının dizinlerini alın.
AR içeriğini GARStreetscapeGeometry
'a ekleme
GARStreetscapeGeometry.meshTransform
yakınında belirli bir duruşta bir anafor oluşturmak için GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
simgesini kullanın. Bu ankraj, izleme durumunu üst öğe GARStreetscapeGeometry
'den devralır.
GARStreetscapeGeometry
ile isabet testi yapın
GARSession.raycastStreetscapeGeometry:direction:error:
, Streetscape Geometrisi ile isabet testi yapmak için kullanılabilir. Kesişim bulunursa GARStreetscapeGeometryRaycastResult
, isabet edilen konumla ilgili poz bilgilerinin yanı sıra isabet edilen GARStreetscapeGeometry
'e referans içerir. Bu Streetscape Geometrisi, kendisine bağlı bir ankraj oluşturmak için GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
'a iletilebilir.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];