कैमरा कॉन्फ़िगर किया जा रहा है

ArCameraConfig मुख्य कैमरा सेंसर की खूबियों के बारे में बताता है. इनमें ये चीज़ें शामिल हैं:

  • कैमरा आईडी
  • उपलब्ध होने पर, चाहे डेप्थ सेंसर इस्तेमाल किया जाएगा या नहीं
  • कैमरा किस दिशा में है:
    • सामने वाला हिस्सा (सेल्फ़ी)
    • रियर-फ़ेसिंग (वर्ल्ड)
  • FPS (फ़्रेम प्रति सेकंड) की रेंज
  • सीपीयू इमेज के डाइमेंशन
  • जीपीयू टेक्सचर डाइमेंशन
  • मौजूद होने पर, डिवाइस के स्टीरियो मल्टी-कैमरा का इस्तेमाल किया जाएगा या नहीं

नया ARCore सेशन बनाते समय, ARCore ArSession_setCameraConfig() का इस्तेमाल करके, कैमरा कॉन्फ़िगरेशन सेट करता है. यह कॉन्फ़िगरेशन ArSession_getSupportedCameraConfigsWithFilter() के दिए गए उपलब्ध कॉन्फ़िगरेशन की सूची से सबसे सही तरीके से मेल खाता है. आपका ऐप्लिकेशन, अपनी ज़रूरतों के हिसाब से फ़िल्टर करके, रनटाइम के दौरान किसी डिवाइस के लिए उपलब्ध कैमरा कॉन्फ़िगरेशन को कम करने के लिए, ArCameraConfigFilter का इस्तेमाल कर सकता है.

फ़िल्टर करने के सामान्य इस्तेमाल के उदाहरण:

  • कैमरा कैप्चर फ़्रेम रेट को 30 FPS (फ़्रेम प्रति सेकंड) तक सीमित किया जा रहा है. जिन डिवाइसों पर 60 FPS (फ़्रेम प्रति सेकंड) की सुविधा काम करती है, उन पर ARCore उन कैमरा कॉन्फ़िगरेशन को प्राथमिकता देगा जो फ़्रेम रेट पर काम करते हैं. 60 FPS (फ़्रेम प्रति सेकंड) पर काम करने वाले सभी कैमरा कॉन्फ़िगरेशन को फ़िल्टर करने के लिए, AR_CAMERA_CONFIG_TARGET_FPS_30 का इस्तेमाल करके ArCameraConfigFilter_setTargetFps() वाला फ़िल्टर लगाएं.

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

  • ARCore को डेप्थ सेंसर का इस्तेमाल करने से रोकें. जिन डिवाइस में डेप्थ सेंसर काम करता है, उन पर ARCore उन कैमरा कॉन्फ़िगरेशन को प्राथमिकता देता है जो डेप्थ सेंसर का इस्तेमाल करते हैं. डेप्थ सेंसर का इस्तेमाल करने वाले सभी कैमरा कॉन्फ़िगरेशन को फ़िल्टर करने के लिए, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE का इस्तेमाल करके ArCameraConfigFilter_setDepthSensorUsage() फ़िल्टर का इस्तेमाल करें.

    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() पर जाएं.