कैमरा कॉन्फ़िगरेशन से, ऐप्लिकेशन के कैमरे सेंसर की प्रॉपर्टी के बारे में पता चलता है. Unity में, इन कॉन्फ़िगरेशन को XRCameraConfiguration
के ज़रिए ऐक्सेस किया जा सकता है.
Android प्लैटफ़ॉर्म पर, ARCore XRCameraConfigurationExtensions
उपलब्ध कराता है, ताकि XRCameraConfiguration
में ARCore से जुड़ी अन्य प्रॉपर्टी को दिखाया जा सके. अपने ऐप्लिकेशन के लिए सही कैमरा कॉन्फ़िगरेशन सेट अप करने के लिए, इन प्रॉपर्टी का इस्तेमाल किया जा सकता है.
कैमरे के कॉन्फ़िगरेशन की ज़्यादा प्रॉपर्टी (Android)
Android प्लैटफ़ॉर्म पर, ARCore के साथ ये एक्सटेंडेड प्रॉपर्टी काम करती हैं.
- डेप्थ सेंसर का इस्तेमाल
- टारगेट कैमरे के फ़्रेम रेट की सीमा
- जीपीयू के ऐक्सेस किए जा सकने वाले बाहरी टेक्सचर के डाइमेंशन
- कैमरे की दिशा
काम करने वाले कैमरे कॉन्फ़िगरेशन ऐक्सेस करना
किसी डिवाइस के लिए, काम करने वाले कैमरा कॉन्फ़िगरेशन ऐक्सेस करने के लिए, ARCameraManager.GetConfigurations()
का इस्तेमाल करें. इससे एक ऐसा NativeArray
मिलता है जिसमें XRCameraConfiguration
के कई उदाहरण होते हैं. हर इंस्टेंस, कैमरे का एक अलग कॉन्फ़िगरेशन होता है. इसमें डेप्थ का इस्तेमाल, टारगेट कैप्चर फ़्रेम रेट, रिज़ॉल्यूशन, और टेक्स्चर डाइमेंशन जैसी प्रॉपर्टी की जानकारी होती है.
अपने ऐप्लिकेशन के सीन में कैमरा कॉन्फ़िगर करें
अपने ऐप्लिकेशन के सीन में कैमरा कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं.
ARCameraManager
के साथARCameraManager.GetConfigurations()
का इस्तेमाल करके, काम करने वालेXRCameraConfiguration
की सूची के बारे में क्वेरी करें.अगर आपको Android के लिए कोई प्रॉपर्टी बनानी है, तो ARCore से जुड़ी प्रॉपर्टी पाने के लिए,
XRCameraConfigurationExtensions
में दिए गए फ़ंक्शन के किसी भी कॉम्बिनेशन का इस्तेमाल करें.मौजूदा कॉन्फ़िगरेशन सेट करने के लिए,
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 एफ़पीएस पर काम करने वाले सभी कैमरा कॉन्फ़िगरेशन को फ़िल्टर करने के लिए, पक्का करें कि Target Camera Framerate को Target 30FPS पर सेट किया गया हो.
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;
}