הגדרת המצלמה

ב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().