ממשקי ה-API של Streetscape Geometry מספקים את הגיאומטריה של פני השטח, של בניינים או של מבנים אחרים בסצנה. אפשר להשתמש בגיאומטריה כדי לבצע חסימה, עיבוד או מיקום של תוכן AR באמצעות ממשקי API של בדיקת התאמה. הנתונים הגיאומטריים של Streetscape מתקבלים דרך תמונות Google Street View.
רוצה לנסות את הדוגמה?
האפליקציה לדוגמה geospatial_java מדגימה איך לקבל ולעבד תמונות גיאומטריות של Streetscape.
הגדרת ה-API הגיאו-מרחבי
כדי להשתמש ב-Streetscape Geometry, צריך להגדיר את ה-API הגיאו-מרחבי בפרויקט בפרויקט שלכם. כדי להגדיר את Geospatial API, פועלים לפי ההוראות להפעלת ה-Geospatial API.
הפעלת גיאומטריה של סביבת הרחוב
ה-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
מכיל מידע על מבנה:
-
StreetscapeGeometry.getType()
מזהה את StreetscapeGeometry כפני שטח או כבניין. -
StreetscapeGeometry.getMesh()
יוצרים פוליגוןMesh
שתואם לפני השטח או לבניין. -
StreetscapeGeometry.getMeshPose()
מתאר את מקור הגיאומטריה. צריך לשנות את כל הנקודות ב-Mesh
באמצעותStreetscapeGeometry.getMeshPose()
. -
StreetscapeGeometry.getQuality()
מספק את האיכות של נתוני הרשת. רמות הפירוט מתוארות בתקן של CityGML 2.0.
מבנה LOD 1
StreetscapeGeometry.Quality.BUILDING_LOD_1
מורכב מטביעות רגליים של מבנים מובלטות למעלה עד לראש שטוח. יכול להיות שגובה המבנים לא יהיה מדויק.
מבנה LOD 2
למכשיר StreetscapeGeometry.Quality.BUILDING_LOD_2
תהיה גיאומטריה ברמת דיוק גבוהה יותר. קירות וגגות הרשת יתאימו בצורה מדויקת יותר לצורת הבניין. ישויות קטנות יותר, כמו ארובות או פתחי אוורור בגגות, עדיין עשויות לדגוש מחוץ לרשת.
הסבר על Mesh
Mesh
היא רשת פוליגונים שמייצגת שחזור של פני השטח של הגיאומטריה של Streetscape.
כל Mesh
כולל מאגר נתונים זמני של קודקוד ומאגר נתונים זמני של אינדקס:
Mesh.getVertexListSize()
אחזור של מספר הקודקודים ברשת הזו.Mesh.getVertexList()
מוצאים את המיקומים המשורשרים של קודקודי רשת, בקואורדינטות ביחסStreetscapeGeometry.getMeshPose()
.Mesh.getIndexListSize()
אחזור של מספר האינדקסים ברשת הזו.Mesh.getIndexList()
קבלת האינדקסים של הקודקודים שמרכיבים פנים.
לצרף תוכן AR אל StreetscapeGeometry
יש שתי דרכים לצרף תוכן AR לגיאומטריה של Streetscape:
- מפעילים את האפשרות עומק גיאו-מרחבי ומשתמשים בבדיקת נתוני עומק. זו השיטה המומלצת והקלה יותר.
- אפשר להשתמש ב-
Trackable.createAnchor()
כדי ליצור עוגן בתנוחה נתונה שמחוברת ל-StreetscapeGeometry
. קובץ העוגן הזה יקבל בירושה את מצב המעקב שלו מתבנית ההורהStreetscapeGeometry
.
ביצוע בדיקת היתקלות (hit-test) מול 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 שעברה רסטרציה, בנוסף לעמוקה המקומית שנמדדת. כך ניתן לשפר את הדיוק של תנוחות באמצעות התכונה 'עומק'.