設定相機

ArCameraConfig 說明瞭 底層相機感應器,包括:

  • 相機 ID
  • 在適用情況下,是否會使用深度感應器
  • 相機鏡頭的方向:
    • 前置 (自拍)
    • 後置 (世界)
  • FPS (每秒影格數) 範圍
  • CPU 圖片尺寸
  • GPU 紋理尺寸
  • 如果有出現,是否使用裝置的立體聲多鏡頭

建立新的 ARCore 工作階段時,ARCore 會使用 ArSession_setCameraConfig():進行相機設定 與 ArSession_getSupportedCameraConfigsWithFilter()。 您的應用程式可以使用 ArCameraConfigFilter , 來自訂符合應用程式需求的

常見的篩選用途包括:

  • 將相機拍攝影格速率限制為每秒 30 個影格。使用支援的裝置 60 fps,ARCore 會優先採用支援這類技術的相機設定 畫面更新率如要篩除支援 60 fps 的所有相機設定, 使用 ArCameraConfigFilter_setTargetFps() 套用篩選器 使用 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);

  • 禁止 ARCore 使用深度感應器。在符合下列條件的裝置上, 支援深度感應器,ARCore 會優先使用採用深度感應器的相機設定 感應器。如要篩除使用深度感應器的所有相機設定,請套用 ArCameraConfigFilter_setDepthSensorUsage()敬上 使用「AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE」篩選。

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

  • 選取替代的 GPU 紋理解析度。啟用 支援的裝置,ARCore 可能會提供 額外的 GPU 紋理解析度選取解析度較低的 GPU 紋理 降低 GPU 負載及降低記憶體容量,有助提升應用程式效能 頻寬需求,但不保證一定能改善

使用攝影機設定篩選器

請按照下列步驟讓應用程式篩選相機設定。

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

專注模式

您也可以在工作階段設定中設定聚焦模式。固定焦點通常較適合用於追蹤 (在大多數裝置上也是 ARCore 預設選項)。必須啟用自動對焦功能,才能進行拍攝、攝影、拍攝影片,以及與附近物體相鄰 讓圖片成為焦點

詳情請見 ArConfig_setFocusMode()敬上 。