جارٍ إعداد الكاميرا

تصف ArCameraConfig خصائص أداة استشعار الكاميرا الأساسية، بما في ذلك:

  • معرّف الكاميرا
  • ما إذا كان سيتم استخدام مستشعر العمق، إن توفر
  • اتجاه الكاميرا:
    • صورة أمامية (ذاتية)
    • الواجهة الخلفية (العالمية)
  • نطاق اللقطات في الثانية (اللقطات في الثانية)
  • أبعاد صورة وحدة المعالجة المركزية (CPU)
  • أبعاد زخرفة وحدة معالجة الرسومات
  • ويمكن تحديد ما إذا كان سيتم استخدام كاميرات الاستيريو المتعددة في الجهاز في حال توفّرها.

عند إنشاء جلسة ARCore جديدة، يستخدم ARCore ArSession_setCameraConfig() لضبط إعدادات الكاميرا التي تتطابق على أفضل نحو مع قائمة الإعدادات المتاحة التي يعرضها ArSession_getSupportedCameraConfigsWithFilter(). يمكن لتطبيقك استخدام ArCameraConfigFilter لتضييق نطاق إعدادات الكاميرا المتاحة لجهاز معيّن في وقت التشغيل عن طريق الفلترة حسب احتياجات التطبيق.

تشمل حالات الاستخدام الشائعة للفلترة ما يلي:

  • الحد الأقصى لعدد اللقطات في الثانية لالتقاط صورة الكاميرا هو 30 لقطة في الثانية. وعلى الأجهزة التي تتيح التصوير بمعدل 60 لقطة في الثانية، سيعطي ARCore الأولوية لإعدادات الكاميرا التي تتوافق مع معدّل عرض الإطارات. لفلترة جميع إعدادات الكاميرا التي تتوافق مع 60 لقطة في الثانية، طبِّق فلترًا باستخدام ArCameraConfigFilter_setTargetFps() باستخدام AR_CAMERA_CONFIG_TARGET_FPS_30.

    // Return only camera configs that target 30 FPS camera capture frame
    // rate.
    ArCameraConfigFilter_setTargetFps(session, filter,
                                      AR_CAMERA_CONFIG_TARGET_FPS_30);

  • منع ARCore من استخدام أداة استشعار العمق على الأجهزة التي تحتوي على مستشعر عمق متوافق، يعطي ARCore الأولوية لإعدادات الكاميرا التي تستخدم مستشعر العمق. لفلترة جميع إعدادات الكاميرا التي تستخدم أداة استشعار العمق، طبِّق الفلتر ArCameraConfigFilter_setDepthSensorUsage() باستخدام AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

  • تحديد درجة دقة بديلة لوحدة معالجة الرسومات وعلى الأجهزة المتوافقة، قد يوفّر ARCore درجات دقة إضافية للزخرفة بوحدة معالجة الرسومات. قد يساعد اختيار زخرفة وحدة معالجة الرسومات ذات الدقة المنخفضة في تحسين أداء التطبيق عن طريق تقليل حِمل وحدة معالجة الرسومات وخفض متطلبات معدل نقل البيانات للذاكرة، على الرغم من أنّ ذلك ليس مضمونًا لتحسين الأداء في كل الحالات.

استخدام فلاتر ضبط الكاميرا

اتّبِع هذه الخطوات لتفعيل تطبيقك لفلترة إعدادات الكاميرا.

// Create an ARCore session.
ArSession* session;
ArSession_create(env, context, &session);

// Create a camera config list and filter for the session.
ArCameraConfig* selected_config;
ArCameraConfigList* configs;
ArCameraConfigFilter* filter;
ArCameraConfig_create(session, &selected_config);
ArCameraConfigList_create(session, &configs);
ArCameraConfigFilter_create(session, &filter);

// Return only camera configs that target 30 fps camera capture frame rate.
ArCameraConfigFilter_setTargetFps(session, filter,
                                  AR_CAMERA_CONFIG_TARGET_FPS_30);

// Return only camera configs that will not use the depth sensor.
ArCameraConfigFilter_setDepthSensorUsage(
    session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

// Get list of configs that match filter settings.
// In this case, this list is guaranteed to contain at least one element,
// because both TargetFps.TARGET_FPS_30 and DepthSensorUsage.DO_NOT_USE
// are supported on all ARCore supported devices.
ArSession_getSupportedCameraConfigsWithFilter(session, filter, configs);

// Use element 0 from the list of returned camera configs. This is because
// it contains the camera config that best matches the specified filter
// settings.
ArCameraConfigList_getItem(session, configs, 0, selected_config);

// Set the camera config to use selected_config.
ArSession_setCameraConfig(session, selected_config);

// Free memory.
ArCameraConfigFilter_destroy(filter);
ArCameraConfigList_destroy(configs);

وضع التركيز

يمكنك أيضًا ضبط وضع التركيز في إعدادات الجلسة. بشكل عام، يكون التركيز الثابت أفضل للتتبّع (وهو الإعداد التلقائي لـ ARCore على معظم الأجهزة). يجب تفعيل ميزة "التركيز التلقائي" للتسجيل والتصوير الفوتوغرافي وتصوير الفيديوهات وعندما تحتاج إلى التركيز على العناصر القريبة.

اطّلِع على ArConfig_setFocusMode() للحصول على التفاصيل.