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

تصف إعدادات الكاميرا خصائص كاميرا الاستشعار الأساسية للتطبيق. في Unity، يمكن الوصول إلى هذه الإعدادات من خلال XRCameraConfiguration.

على نظام Android الأساسي، يوفّر ARCore XRCameraConfigurationExtensions لعرض سمات إضافية خاصة بـ ARCore ضمن XRCameraConfiguration. يمكنك استخدام هذه السمات لإعداد إعدادات الكاميرا المناسبة لتطبيقك.

سمات إعدادات الكاميرا الموسّعة (Android)

تتيح منصة Android استخدام السمات الموسّعة التالية في ARCore.

الوصول إلى إعدادات الكاميرات المتوافقة

استخدِم ARCameraManager.GetConfigurations() للوصول إلى إعدادات الكاميرا المتوافقة لجهاز معيّن. يؤدي ذلك إلى عرض خطأ NativeArray يحتوي على مثيلات متعددة لـ XRCameraConfiguration. كل مثيل هو إعداد كاميرا فردي يحدّد سمات مثل استخدام العمق وعدد اللقطات المستهدَف في الثانية ودرجة الدقة وأبعاد النسيج.

ضبط الكاميرا في مشهد تطبيقك

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

  1. استخدِم ARCameraManager مع ARCameraManager.GetConfigurations() للبحث في قائمة XRCameraConfigurations المتوافقة.

  2. إذا كنت بصدد إنشاء تطبيق لنظام التشغيل Android، استخدِم أيّ مجموعة من الدوالّ في ملف برمجي XRCameraConfigurationExtensions للحصول على خصائص خاصة بـ ARCore.

  3. استخدِم cameraManager.currentConfiguration لضبط الإعدادات الحالية.

using UnityEngine.XR.ARFoundation;


// Adds XRCameraConfigurationExtensions extension methods to XRCameraConfiguration.
// This is for the Android platform only.
using Google.XR.ARCoreExtensions;

// Must be set in the editor.
public ARCameraManager cameraManager;

// Use ARCameraManager to obtain the camera configurations.
using (NativeArray<XRCameraConfiguration> configurations = cameraManager.GetConfigurations(Allocator.Temp))
{
    if (!configurations.IsCreated || (configurations.Length <= 0))
    {
        return;
    }

    // Iterate through the list of returned configs to locate the config you want.
    var desiredConfig = configurations[0];
    for (int i = 1; i < configurations.Length; ++i)
    {
        // Choose a config for a given camera that uses the maximum
        // target FPS and texture dimension. If supported, this config also enables
        // the depth sensor.
        if (configurations[i].GetFPSRange().y > desiredConfig.GetFPSRange().y &&
            configurations[i].GetTextureDimensions().x > desiredConfig.GetTextureDimensions().x &&
            configurations[i].GetTextureDimensions().y > desiredConfig.GetTextureDimensions().y &&
            configurations[i].CameraConfigDepthSensorUsage() == CameraConfigDepthSensorUsage.RequireAndUse)
        {
            desiredConfig = configurations[i];
        }
    }

    // Set the configuration you want. If it succeeds, the session
    // automatically pauses and resumes to apply the new configuration.
    // If it fails, cameraManager.currentConfiguration throws an exception.
    if (desiredConfig != cameraManager.currentConfiguration)
    {
        cameraManager.currentConfiguration = desiredConfig;
    }
}

فلاتر إعدادات الكاميرا

يمكنك استخدام ARCoreExtensionsCameraConfigFilter لتضييق نطاق إعدادات الكاميرا المتاحة لجهاز معيّن أثناء التشغيل من خلال الفلترة استنادًا إلى احتياجات تطبيقك.

الحد من عدد اللقطات في الثانية لالتقاط الكاميرا إلى 30 لقطة في الثانية

إذا لم يكن تطبيقك بحاجة إلى عدد لقطات أسرع في الثانية للكاميرا، يمكنك ضبطه على 30 لقطة في الثانية. على الأجهزة التي تتيح عدد لقطات في الثانية يبلغ 60 لقطة، ستمنح أداة ARCore الأولوية لإعدادات الكاميرا التي تتيح هذا العدد من اللقطات تلقائيًا. لفلترة جميع إعدادات الكاميرا التي تتيح 60 لقطة في الثانية، تأكَّد من ضبط Target Camera Framerate على Target 30FPS.

منع ARCore من استخدام أداة استشعار العمق

إذا كان تطبيقك لا يتطلّب ميزة "العمق"، يمكنك منع ARCore من استخدام كاميرا قياس عمق التصوير. على الأجهزة التي تتضمّن أداة استشعار عمق متوافقة، يمنح ARCore الأولوية لإعدادات الكاميرا التي تستخدِم أداة استشعار العمق. لفلترة جميع إعدادات الكاميرا التي تستخدم Depth Sensor Usage، احرص على ضبط Depth Sensor Usage على Do Not Use.

استخدام فلاتر إعدادات الكاميرا

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

انتقِل إلى Assets > Create > XR > Camera Config Filter لإنشاء فلتر جديد لإعدادات الكاميرا.

اختَر الإعدادات التي تريد أن يستخدمها الفلتر.

بعد إنشاء الفلتر، يمكنك استخدامه في أحد مكوّنات ARCoreExtensions.

ضبط الكاميرا أثناء التشغيل

يمكنك استخدام حدث الاستدعاء ARCoreExtensions.OnChooseXRCameraConfiguration لضبط الكاميرا أثناء التشغيل، استنادًا إلى عوامل مثل نوع الجهاز.

// Unity's Awake() method
public void Awake()
{
    
    // If the return value is not a valid index (ex. the value if -1),
    // then no camera configuration will be set. If no previous selection exists, 
    // the ARCore session will use the previously selected camera configuration 
    // or a default configuration.
    arcoreExtensions.OnChooseXRCameraConfiguration = SelectCameraConfiguration;
    
}

// A custom camera configuration selection function
int SelectCameraConfiguration(List<XRCameraConfiguration> supportedConfigurations)
{
    int index = 0;

    // Use custom logic here to choose the desired configuration from supportedConfigurations.

    return index;
}