איך משתמשים ב-Scene Semantics API באפליקציות שלכם.
Scene Semantics API מאפשר למפתחים להבין את הסביבה שמקיפה את המשתמש, על ידי מתן מידע סמנטי בזמן אמת שמבוסס על מודלים של למידת מכונה. כשנותנים ל-API תמונה של סצנה בחוץ, הוא מחזיר תווית לכל פיקסל מתוך קבוצה של סיווגים סמנטיים שימושיים, כמו שמים, בניין, עץ, כביש, מדרכה, רכב, אדם ועוד. בנוסף לתוויות פיקסלים, Scene Semantics API מציע גם ערכי ביטחון לכל תווית פיקסלים, ודרך קלה להריץ שאילתות לגבי שכיחות התווית בסצנה בחוץ.
משמאל לימין, דוגמאות לתמונה קלט, התמונה הסמנטית של תוויות הפיקסלים ותמונת האמון התואמת:
דרישות מוקדמות
לפני שממשיכים, חשוב להבין את המושגים הבסיסיים של AR ואת האופן שבו מגדירים סשן ARCore.
הפעלת סמנטיקה של סצנות
בסשן ARCore חדש, בודקים אם המכשיר של המשתמש תומך ב-Scene Semantics API. לא כל המכשירים התואמים ל-ARCore תומכים ב-Scene Semantics API בגלל מגבלות של כוח עיבוד.
כדי לחסוך במשאבים, סמנטיקה של סצנה מושבתת כברירת מחדל ב-ARCore. מפעילים את המצב הסמנטי כדי שהאפליקציה תשתמש ב-Scene Semantics API.
בקובץ ARCoreExtensionsConfig, מגדירים את Semantics Mode (מצב סמנטיקה) כ-Enabled (מופעל).
אם משתמשים ב-iOS, צריך להפעיל את הסמנטיקה גם בהגדרות הפרויקט:
- עוברים אל עריכה > הגדרות הפרויקט > ניהול יישומי פלאגין ל-XR > תוספים של ARCore.
- בקטע Optional Features (תכונות אופציונליות), בוחרים באפשרות Semantics on iOS (סמנטיקה ב-iOS).
אחזור התמונה הסמנטית
אחרי שמפעילים את 'סמנטיקה של סצנה', אפשר לאחזר את התמונה הסמנטית. התמונה הסמנטית היא תמונה מסוג TextureFormat.R8
, שבה כל פיקסל תואם לתווית סמנטית שמוגדרת על ידי SemanticLabel
.
משתמשים ב-ArSemanticManager.TryGetSemanticTexture()
כדי לקבל את התמונה הסמנטית:
if (semanticManager.TryGetSemanticTexture(out Texture2D semanticImage))
{
using (semanticImage)
{
// Use the semantic image here.
}
}
תמונות סמנטיות של הפלט אמורות להיות זמינות אחרי כ-1-3 מסגרות מתחילת הסשן, בהתאם למכשיר.
אחזור של קובץ האימג' של האמון
בנוסף לתמונה הסמנטית, שמספקת תווית לכל פיקסל, ה-API מספק גם תמונה של רמת האמון של ערכי האמון התואמים של הפיקסלים. תמונת האמון היא תמונה מסוג TextureFormat.Alpha8
, שבה כל פיקסל תואם לערך בטווח [0, 255]
, בהתאם להסתברות שמשויכת לתווית הסמנטית של כל פיקסל.
משתמשים ב-ArSemanticManager.TryGetSemanticConfidenceTexture()
כדי לקבל את תמונת האמון הסמנטית:
if (semanticManager.TryGetSemanticConfidenceTexture(out Texture2D semanticConfidenceImage))
{
using (semanticConfidenceImage)
{
// Use the semantic confidence image here.
}
}
תמונות של רמת האמון בפלט אמורות להיות זמינות אחרי כ-1-3 מסגרות מתחילת הסשן, בהתאם למכשיר.
שליחת שאילתה לגבי החלק היחסי של הפיקסלים בתווית סמנטית
אפשר גם לשלוח שאילתה לגבי החלק של הפיקסלים בפריים הנוכחי ששייכים לקבוצה מסוימת, כמו 'שמים'. השאילתה הזו יעילה יותר מאשר החזרת התמונה הסמנטית וביצוע חיפוש לפי פיקסלים של תווית ספציפית. החלק החזרה הוא ערך של float בטווח [0.0, 1.0]
.
משתמשים בפקודה ArSemanticManager.GetSemanticLabelFraction()
כדי לקבל את החלק של תווית נתונה:
var fraction = semanticManager.GetSemanticLabelFraction(SemanticLabel.SKY);