הגדרת המצלמה

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 לקבלת פרטים.