שימוש במבנים ובפני השטח בסביבתך ב-Android NDK (C)

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

מבנה LOD 1

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

מבנה LOD 2

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

הסבר על ArMesh

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

לצרף תוכן AR אל ArStreetscapeGeometry

יש שתי דרכים לצרף תוכן AR לגיאומטריה של Streetscape:

ביצוע בדיקת היט מול 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 שעברה רסטרציה, בנוסף לעמוקה המקומית שנמדדת. כך אפשר לשפר את הדיוק של תנוחות בעזרת עומק.