يمكن لتطبيقك استرداد معلومات العمق من خلال ARCore for Jetpack XR لتحديد مدى قرب الأجسام المادية من الجهاز.
إنشاء جلسة ARCore for Jetpack XR
الحصول على معلومات العمق من خلال Session في ARCore for Jetpack XR إذا كنت بصدد تحسين واجهة المستخدم المكانية باستخدام Jetpack Compose
لتقنية الواقع الممتد (XR)، يمكنك الوصول إلى جلسة من Jetpack Compose for XR. إذا كنت تعمل مع كيانات مكانية من مكتبة Jetpack SceneCore، يمكنك الوصول إلى جلسة من Jetpack XR Runtime.
ضبط الجلسة
لا يتم تفعيل استرداد خريطة العمق تلقائيًا في جلسات الواقع الممتد. لتفعيل استرجاع خريطة العمق، اضبط الجلسة وحدِّد 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: يتم تفعيل تقدير العمق باستخدام قيم العمق الخام والمعدّل وقيم الثقة.
توفّر خرائط العمق الأولية تقديرات للعمق بدقة أعلى، ولكن قد لا تتضمّن صور العمق الأولية تقديرات للعمق لجميع وحدات البكسل في صورة الكاميرا. في المقابل، توفّر خرائط العمق السلسة عمقًا تقديريًا لكل بكسل، ولكن قد تكون بيانات العمق لكل بكسل أقل دقة بسبب التنعيم والاستيفاء للتقديرات.
التحقّق من إمكانات خريطة العمق
تختلف إمكانيات الأجهزة باختلاف أنواعها. قد توفّر الأجهزة التي تتضمّن إعدادات كاميرا استريو خرائط لتقدير العمق لكل من الكاميرا اليسرى واليمنى. وبالمثل، لا يمكن للأجهزة التي تحتوي على كاميرا واحدة توفير خرائط تقدير العمق إلا للكاميرا الأحادية.
للتحقّق من خرائط العمق المتوافقة مع الجهاز، استخدِم
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.