להבין את סביבת המשתמש ב-Unity 's AR Foundation

רוצים לדעת איך משתמשים ב-Scene Semantics API באפליקציות שלכם?

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

משמאל לימין דוגמאות של תמונת קלט, התמונה הסמנטית של תוויות הפיקסלים ותמונת הסמך המתאימה:

דוגמה לתמונת קלט, תמונה סמנטית ותמונת מהימנות סמנטית.

דרישות מוקדמות

לפני שממשיכים, חשוב לוודא שאתם מבינים את המושגים הבסיסיים של AR ואת האופן שבו מגדירים סשן של ARCore.

הפעלת סמנטיקה של סצנות

בסשן ARCore חדש, צריך לבדוק אם מכשיר של משתמש תומך ב-Scemantics API. לא כל המכשירים שתואמים ל-ARCore תומכים ב-Scemantics API בגלל אילוצי כוח עיבוד.

כדי לחסוך במשאבים, התכונה 'סמנטיקה' מושבתת כברירת מחדל ב-ARCore. צריך להפעיל מצב סמנטי כדי שהאפליקציה תשתמש ב-Scement Semantics API.

ב-ARCoreExtensionsConfig, מגדירים את Semantics Mode כ-Enabled.

מצב הסמנטיקה מופעל.

אם משתמשים ב-iOS, צריך להפעיל את Semantics גם בהגדרות הפרויקט:

  1. עוברים אל עריכה > הגדרות פרויקט > ניהול פלאגין XR > תוספי ARCore.
  2. בקטע תכונות אופציונליות, בוחרים באפשרות סמנטיקה ב-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 פריימים מתחילת הסשן, בהתאם למכשיר.

הרצת שאילתה על חלק הפיקסלים עבור תווית סמנטית

ניתן גם לבצע שאילתה לגבי שבר הפיקסלים במסגרת הנוכחית, ששייכים למחלקה מסוימת, כמו שמיים. השאילתה הזו יעילה יותר מהחזרת התמונה הסמנטית וביצוע חיפוש לפי פיקסלים של תווית ספציפית. השבר המוחזר הוא ערך צף בטווח [0.0, 1.0].

משתמשים ב-ArSemanticManager.GetSemanticLabelFraction() כדי לקבל את השבר לתווית נתונה:

var fraction = semanticManager.GetSemanticLabelFraction(SemanticLabel.SKY);