ממשקי ה-API של Streetscape Geometry מספקים את הגיאומטריה של פני השטח, של בניינים או של מבנים אחרים בסצנה. אפשר להשתמש בגיאומטריה לצורך חסימה, רינדור או מיקום של תוכן AR באמצעות ממשקי API לבדיקת היט. הנתונים הגיאומטריים של Streetscape מתקבלים דרך תמונות Google Street View.
רוצה לנסות את הדוגמה?
האפליקציה 'גיאו-מרחביExample' מדגימה איך להשיג ולעבד תמונות גיאומטריות של Streetscape.
הגדרת ה-API הגיאו-מרחבי
כדי להשתמש ב-Streetscape Geometry, צריך להגדיר את ה-Geospatial API בפרויקט. כדי להגדיר את Geospatial API, פועלים לפי ההוראות להפעלת ה-Geospatial API.
הפעלת גיאומטריה של Streetscape
ה-Geospatial API מקבל נתוני Streetscape Geometry כאשר 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];