Kamera konfigurieren

Mit ArCameraConfig werden die Eigenschaften des zugrunde liegenden Kamerasensors beschrieben, darunter:

  • Kamera-ID
  • Ob ein Tiefensensor verwendet wird (falls verfügbar)
  • Die Richtung der Kamera:
    • mit der Vorderseite (Selfie)
    • rückseitig (weltweit)
  • FPS-Bereich (Bilder pro Sekunde)
  • CPU-Bildabmessungen
  • GPU-Texturdimension
  • Gibt an, ob die Stereo-Mehrfachkamera des Geräts verwendet wird (falls vorhanden)

Beim Erstellen einer neuen ARCore-Sitzung verwendet ARCore ArSession_setCameraConfig(), um die Kamerakonfiguration festzulegen, die am besten mit der Liste der verfügbaren Konfigurationen übereinstimmt, die von ArSession_getSupportedCameraConfigsWithFilter() zurückgegeben werden. Ihre App kann ArCameraConfigFilter verwenden, um die verfügbaren Kamerakonfigurationen für ein bestimmtes Gerät zur Laufzeit einzugrenzen, indem sie nach den Anforderungen der App filtert.

Gängige Anwendungsfälle für Filter sind:

  • Framerate der Kameraaufnahme auf 30 fps begrenzen Auf Geräten, die 60 fps unterstützen, priorisiert ARCore Kamerakonfigurationen, die diese Framerate unterstützen. Wenn Sie alle Kamerakonfigurationen herausfiltern möchten, die 60 fps unterstützen, wenden Sie einen Filter mit ArCameraConfigFilter_setTargetFps() und AR_CAMERA_CONFIG_TARGET_FPS_30 an.

    // Return only camera configs that target 30 FPS camera capture frame
    // rate.
    ArCameraConfigFilter_setTargetFps(session, filter,
                                      AR_CAMERA_CONFIG_TARGET_FPS_30);

  • Verhindern, dass ARCore den Tiefensensor verwendet Auf Geräten mit einem unterstützten Tiefensensor priorisiert ARCore Kamerakonfigurationen, die den Tiefensensor verwenden. Wenden Sie den Filter ArCameraConfigFilter_setDepthSensorUsage() mit AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE an, um alle Kamerakonfigurationen herauszufiltern, die den Tiefensensor verwenden.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

  • Alternative GPU-Texturauflösung auswählen Auf unterstützten Geräten bietet ARCore möglicherweise zusätzliche GPU-Texturauflösungen. Die Auswahl einer GPU-Textur mit niedrigerer Auflösung kann dazu beitragen, die Anwendungsleistung zu verbessern, da die GPU-Last und die Anforderungen an die Speicherbandbreite reduziert werden. Allerdings ist nicht garantiert, dass die Leistung in allen Fällen verbessert wird.

Konfigurationsfilter der Kamera verwenden

Führen Sie die folgenden Schritte aus, damit Ihre App Kamerakonfigurationen filtern kann.

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

Konzentrations­modus

Sie können den Fokusmodus auch in der Sitzungskonfiguration festlegen. Der fixierte Fokus ist in der Regel für das Tracking besser geeignet und der ARCore-Standard auf den meisten Geräten. Der Autofokus ist für Aufnahmen, Fotografie, Videografie und dann erforderlich, wenn Objekte in der Nähe im Fokus sein müssen.

Weitere Informationen finden Sie unter ArConfig_setFocusMode().