Configurer la caméra

CameraConfig décrit les propriétés de la capteur photo sous-jacent, y compris:

  • ID de la caméra
  • Le cas échéant, détermine si un capteur de profondeur sera utilisé ou non
  • Orientation de la caméra: <ph type="x-smartling-placeholder">
      </ph>
    • de face (selfie)
    • arrière (monde)
  • Plage d'images par seconde (FPS)
  • Dimensions de l'image du processeur
  • Dimension de texture GPU
  • Le cas échéant, détermine si l'appareil photo multicaméra de l'appareil sera utilisé ou non

Lors de la création d'une session ARCore, ARCore utilise setCameraConfig pour définir la configuration de la caméra qui correspond le mieux à la liste des configurations disponibles renvoyée par getSupportedCameraConfigs(CameraConfigFilter) Votre application peut utiliser CameraConfigFilter pour affiner les configurations d'appareil photo disponibles pour un appareil donné au moment de l'exécution en selon les besoins de votre application.

Voici quelques cas d'utilisation courants du filtrage:

  • La fréquence d'images de la capture de la caméra est limitée à 30 FPS. Sur les appareils compatibles 60 FPS, ARCore donne la priorité aux configurations d'appareil photo compatibles de la fréquence d'images. Pour filtrer toutes les configurations de caméra compatibles avec 60 FPS, appliquer un filtre avec setTargetFps avec 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)

  • Empêchez ARCore d'utiliser le capteur de profondeur. Sur les appareils dotés d'un capteur de profondeur pris en charge, ARCore donne la priorité aux configurations d'appareil photo qui utilisent cette valeur capteur vidéo. Pour filtrer toutes les configurations d'appareil photo qui utilisent le capteur de profondeur, appliquez la méthode setDepthSensorUsage filtrer à l'aide de 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)

  • Sélectionner une autre résolution de texture GPU : Activé appareils compatibles, ARCore peut fournir résolutions de texture GPU supplémentaires. Sélectionner une texture GPU de résolution inférieure peut contribuer à améliorer les performances de l'application en réduisant la charge GPU et la mémoire bande passante requise, mais l'amélioration des performances n'est pas garantie dans tous les cas.

Utiliser des filtres de configuration de l'appareil photo

Suivez ces étapes pour permettre à votre application de filtrer les configurations de caméra.

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]

Mode Sans distractions

Vous pouvez également définir le mode formulaire dans la configuration de la session. La mise au point fixe est généralement plus adaptée au suivi (il s'agit de la valeur par défaut d'ARCore sur la plupart des appareils). La mise au point automatique est requise pour l'enregistrement, la photographie ou la vidéo, et lorsque la mise au point sur des objets à proximité doit être nécessaire.

Voir Config.FocusMode pour en savoir plus.