تصف إعدادات الكاميرا خصائص أداة الاستشعار في الكاميرا
الأساسية للتطبيق. في Unity، يمكن الوصول إلى هذه الإعدادات من خلال
XRCameraConfiguration
.
على نظام Android الأساسي، توفر ARCore
XRCameraConfigurationExtensions
لعرض خصائص إضافية خاصة بـ ARCore ضمن
XRCameraConfiguration
. يمكنك استخدام هذه الخصائص لإعداد ضبط الكاميرا المناسب لتطبيقك.
خصائص ضبط الكاميرا الموسّعة (نظام التشغيل Android)
الخصائص الموسّعة التالية متوافقة مع ARCore على نظام Android الأساسي.
- استخدام أداة استشعار العمق
- نطاق عدد اللقطات المستهدَف لالتقاط الصور في الكاميرا
- أبعاد التركيبة الخارجية التي يمكن الوصول إليها من خلال وحدة معالجة الرسومات
- الاتجاه المواجه للكاميرا
الوصول إلى إعدادات الكاميرا المتوافقة
استخدِم ARCameraManager.GetConfigurations()
للوصول إلى إعدادات الكاميرا المتوافقة لجهاز معيّن. يؤدي ذلك إلى عرض NativeArray
يحتوي على عدة مثيلات لـ XRCameraConfiguration
. ويُعد كل مثيل إعدادًا فرديًا للكاميرا يحدد خصائص مثل استخدام العمق وعدد اللقطات المستهدف للالتقاط ودرجة الدقة وأبعاد المظهر.
ضبط إعدادات الكاميرا في المشهد الخاص بالتطبيق
اتبع هذه الخطوات لإعداد الكاميرا في المشهد في التطبيق.
يمكنك استخدام
ARCameraManager
معARCameraManager.GetConfigurations()
للاستعلام عن قائمةXRCameraConfiguration
المتوافقة.إذا كنت تريد إنشاء نظام متوافق مع Android، يمكنك استخدام أي مجموعة من الدوال في
XRCameraConfigurationExtensions
للحصول على خصائص ARCore الخاصة.استخدِم
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 من استخدام أداة استشعار العمق
إذا لم يكن تطبيقك يتطلب Depth، يمكنك منع 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;
}