कैमरे को कॉन्फ़िगर करना

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

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

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

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

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

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

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

अपने ऐप्लिकेशन में कैमरे को कॉन्फ़िगर करने के लिए इन चरणों का पालन करें.

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

  2. अगर आपको Android के लिए प्रॉपर्टी बनानी है, तो एआरकोर की खास प्रॉपर्टी पाने के लिए, 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;
}