Đang định cấu hình máy ảnh

ArCameraConfig mô tả các thuộc tính của cảm biến camera bên dưới, bao gồm:

  • Mã camera
  • Nếu có, hãy cho biết liệu có dùng cảm biến độ sâu hay không
  • Hướng của máy ảnh:
    • mặt trước (ảnh tự chụp)
    • phía sau (thế giới)
  • Phạm vi FPS (khung hình/giây)
  • Kích thước hình ảnh CPU
  • Kích thước hoạ tiết của GPU
  • Nếu có, tính năng nhiều máy ảnh âm thanh nổi của thiết bị có được sử dụng hay không

Khi tạo một phiên ARCore mới, ARCore sử dụng ArSession_setCameraConfig() để thiết lập cấu hình camera phù hợp nhất với danh sách cấu hình có sẵn được trả về bởi ArSession_getSupportedCameraConfigsWithFilter(). Ứng dụng của bạn có thể dùng ArCameraConfigFilter để thu hẹp các cấu hình máy ảnh có sẵn cho một thiết bị cụ thể trong thời gian chạy bằng cách lọc theo nhu cầu của ứng dụng.

Sau đây là các trường hợp sử dụng phổ biến cho tính năng lọc:

  • Giới hạn tốc độ khung hình chụp ảnh của máy ảnh ở 30 khung hình/giây. Trên các thiết bị hỗ trợ 60 khung hình/giây, ARCore sẽ ưu tiên các cấu hình máy ảnh hỗ trợ tốc độ khung hình. Cách lọc ra tất cả cấu hình máy ảnh hỗ trợ tốc độ 60 khung hình/giây, áp dụng bộ lọc bằng ArCameraConfigFilter_setTargetFps() khi sử dụng 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);

  • Ngăn ARCore sử dụng cảm biến độ sâu. Trên các thiết bị có cảm biến độ sâu được hỗ trợ, ARCore ưu tiên các cấu hình máy ảnh sử dụng độ sâu cảm biến. Để lọc tất cả cấu hình máy ảnh sử dụng cảm biến độ sâu, hãy áp dụng ArCameraConfigFilter_setDepthSensorUsage() bộ lọc bằng AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

  • Chọn độ phân giải kết cấu GPU thay thế. Bật thiết bị được hỗ trợ, thì ARCore có thể cung cấp độ phân giải kết cấu GPU bổ sung. Chọn hoạ tiết GPU có độ phân giải thấp hơn có thể giúp cải thiện hiệu suất của ứng dụng bằng cách giảm tải GPU và giảm bộ nhớ yêu cầu về băng thông, mặc dù điều này không được đảm bảo sẽ cải thiện hiệu suất trong mọi trường hợp.

Sử dụng bộ lọc cấu hình máy ảnh

Làm theo các bước sau để cho phép ứng dụng lọc cấu hình của camera.

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

Chế độ tập trung

Bạn cũng có thể đặt chế độ tập trung trong phần cấu hình của phiên hoạt động. Tiêu điểm cố định thường tốt hơn cho việc theo dõi (và là chế độ mặc định của ARCore trên hầu hết các thiết bị). Cần có tính năng tự động lấy nét để quay video, chụp ảnh, quay video và khi có đối tượng ở gần cần cần được chú trọng.

Xem ArConfig_setFocusMode() để biết thông tin chi tiết.