ממשקי ה-API לגיאומטריה של Streetscape מספקים את הגיאומטריה של פני השטח, בניינים או מבנים אחרים בסצנה. ניתן להשתמש בגאומטריה להסתרה, לעיבוד או למיקום של תוכן AR באמצעות ממשקי API לבדיקת תקינות. נתונים גיאומטריים של Streetscape מתקבלים מתמונות Google Street View.
רוצה לנסות את הדוגמה?
האפליקציה GeospatialExample מדגימה איך להשיג ולעבד אובייקטים גיאומטריים ב-Streetscape.
הגדרת ה-API הגיאו-מרחבי
כדי להשתמש בגיאומטריה של Streetscape, עליכם להגדיר את ה-Geospatial API בפרויקט שלכם. מבצעים את ההוראות להפעלת ה-API הגאו-מרחבי כדי להגדיר את ה-Geospatial API.
הפעלת גיאומטריית Streetscape
ה-API הגיאו-מרחבי מקבל נתונים גיאומטריים של Streetscape כאשר הערך של GARGeospatialMode
הוא GARGeospatialModeEnabled
ו-GARStreetscapeGeometryMode
מוגדר ל-GARStreetscapeGeometryModeEnabled
.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
קבלת גיאומטריה של Streetscape בסשן ARCore
שימוש בפונקציהGARFrame.streetscapeGeometries
כדי לאחזר את כל GARStreetscapeGeometry
האובייקטים.
להבין את GARStreetscapeGeometry
GARStreetscapeGeometry
מכיל מידע על מבנה:
-
GARStreetscapeGeometry.type
זיהוי של StreetscapeGeometry כפני שטח או כבניין. -
GARStreetscapeGeometry.mesh
צריך ליצור פוליגוןGARMesh
שתואם לפני השטח או לבניין הזה. -
GARStreetscapeGeometry.meshTransform
תיאור המקור של הגאומטריה. יש להמיר את כל הנקודות ב-GARMesh
באמצעותGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
האיכות של נתוני הרשת. רמות הפירוט מתוארות בתקן CityGML 2.0.
מבנה LOD 1
GARStreetscapeGeometryQualityBuildingLOD_1
מורכב מטביעות רגליים של בניינים שנמתחות למעלה אל חלק עליון שטוח. גובה המבנים עשוי להיות לא מדויק.
מבנה LOD 2
ל-GARStreetscapeGeometryQualityBuildingLOD_2
תהיה גאומטריה באיכות גבוהה יותר. קירות וגגות הרשת יתאימו יותר לצורת המבנה. פריטים קטנים יותר, כמו ארובות או פתחי אוורור בגג, עדיין עשויים לחדור מחוץ לרשת.
להבין את GARMesh
GARMesh
היא רשת פוליגונים שמייצגת שחזור של פני השטח של גיאומטריית Streetscape.
כל GARMesh
כולל מאגר של קודקוד ומאגר תגים של אינדקס:
GARMesh.vertexCount
אחזור מספר הקודקודים ברשת הזו.GARMesh.vertices
קבלת המיקומים המשורשרים של קודקודי הרשת, בקואורדינטות ביחס ל-GARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
אחזור מספר האינדקסים ברשת הזו.GARMesh.triangles
לאסוף את האינדקסים של הקודקודים שמרכיבים את הפנים.
צירוף תוכן AR אל GARStreetscapeGeometry
אפשר להשתמש ב-GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
כדי ליצור עוגן בתנוחה נתונה ליד GARStreetscapeGeometry.meshTransform
. מצב המעקב הזה יקבל בירושה את מצב המעקב מתבנית ההורה GARStreetscapeGeometry
.
בדיקת היט על GARStreetscapeGeometry
הפונקציה GARSession.raycastStreetscapeGeometry:direction:error:
יכולה לשמש לבדיקה של גיאומטריה ב-Streetscape. אם יימצאו צמתים, GARStreetscapeGeometryRaycastResult
מכיל את פרטי התנוחה לגבי מיקום ההתאמה וגם הפניה ל-GARStreetscapeGeometry
שהתקבל. ניתן להעביר גיאומטריית Streetscape זו אל GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
כדי לצרף אליה עוגן.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];