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