ממשקי ה-API של גיאומטריה של סביבת הרחוב מספקים את הגיאומטריה של פני השטח, הבניינים או מבנים אחרים בסצנה. אפשר להשתמש בגיאומטריה לצורך חסימה, רינדור או מיקום של תוכן AR באמצעות ממשקי API לבדיקת היט. נתוני הגיאומטריה של סביבת הרחוב מתקבלים באמצעות תמונות מ-Google Street View.
הגדרת ה-API גיאו-מרחבי
כדי להשתמש ב-Streetscape Geometry, צריך להגדיר את Geospatial API בפרויקט. פועלים לפי ההוראות במאמר הפעלת Geospatial API כדי להגדיר את Geospatial API.
הפעלת גיאומטריה של סביבת הרחוב
ה-Geospatial API מקבל נתוני Streetscape Geometry כאשר ArGeospatialMode
מוגדר לערך ArGeospatialModeEnabled
ו-ArStreetscapeGeometryMode
מוגדר לערך ArStreetscapeGeometryModeEnabled
.
// Create a session config. ArConfig* ar_config = NULL; ArConfig_create(ar_session, &ar_config); // Enable the Geospatial API. ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); // Enable Streetscape Geometry. ArConfig_setStreetscapeGeometryMode(ar_session, ar_config, AR_STREETSCAPE_GEOMETRY_MODE_ENABLED); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); // Release config resources. ArConfig_destroy(ar_config);
קבלת גיאומטריה של Streetscape בסשן ARCore
אפשר להשתמש ב-ArSession_getAllTrackables()
ולהשתמש ב-AR_TRACKABLE_STREETSCAPE_GEOMETRY
כדי לסנן את התוצאות.
ArTrackableList* trackable_list = NULL; ArTrackableList_create(ar_session, &trackable_list); ArSession_getAllTrackables(ar_session, AR_TRACKABLE_STREETSCAPE_GEOMETRY, trackable_list);
הסבר על ArStreetscapeGeometry
ArStreetscapeGeometry
מכיל מידע על מבנה:
-
ArStreetscapeGeometry_getType()
המאפיין הזה מזהה את StreetscapeGeometry כשטח או כבניין. -
ArStreetscapeGeometry_acquireMesh()
יוצרים פוליגוןArMesh
שתואם לפני השטח או לבניין. -
ArStreetscapeGeometry_getMeshPose()
מתאר את מקור הגיאומטריה. צריך לבצע טרנספורמציה של כל הנקודות ב-ArMesh
באמצעותArStreetscapeGeometry_getMeshPose()
. -
ArStreetscapeGeometry_getQuality()
מספק את האיכות של נתוני הרשת. רמות הפירוט מתוארות בתקן של CityGML 2.0.
מבנה LOD 1
AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1
מורכב מטביעות רגליים של מבנים מובלטות למעלה עד לראש שטוח. יכול להיות שגובה המבנים לא מדויק.
מבנה LOD 2
ל-AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2
תהיה גיאומטריה באיכות גבוהה יותר. קירות וגגות הרשת יתאימו בצורה מדויקת יותר לצורת הבניין. תכונות קטנות יותר, כמו תנורים או פתחי אוורור בגג, עשויות עדיין לבלוט מחוץ לרשת.
הסבר על ArMesh
ArMesh
היא רשת פוליגונים שמייצגת שחזור של פני השטח של גיאומטריה של סביבת הרחוב.
כל ArMesh
כולל מאגר נתונים זמני של קודקוד ומאגר נתונים זמני של אינדקס:
ArMesh_getVertexListSize()
אחזור מספר הנקודות (vertices) ברשת הזו.ArMesh_getVertexList()
מוצאים את המיקומים המשורשרים של קודקודי רשת, בקואורדינטות ביחסArStreetscapeGeometry_getMeshPose()
.ArMesh_getIndexListSize()
אחזור של מספר האינדקסים ברשת הזו.ArMesh_getIndexList()
קבלת האינדקסים של הקודקודים שמרכיבים פנים.
לצרף תוכן AR אל ArStreetscapeGeometry
יש שתי דרכים לצרף תוכן AR לגיאומטריה של Streetscape:
- מפעילים את האפשרות עומק גיאו-מרחבי ומשתמשים בבדיקת נתוני עומק. זו השיטה המומלצת והקלה יותר.
- אפשר להשתמש ב-
ArTrackable_acquireNewAnchor()
כדי ליצור עוגן בתנוחה נתונה שמחוברת ל-ArStreetscapeGeometry
. קובץ העוגן הזה יקבל בירושה את מצב המעקב שלו מתבנית ההורהArStreetscapeGeometry
.
ביצוע בדיקת היט מול ArStreetscapeGeometry
אפשר להשתמש בפרמטר ArFrame_hitTest
כדי לבצע בדיקה מול גיאומטריה של Streetscape. אם נמצאות צמתים, השדה ArHitResult
מכיל פרטי תנוחה לגבי מיקום ההיט, וכן הפניה ל-ArStreetscapeGeometry
שהוכה. ניתן להעביר את הגיאומטריה של Streetscape אל ArTrackable_acquireNewAnchor()
כדי ליצור עוגן שמוצמד אליו.
ArHitResultList *hit_result_list = NULL; ArHitResult *hit_result = NULL; ArHitResultList_create(ar_session, &hit_result_list); ArHitResult_create(ar_session, &hit_result); ArFrame_hitTestRay(ar_session, ar_frame, origin, direction, hit_result_list); ArHitResultList_getItem(ar_session, hit_result_list, 0, hit_result); ArAnchor *out_anchor = NULL; ArStatus status = ArHitResult_acquireNewAnchor(ar_session, hit_result, &out_anchor); CHECK(status == AR_SUCCESS);
הפעלת עומק גיאו-מרחבי
התכונה עומק גיאו-מרחבי משלבת בין גיאומטריה של סביבת הרחוב לבין קלט של חיישנים מקומיים כדי לשפר את נתוני העומק. כשמפעילים את התכונה 'עומק גיאו-מרחבי', עומק הפלט ותמונות העומק הגולמיות משתנים כך שיכללו גיאומטריה של סביבת הרחוב בפורמט רסטר, בנוסף לעומק שנצפה באופן מקומי. כך אפשר לשפר את הדיוק של תנוחות בעזרת עומק.