הגדרת המצלמה

ArCameraConfig מתאר את המאפיינים של חיישן המצלמה הבסיסי, כולל:

  • מזהה המצלמה
  • אם זמין, שימוש בחיישן עומק
  • כיוון המצלמה פונה:
    • צד קדמי (תמונת סלפי)
    • מצלמה אחורית (עולם)
  • טווח FPS (פריימים לשנייה)
  • מידות התמונה של המעבד (CPU)
  • מידת הטקסטורה של ה-GPU
  • אם יש במכשיר, שימוש בכמה מצלמות סטריאופונות

כשיוצרים סשן ARCore חדש, ARCore משתמש ArSession_setCameraConfig() כדי לקבוע את הגדרות המצלמה המתאים ביותר לרשימת ההגדרות האישיות הזמינות שהוחזרו על ידי ArSession_getSupportedCameraConfigsWithFilter() האפליקציה שלך יכולה להשתמש ב-ArCameraConfigFilter כדי לצמצם את ההגדרות הזמינות של המצלמה במכשיר נתון בזמן הריצה סינון בהתאם לצורכי האפליקציה שלכם.

תרחישים לדוגמה נפוצים לסינון:

  • הגבלת קצב הפריימים של הצילום במצלמה ל-30FPS. במכשירים שתומכים ב- 60fps, ARCore ייתן עדיפות להגדרות המצלמה שתומכות ב- קצב הפריימים כדי לסנן את כל הגדרות המצלמה שתומכות ב-60fps: להחיל מסנן עם ArCameraConfigFilter_setTargetFps() באמצעות AR_CAMERA_CONFIG_TARGET_FPS_30.

    // Return only camera configs that target 30 FPS camera capture frame
    // rate.
    ArCameraConfigFilter_setTargetFps(session, filter,
                                      AR_CAMERA_CONFIG_TARGET_FPS_30);

  • מניעת השימוש של חיישן העומק ב-ARCore במכשירים עם שנתמך בחיישן עומק, ב-ARCore ניתנת עדיפות להגדרות המצלמה שמשתמשות בעומק באמצעות חיישן. כדי לסנן את כל הגדרות המצלמה שמשתמשות בחיישן העומק, ArCameraConfigFilter_setDepthSensorUsage() לסנן באמצעות AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

  • בחירת רזולוציה חלופית של טקסטורה ב-GPU במצב מופעל מכשירים נתמכים, ARCore עשוי לספק רזולוציות נוספות של טקסטורת ה-GPU. בחירת טקסטורה של GPU ברזולוציה נמוכה יותר עשוי לעזור בשיפור ביצועי האפליקציה על ידי הפחתת העומס על ה-GPU והקטנת הזיכרון אבל לא בטוח שהרוחב ישפר את הביצועים כל המקרים.

שימוש במסננים להגדרת המצלמה

כדי לאפשר לאפליקציה לסנן הגדרות של המצלמה, מבצעים את הפעולות הבאות.

// Create an ARCore session.
ArSession* session;
ArSession_create(env, context, &session);

// Create a camera config list and filter for the session.
ArCameraConfig* selected_config;
ArCameraConfigList* configs;
ArCameraConfigFilter* filter;
ArCameraConfig_create(session, &selected_config);
ArCameraConfigList_create(session, &configs);
ArCameraConfigFilter_create(session, &filter);

// Return only camera configs that target 30 fps camera capture frame rate.
ArCameraConfigFilter_setTargetFps(session, filter,
                                  AR_CAMERA_CONFIG_TARGET_FPS_30);

// Return only camera configs that will not use the depth sensor.
ArCameraConfigFilter_setDepthSensorUsage(
    session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

// Get list of configs that match filter settings.
// In this case, this list is guaranteed to contain at least one element,
// because both TargetFps.TARGET_FPS_30 and DepthSensorUsage.DO_NOT_USE
// are supported on all ARCore supported devices.
ArSession_getSupportedCameraConfigsWithFilter(session, filter, configs);

// Use element 0 from the list of returned camera configs. This is because
// it contains the camera config that best matches the specified filter
// settings.
ArCameraConfigList_getItem(session, configs, 0, selected_config);

// Set the camera config to use selected_config.
ArSession_setCameraConfig(session, selected_config);

// Free memory.
ArCameraConfigFilter_destroy(filter);
ArCameraConfigList_destroy(configs);

מצב ריכוז

אפשר גם להגדיר את מצב ההתמקדות בהגדרות הסשן. בדרך כלל, מיקוד קבוע עדיף למעקב (והוא ברירת המחדל של ARCore ברוב המכשירים). נדרש מיקוד אוטומטי לצילום, לצילום וידאו ולצילום כשצריך לעצמים בקרבת מקום להיות בפוקוס.

צפייה ArConfig_setFocusMode() אפשר לקבל פרטים נוספים.