Kamera konfigurieren

ArCameraConfig beschreibt die Attribute der Kamerasensor, einschließlich:

  • Kamera-ID
  • Gibt an, ob ein Tiefensensor verwendet wird (falls verfügbar)
  • Richtung, in die die Kamera zeigt: <ph type="x-smartling-placeholder">
      </ph>
    • nach vorne (Selfie)
    • nach hinten gerichtet (weltweit)
  • fps (Bilder pro Sekunde)
  • CPU-Bildabmessungen
  • GPU-Texturdimension
  • Gibt an, ob die Stereo-Multikamera des Geräts verwendet wird (falls vorhanden)

Beim Erstellen einer neuen ARCore-Sitzung verwendet ARCore ArSession_setCameraConfig(), um die Kamerakonfiguration festzulegen der am besten zur Liste der verfügbaren Konfigurationen passt, die von ArSession_getSupportedCameraConfigsWithFilter() Deine App kann ArCameraConfigFilter verwenden die verfügbaren Kamerakonfigurationen für ein bestimmtes Gerät zur Laufzeit eingrenzen, an die Anforderungen Ihrer App anpassen.

Häufige Anwendungsfälle für Filter:

  • Die Framerate für die Kameraaufnahme wird auf 30 fps begrenzt. Auf Geräten, die den 60 fps verwendet ARCore Kamerakonfigurationen, die diese Frame-Rate. Zum Herausfiltern aller Kamerakonfigurationen, die 60 fps unterstützen, Filter mit ArCameraConfigFilter_setTargetFps() anwenden mit 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);

  • Verhindern, dass ARCore den Tiefensensor verwendet Auf Geräten mit einer unterstützten Tiefensensors unterstützen, priorisiert ARCore Kamerakonfigurationen, bei denen die Tiefenmessung Sensor. Um alle Kamerakonfigurationen herauszufiltern, die den Tiefensensor verwenden, wenden Sie die ArCameraConfigFilter_setDepthSensorUsage() mit AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE filtern.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

  • Alternative GPU-Texturauflösung auswählen. An unterstützten Geräten bietet, bietet ARCore möglicherweise zusätzliche GPU-Texturauflösungen. GPU-Textur mit geringerer Auflösung auswählen kann zur Verbesserung der App-Leistung beitragen, indem die GPU-Auslastung und der Arbeitsspeicher reduziert werden Bandbreitenanforderungen. Allerdings ist nicht garantiert, dass eine verbesserte Leistung in alle Fälle.

Kamerakonfigurationsfilter verwenden

Führen Sie die folgenden Schritte aus, um Ihre App zum Filtern von Kamerakonfigurationen zu aktivieren.

// 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 Fixfokus ist im Allgemeinen besser für das Tracking geeignet und wird auf den meisten Geräten als ARCore-Standard verwendet. Für Aufnahmen, Fotos und Videoaufnahmen sowie für Objekte in der Nähe ist der Autofokus erforderlich. fokussiert sein sollten.

Weitere Informationen finden Sie unter ArConfig_setFocusMode() .