ממשקי ה-API לגיאומטריה של Streetscape מספקים את הגיאומטריה של פני השטח, בניינים או מבנים אחרים בסצנה. ניתן להשתמש בגאומטריה להסתרה, לעיבוד או למיקום של תוכן AR באמצעות ממשקי API לבדיקת תקינות. נתונים גיאומטריים של Streetscape מתקבלים מתמונות Google Street View.
הגדרת ה-API הגיאו-מרחבי
כדי להשתמש בגיאומטריה של Streetscape, עליכם להגדיר את ה-Geospatial API בפרויקט שלכם. מבצעים את ההוראות להפעלת ה-API הגאו-מרחבי כדי להגדיר את ה-Geospatial API.
הפעלת גיאומטריית Streetscape
ה-API הגיאו-מרחבי מקבל נתונים גיאומטריים של Streetscape כאשר הערך של 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
היא רשת פוליגונים שמייצגת שחזור של פני השטח של גיאומטריית Streetscape.
כל ArMesh
כולל מאגר של קודקוד ומאגר תגים של אינדקס:
ArMesh_getVertexListSize()
אחזור מספר הקודקודים ברשת הזו.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);
הפעלת 'עומק גיאו-מרחבי'
המדד עומק גיאו-מרחבי משלב גיאומטריה של Streetscape עם קלט מחיישנים מקומיים כדי לשפר את נתוני העומק. כשמפעילים את התכונה 'עומק גיאו-מרחבי', תמונות העומק ועומק הפלט משתנים כך שיכללו גיאומטריית Streetscape שעברה רסטר, בנוסף לנתוני העומק המקומיים. הפעולה הזו יכולה לשפר את הדיוק של התנוחות באמצעות העומק.