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

ArCameraConfig mô tả các thuộc tính của cảm biến máy ảnh cơ bản, bao gồm:

  • Mã máy ảnh
  • Nếu có, vui lòng cho biết có sử dụng cảm biến độ sâu hay không
  • Hướng của máy ảnh:
    • mặt trước (tự chụp ảnh chân dung)
    • mặt 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 GPU
  • Nếu có, chế độ nhiều máy ảnh âm thanh nổi của thiết bị có được sử dụng hay không (nếu có)

Khi tạo một phiên ARCore mới, ARCore sử dụng ArSession_setCameraConfig() để đặt cấu hình máy ảnh phù hợp nhất với danh sách các cấu hình có sẵn do ArSession_getSupportedCameraConfigsWithFilter() trả về. Ứ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ị nhất định trong thời gian chạy bằng cách lọc dựa trên nhu cầu của ứng dụng.

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

  • Giới hạn tốc độ khung hình chụp của máy ảnh ở mức 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 đó. Để lọc ra tất cả cấu hình máy ảnh hỗ trợ tốc độ 60 khung hình/giây, hãy áp dụng một bộ lọc có ArCameraConfigFilter_setTargetFps() thông qua 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ó hỗ trợ cảm biến độ sâu, ARCore sẽ ưu tiên các cấu hình máy ảnh sử dụng cảm biến độ sâu. Để lọc ra tất cả cấu hình máy ảnh sử dụng cảm biến độ sâu, hãy áp dụng bộ lọc ArCameraConfigFilter_setDepthSensorUsage() 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 hoạ tiết GPU thay thế. Trên các thiết bị được hỗ trợ, ARCore có thể cung cấp thêm độ phân giải hoạ tiết GPU. Việc 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 yêu cầu về băng thông bộ nhớ, mặc dù không đảm bảo cải thiện được hiệu suất trong mọi trường hợp.

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

Hãy làm theo các bước sau để cho phép ứng dụng của bạn lọc cấu hình máy ảnh.

// 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ế độ tiêu điểm trong cấu hình phiên. Tiêu điểm cố định thường tốt hơn để theo dõi (và là chế độ mặc định ARCore trên hầu hết 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ần lấy nét các đối tượng ở gần.

Hãy xem ArConfig_setFocusMode() để biết thông tin chi tiết.