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