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

يصف 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() لمزيد من التفاصيل.