Configurer la caméra

ArCameraConfig 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 ArSession_setCameraConfig() pour définir la configuration de la caméra qui correspond le mieux à la liste des configurations disponibles renvoyée par ArSession_getSupportedCameraConfigsWithFilter() Votre application peut utiliser ArCameraConfigFilter 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 ArCameraConfigFilter_setTargetFps() avec 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);

  • 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 ArCameraConfigFilter_setDepthSensorUsage() filtrer à l'aide de AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_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.

// 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);

Mode Sans distractions

Vous pouvez également définir le mode de concentration 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, la vidéo et lorsque des objets à proximité ont besoin d'être au premier plan.

Voir ArConfig_setFocusMode() pour en savoir plus.