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

कैमरा कॉन्फ़िगरेशन किसी ऐप्लिकेशन के बुनियादी कैमरा सेंसर की खासियतों के बारे में बताता है. Unity में, इन कॉन्फ़िगरेशन को XRCameraConfiguration के ज़रिए ऐक्सेस किया जा सकता है.

Android प्लैटफ़ॉर्म पर ARCore, XRCameraConfiguration में ARCore की खास प्रॉपर्टी दिखाने के लिए, XRCameraConfigurationExtensions उपलब्ध कराता है. आप इन प्रॉपर्टी का इस्तेमाल करके अपने ऐप्लिकेशन के लिए सही कैमरा कॉन्फ़िगरेशन सेट अप कर सकते हैं.

एक्सटेंडेड कैमरा कॉन्फ़िगरेशन प्रॉपर्टी (Android)

नीचे दी गई एक्सटेंडेड प्रॉपर्टी, Android प्लैटफ़ॉर्म पर ARCore के साथ काम करती हैं.

काम करने वाले कैमरे के कॉन्फ़िगरेशन ऐक्सेस करें

ARCameraManager.GetConfigurations() का इस्तेमाल करके, दिए गए डिवाइस के साथ काम करने वाले कैमरा कॉन्फ़िगरेशन ऐक्सेस करें. इससे ऐसा NativeArray दिखता है जिसमें XRCameraConfiguration के एक से ज़्यादा इंस्टेंस होते हैं. हर इंस्टेंस, एक अलग कैमरा कॉन्फ़िगरेशन होता है. इसमें गहराई का इस्तेमाल, टारगेट कैप्चर फ़्रेम रेट, रिज़ॉल्यूशन, और टेक्सचर डाइमेंशन जैसी प्रॉपर्टी के बारे में बताया जाता है.

अपने ऐप्लिकेशन के सीन में कैमरा कॉन्फ़िगर करना

अपने ऐप्लिकेशन के सीन में कैमरा कॉन्फ़िगर करने के लिए यह तरीका अपनाएं.

  1. ARCameraManager का इस्तेमाल ARCameraManager.GetConfigurations() करने के लिए इस्तेमाल किए जा सकने वाले XRCameraConfigurationकी सूची के बारे में क्वेरी करने के लिए करें.

  2. अगर आपको Android के लिए काम करना है, तो ARCore की खास प्रॉपर्टी पाने के लिए XRCameraConfigurationExtensions में दिए गए किसी भी फ़ंक्शन का इस्तेमाल करें.

  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 FPS (फ़्रेम प्रति सेकंड) तक सीमित करें

अगर आपके ऐप्लिकेशन को तेज़ कैमरा फ़्रेम रेट की ज़रूरत नहीं है, तो इसे 30 FPS (फ़्रेम प्रति सेकंड) तक सीमित किया जा सकता है. 60 FPS (फ़्रेम प्रति सेकंड) के कैमरे के फ़्रेम रेट के साथ काम करने वाले डिवाइसों पर, ARCore उन कैमरा कॉन्फ़िगरेशन को प्राथमिकता देगा जो डिफ़ॉल्ट रूप से, इस फ़्रेम रेट के साथ काम करते हों. 60 FPS (फ़्रेम प्रति सेकंड) पर काम करने वाले सभी कैमरा कॉन्फ़िगरेशन को फ़िल्टर करने के लिए, पक्का करें कि Target Camera Framerate को Target 30FPS पर सेट किया गया हो.

ARCore को डेप्थ सेंसर का इस्तेमाल करने से रोकें

अगर आपके ऐप्लिकेशन में डेप्थ की ज़रूरत नहीं है, तो आप ARCore को डेप्थ सेंसर का इस्तेमाल करने से रोक सकते हैं. जिन डिवाइस में डेप्थ सेंसर काम करता है उन पर ARCore ARCore, डेप्थ सेंसर का इस्तेमाल करने वाले कैमरा कॉन्फ़िगरेशन को प्राथमिकता देता है. डेप्थ सेंसर का इस्तेमाल करने वाले सभी कैमरा कॉन्फ़िगरेशन को फ़िल्टर करने के लिए, पक्का करें कि 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;
}