האפליקציה יכולה לאחזר מידע על עומק באמצעות 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 = DepthEstimationMode.SMOOTH_ONLY, ) when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) 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
בדיקה של יכולות מפת העומק
למכשירים שונים יש יכולות שונות. מכשירים עם הגדרת מצלמה סטריאו עשויים לספק מפות להערכת עומק עבור המצלמות השמאלית והימנית. באופן דומה, מכשירים עם מצלמה אחת יכולים לספק מפות להערכת עומק רק עבור המצלמה המונוכרומטית.
כדי לבדוק אילו מפות עומק נתמכות במכשיר, משתמשים ב-XrDevice.isRenderingModeSupported:
val xrDevice = XrDevice.getCurrentDevice(context) val hasMonoDepth = xrDevice.isRenderingModeSupported(RenderingMode.MONO) val hasStereoDepth = xrDevice.isRenderingModeSupported(RenderingMode.STEREO)
אחזור נתוני עומק
כדי לקבל נתוני עומק עבור מצלמה מסוימת, משתמשים ב-DepthMap:
if (hasStereoDepth) { val depthMap = Depth.left(session) }
חישוב ערכי העומק
אפשר לקבל ערכי עומק וערכי מהימנות ממפת העומק שמתקבלת:
if (hasStereoDepth) { val depthMap = Depth.left(session) }
בהתאם להגדרת התצורה שבה משתמשים, ניגשים למפת העומק המתאימה באמצעות smoothDepthMap או rawDepthMap. המידות שמופיעות במפות האלה הן במטרים. אפשר גם לגשת לערכי רמת הביטחון באמצעות התגים smoothConfidenceMap ו-rawConfidenceMap. הערכים האלה נעים בין 0 ל-255, כאשר 255 מייצג את רמת המהימנות הכי גבוהה.
כדי לעבד מפת עומק למטרות ניפוי באגים או ויזואליזציה, אפשר לעיין בחלק העומק של אפליקציית הבדיקה של ARCore.