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

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

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

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

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

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

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

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