שימוש במבנים ובפני השטח בסביבתך ב-Android SDK (Kotlin/Java)

ממשקי ה-API לגיאומטריה של Streetscape מספקים את הגיאומטריה של פני השטח, בניינים או מבנים אחרים בסצנה. ניתן להשתמש בגאומטריה להסתרה, לעיבוד או למיקום של תוכן AR באמצעות ממשקי API לבדיקת תקינות. נתונים גיאומטריים של Streetscape מתקבלים מתמונות Google Street View.

רוצה לנסות את הדוגמה?

האפליקציה לדוגמה geospatial_java מדגימה איך לקבל ולעבד צורות גיאומטריות ב-Streetscape.

הגדרת ה-API הגיאו-מרחבי

כדי להשתמש בגיאומטריה של Streetscape, עליכם להגדיר את ה-Geospatial API בפרויקט שלכם. מבצעים את ההוראות להפעלת ה-API הגאו-מרחבי כדי להגדיר את ה-Geospatial API.

הפעלת גיאומטריית Streetscape

ה-API הגיאו-מרחבי מקבל נתונים גיאומטריים של Streetscape כאשר הערך של GeospatialMode הוא GeospatialMode.ENABLED ו-StreetscapeGeometryMode מוגדר ל-StreetscapeGeometryMode.ENABLED.

Java

Config config = session.getConfig();
// Streetscape Geometry requires the Geospatial API to be enabled.
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
// Enable Streetscape Geometry.
config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED);
session.configure(config);

Kotlin

session.configure(
  session.config.apply {
    // Streetscape Geometry requires the Geospatial API to be enabled.
    geospatialMode = Config.GeospatialMode.ENABLED
    // Enable Streetscape Geometry.
    streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
  }
)

קבלת גיאומטריה של Streetscape בסשן ARCore

יש להשתמש ב-Session.getAllTrackables() ולהשתמש ב-StreetscapeGeometry.class לסינון התוצאות.

Java

session.getAllTrackables(StreetscapeGeometry.class);

Kotlin

session.getAllTrackables(StreetscapeGeometry::class.java)

להבין את StreetscapeGeometry

StreetscapeGeometry מכיל מידע על מבנה:

מבנה LOD 1

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

מבנה LOD 2

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

להבין את Mesh

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

צירוף תוכן AR אל StreetscapeGeometry

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

בדיקת היט על StreetscapeGeometry

הפונקציה Frame.hitTest() יכולה לשמש לבדיקה של גיאומטריה ב-Streetscape. אם יימצאו צמתים, HitResult מכיל את פרטי התנוחה לגבי מיקום ההתאמה וגם הפניה ל-StreetscapeGeometry שהתקבל. ניתן להעביר גיאומטריית Streetscape זו אל Trackable.createAnchor() כדי לצרף אליה עוגן.

Java

for (HitResult hit : frame.hitTest(singleTapEvent)) {
  if (hit.getTrackable() instanceof StreetscapeGeometry) {
    Pose hitPose = hit.getHitPose();
    hit.getTrackable().createAnchor(hitPose);
  }
}

Kotlin

for (hit in frame.hitTest(singleTapEvent)) {
  if (hit.trackable is StreetscapeGeometry) {
    val hitPose = hit.hitPose
    hit.trackable.createAnchor(hitPose)
  }
}

הפעלת 'עומק גיאו-מרחבי'

המדד עומק גיאו-מרחבי משלב גיאומטריה של Streetscape עם קלט מחיישנים מקומיים כדי לשפר את נתוני העומק. כשמפעילים את התכונה 'עומק גיאו-מרחבי', תמונות העומק ועומק הפלט משתנים כך שיכללו גיאומטריית Streetscape שעברה רסטר, בנוסף לנתוני העומק המקומיים. הפעולה הזו יכולה לשפר את הדיוק של התנוחות באמצעות העומק.