האפליקציה יכולה לאחזר מידע על עומק דרך 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 = Config.Builder(session.config) .setDepthEstimation(DepthEstimationMode.SMOOTH_ONLY) .build() 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: הערכת העומק מופעלת עם ערכי עומק וערכי מהימנות גולמיים וחלקים.
מפות עומק גולמיות מספקות הערכות עומק מדויקות יותר, אבל יכול להיות שתמונות עומק גולמיות לא יכללו הערכות עומק לכל הפיקסלים בתמונת המצלמה. לעומת זאת, מפות העומק החלקות מספקות עומק משוער לכל פיקסל, אבל נתוני העומק לכל פיקסל עשויים להיות פחות מדויקים בגלל החלקה ואינטרפולציה של הערכות העומק.
בדיקת היכולות של מפת העומק
למכשירים שונים יש יכולות שונות. במכשירים עם מצלמת סטריאו, יכול להיות שיוצגו מפות של הערכת עומק למצלמה השמאלית והימנית. באופן דומה, מכשירים עם מצלמה אחת יכולים לספק רק מפות של הערכת עומק למצלמה המונוכרומטית.
כדי לבדוק באילו מפות עומק המכשיר תומך, משתמשים ב-XrDevice.isRenderingModeSupported:
val xrDevice = XrDevice.getCurrentDevice(context) val hasMonoDepth = xrDevice.isRenderingModeSupported(RenderingMode.MONO) val hasStereoDepth = xrDevice.isRenderingModeSupported(RenderingMode.STEREO)
אחזור נתוני עומק
כדי לקבל נתוני עומק למצלמה מסוימת, משתמשים ב-Depth:
if (hasStereoDepth) { val depthMap = Depth.left(session) }
חישוב ערכי עומק
אפשר לקבל ערכי עומק וערכי מהימנות ממפת העומק שנוצרה:
if (hasStereoDepth) { val depthMap = Depth.left(session) }
בהתאם להגדרות האישיות, אפשר לגשת למפת העומק המתאימה באמצעות smoothDepthMap או rawDepthMap. המידות במפות האלה מוצגות במטרים. אפשר גם לגשת לערכי המהימנות באמצעות smoothConfidenceMap ו-rawConfidenceMap. הערכים האלה נעים בין 0 ל-255, כאשר 255 מייצג את רמת הסבירות הגבוהה ביותר.
כדי ליצור מפת עומק למטרות ניפוי באגים או המחשה חזותית, עיינו בחלק Depth באפליקציית הבדיקה של ARCore.