Mengonfigurasi kamera

ArCameraConfig mendeskripsikan properti sensor kamera yang mendasarinya, termasuk:

  • ID kamera
  • Jika tersedia, apakah sensor kedalaman akan digunakan atau tidak
  • Arah menghadap kamera:
    • menghadap ke depan (selfie)
    • menghadap ke belakang (dunia)
  • Rentang FPS (frame per detik)
  • Dimensi image CPU
  • Dimensi tekstur GPU
  • Jika ada, apakah multi-kamera stereo perangkat akan digunakan atau tidak

Saat membuat sesi ARCore baru, ARCore menggunakan ArSession_setCameraConfig() untuk menetapkan konfigurasi kamera yang paling cocok dengan daftar konfigurasi yang tersedia yang ditampilkan oleh ArSession_getSupportedCameraConfigsWithFilter(). Aplikasi Anda dapat menggunakan ArCameraConfigFilter untuk mempersempit konfigurasi kamera yang tersedia untuk perangkat tertentu pada saat {i>runtime<i} dengan pemfilteran berdasarkan kebutuhan aplikasi Anda.

Kasus penggunaan umum pemfilteran mencakup:

  • Membatasi kecepatan frame pengambilan gambar kamera hingga 30 fps. Pada perangkat yang mendukung 60 fps, ARCore akan memprioritaskan konfigurasi kamera yang mendukung kecepatan frame. Untuk memfilter semua konfigurasi kamera yang mendukung 60 fps, menerapkan filter dengan ArCameraConfigFilter_setTargetFps() menggunakan 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);

  • Cegah ARCore menggunakan sensor kedalaman. Pada perangkat yang memiliki sensor kedalaman yang didukung, ARCore memprioritaskan konfigurasi kamera yang menggunakan kedalaman sensor. Untuk memfilter semua konfigurasi kamera yang menggunakan sensor kedalaman, terapkan metode ArCameraConfigFilter_setDepthSensorUsage() filter menggunakan AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

  • Memilih resolusi tekstur GPU alternatif. Aktif perangkat yang didukung, ARCore dapat menyediakan resolusi tekstur GPU tambahan. Memilih tekstur GPU resolusi lebih rendah dapat membantu meningkatkan performa aplikasi dengan mengurangi beban GPU dan menurunkan memori persyaratan bandwidth, meskipun tidak dijamin akan meningkatkan untuk semua kasus.

Menggunakan filter konfigurasi kamera

Ikuti langkah-langkah ini untuk mengaktifkan aplikasi Anda guna memfilter konfigurasi kamera.

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

Mode fokus

Anda juga dapat menyetel mode fokus dalam konfigurasi sesi. Fokus tetap umumnya lebih baik untuk pelacakan (dan merupakan setelan default ARCore di sebagian besar perangkat). Fokus otomatis diperlukan untuk perekaman, fotografi, videografi, dan saat objek di sekitar memerlukan menjadi fokus.

Lihat ArConfig_setFocusMode() untuk mengetahui detailnya.