הגדרת המצלמה

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

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

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

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

  • הגבלת קצב הפריימים של הצילום במצלמה ל-30fps. במכשירים שתומכים ב-60fps, ב-ARCore ניתנת עדיפות להגדרות המצלמה שתומכות בקצב הפריימים הזה. כדי לסנן את כל הגדרות המצלמה שתומכות ב- 60fps, צריך להחיל מסנן באמצעות setTargetFps באמצעות TargetFps.TARGET_FPS_30.

    Java

    // Return only camera configs that target 30 FPS camera capture frame rate.
    filter.setTargetFps(EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30));

    Kotlin

    // Return only camera configs that target 30 FPS camera capture frame rate.
    filter.targetFps = EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30)

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

    Java

    // Return only camera configs that will not use the depth sensor.
    filter.setDepthSensorUsage(EnumSet.of(CameraConfig.DepthSensorUsage.DO_NOT_USE));

    Kotlin

    // Return only camera configs that will not use the depth sensor.
    filter.depthSensorUsage = EnumSet.of(CameraConfig.DepthSensorUsage.DO_NOT_USE)

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

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

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

Java

// Create a camera config filter for the session.
CameraConfigFilter filter = new CameraConfigFilter(session);

// Return only camera configs that target 30 fps camera capture frame rate.
filter.setTargetFps(EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30));

// Return only camera configs that will not use the depth sensor.
filter.setDepthSensorUsage(EnumSet.of(CameraConfig.DepthSensorUsage.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.
List<CameraConfig> cameraConfigList = session.getSupportedCameraConfigs(filter);

// 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.
session.setCameraConfig(cameraConfigList.get(0));

Kotlin

// Create a camera config filter for the session.
val filter = CameraConfigFilter(session)

// Return only camera configs that target 30 fps camera capture frame rate.
filter.targetFps = EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30)

// Return only camera configs that will not use the depth sensor.
filter.depthSensorUsage = EnumSet.of(CameraConfig.DepthSensorUsage.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.
val cameraConfigList = session.getSupportedCameraConfigs(filter)

// 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.
session.cameraConfig = cameraConfigList[0]

מצב ריכוז

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

לפרטים נוספים, ראו Config.FocusMode.