האפליקציה יכולה לאחזר מידע על עומק דרך ARCore ל-Jetpack XR כדי לקבוע את המרחק של עצמים פיזיים מהמכשיר.
יצירת פעילות לסשן של ARCore for Jetpack XR
קבלת מידע על עומק באמצעות ARCore for Jetpack XR
Session. אם אתם משפרים ממשק משתמש מרחבי באמצעות Jetpack Compose for XR, אתם יכולים לגשת לסשן מ-Jetpack Compose for XR. אם אתם עובדים עם ישויות מרחביות מהספרייה Jetpack SceneCore, אתם יכולים לגשת לסשן מ-Jetpack XR Runtime.
הגדרת הסשן
שליפת מפת עומק לא מופעלת כברירת מחדל בסשנים של 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.