שימוש במבנים ובפני השטח בסביבתך ב-iOS

ממשקי ה-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 מכיל מידע על מבנה:

מבנה LOD 1

GARStreetscapeGeometryQualityBuildingLOD_1 מורכב מטביעות רגליים של מבנים מובלטות למעלה עד לראש שטוח. יכול להיות שגובה המבנים לא יהיה מדויק.

מבנה LOD 2

למכשיר GARStreetscapeGeometryQualityBuildingLOD_2 תהיה גיאומטריה ברמת דיוק גבוהה יותר. קירות וגגות הרשת יתאימו בצורה מדויקת יותר לצורת הבניין. ישויות קטנות יותר, כמו ארובות או פתחי אוורור בגגות, עדיין עשויות לדגוש מחוץ לרשת.

הסבר על GARMesh

GARMesh היא רשת פוליגונים שמייצגת שחזור של פני השטח של הגיאומטריה של Streetscape. כל GARMesh כולל מאגר נתונים זמני של קודקוד ומאגר נתונים זמני של אינדקס:

לצרף תוכן 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];