אחזור מידע על עומק באפליקציה באמצעות ARCore ל-Jetpack XR

האפליקציה יכולה לאחזר מידע על עומק דרך ARCore ל-Jetpack XR כדי לקבוע את המרחק של עצמים פיזיים מהמכשיר.

יצירת פעילות לסשן של ARCore for Jetpack XR

קבלת מידע על תנוחת הראש באמצעות פעילות לסשן של ARCore for Jetpack XR. כדי לקבל Session, אפשר לעיין במאמר הסבר על מחזור החיים של סשן.

הגדרת הסשן

האפשרות לאחזור מפת עומק לא מופעלת כברירת מחדל בסשנים של XR. כדי להפעיל אחזור של מפת עומק, צריך להגדיר את הסשן ולבחור DepthEstimationMode:

val newConfig = session.config.copy(
    depthEstimation = Config.DepthEstimationMode.SMOOTH_ONLY,
)
when (val result = session.configure(newConfig)) {
    is SessionConfigureSuccess -> TODO(/* Success! */)
    is SessionConfigureConfigurationNotSupported ->
        TODO(/* Some combinations of configurations are not valid. Handle this failure case. */)
    else ->
        TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */)
}

אלה הערכים האפשריים של DepthEstimationMode:

  • DISABLED: לא סופק מידע על עומק הסצנה.
  • RAW_ONLY: הערכת העומק מופעלת עם ערכי עומק ומהימנות גולמיים.
  • SMOOTH_ONLY: הערכת העומק מופעלת עם ערכי עומק ומהימנות חלקים.
  • SMOOTH_AND_RAW: הערכת העומק מופעלת עם ערכי עומק גולמיים וחלקים וערכי ודאות.

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

android.permission.SCENE_UNDERSTANDING_FINE

אחזור נתוני עומק

כדי לקבל נתוני עומק עבור מצלמה מסוימת, משתמשים ב-DepthMap:

val depthMap = DepthMap.left(session) ?: return

למכשירים שונים יש יכולות שונות. מכשירים עם הגדרת מצלמה סטריאו מחזירים מפות עומק שאינן null עבור מצלמות left ו-right. באופן דומה, מכשירים עם מצלמה אחת מחזירים מפת עומק לא ריקה באמצעות mono.

חישוב ערכי העומק

אפשר לקבל ערכי עומק וערכי מהימנות ממפת העומק שמתקבלת:

val depthMap = DepthMap.left(session) ?: return

בהתאם להגדרת התצורה שבה משתמשים, אפשר לגשת למפת העומק המתאימה באמצעות smoothDepthMap או rawDepthMap. המידות שמופיעות במפות האלה הן במטרים. אפשר גם לגשת לערכי רמת הביטחון באמצעות התגים smoothConfidenceMap ו-rawConfidenceMap. הערכים האלה נעים בין 0 ל-255, כאשר 255 מייצג את רמת הוודאות הגבוהה ביותר.

כדי לעבד מפת עומק למטרות ניפוי באגים או ויזואליזציה, אפשר לעיין בחלק העומק באפליקציית הבדיקה של ARCore.