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.
Örneği deneyin
GeospatialExample uygulaması, Streetscape Geometri'lerinin nasıl alınıp oluşturulduğunu gösterir.
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, 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
nesnenin tümünü almak için GARFrame.streetscapeGeometries
işlevini kullanın.
GARStreetscapeGeometry
adlı ürünü anlayın
GARStreetscapeGeometry
bir bina hakkında bilgiler içerir:
-
GARStreetscapeGeometry.type
StreetscapeGeometry'yi arazi veya bina olarak tanımlar. -
GARStreetscapeGeometry.mesh
Bu araziye veya binaya karşılık gelen bir poligonGARMesh
edinin. -
GARStreetscapeGeometry.meshTransform
Geometrinin kökenini açıklar.GARMesh
içindeki tüm noktalarGARStreetscapeGeometry.meshTransform
ile 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 LOD 1
GARStreetscapeGeometryQualityBuildingLOD_1
, yukarı doğru düz bir tepeye uzanan bina ayak izlerinden oluşur. Bina yükseklikleri doğru olmayabilir.
Bina LOD 2
GARStreetscapeGeometryQualityBuildingLOD_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.
GARMesh
adlı ürünü anlayın
GARMesh
, Streetscape Geometrisinin yüzey yeniden yapısını temsil eden bir poligon örgüdür.
Her GARMesh
bir köşe arabelleği ve dizin arabelleği içerir:
GARMesh.vertexCount
Bu örgüdeki köşe noktalarının sayısını alır.GARMesh.vertices
GARStreetscapeGeometry.meshTransform
ile göreli koordinatlarla örgü köşelerinin birleştirilmiş konumlarını elde edin.GARMesh.triangleCount
Bu örgüdeki 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 içeriği ekleme
GARStreetscapeGeometry.meshTransform
yakınında belirli bir pozda bir çapa oluşturmak için GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
aracını kullanın. Bu sabit, izleme durumunu üst öğeden (GARStreetscapeGeometry
) devralacak.
GARStreetscapeGeometry
ile isabet testi yapın.
GARSession.raycastStreetscapeGeometry:direction:error:
, Streetscape Geometry'de isabet testi yapmak için kullanılabilir. Kesişmeler bulunursa GARStreetscapeGeometryRaycastResult
, isabet konumuyla ilgili poz bilgilerinin yanı sıra isabet alan GARStreetscapeGeometry
için bir referans içerir. Bu Streetscape Geometrisi, kendisine ekli bir çapa oluşturulması için GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
'e iletilebilir.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];