Mengonfigurasi kamera

CameraConfig menjelaskan properti sensor kamera dasar, termasuk:

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

Saat membuat sesi ARCore baru, ARCore menggunakan setCameraConfig untuk menetapkan konfigurasi kamera yang paling cocok dengan daftar konfigurasi tersedia yang ditampilkan oleh getSupportedCameraConfigs(CameraConfigFilter). Aplikasi Anda dapat menggunakan CameraConfigFilter untuk mempersempit konfigurasi kamera yang tersedia untuk perangkat tertentu pada runtime dengan memfilter berdasarkan kebutuhan aplikasi Anda.

Kasus penggunaan umum untuk pemfilteran mencakup:

  • Membatasi kecepatan frame pengambilan gambar ke 30 fps. Pada perangkat yang mendukung 60 fps, ARCore akan memprioritaskan konfigurasi kamera yang mendukung kecepatan frame tersebut. Untuk memfilter semua konfigurasi kamera yang mendukung 60 fps, terapkan filter dengan setTargetFps menggunakan TargetFps.TARGET_FPS_30.

    Java

    // Return only camera configs that target 30 FPS camera capture frame rate.
    filter.setTargetFps(EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30));

    Kotlin

    // Return only camera configs that target 30 FPS camera capture frame rate.
    filter.targetFps = EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30)

  • Mencegah ARCore menggunakan sensor kedalaman. Pada perangkat yang memiliki sensor kedalaman yang didukung, ARCore memprioritaskan konfigurasi kamera yang menggunakan sensor kedalaman. Untuk memfilter semua konfigurasi kamera yang menggunakan sensor kedalaman, terapkan filter setDepthSensorUsage menggunakan DepthSensorUsage.DO_NOT_USE.

    Java

    // Return only camera configs that will not use the depth sensor.
    filter.setDepthSensorUsage(EnumSet.of(CameraConfig.DepthSensorUsage.DO_NOT_USE));

    Kotlin

    // Return only camera configs that will not use the depth sensor.
    filter.depthSensorUsage = EnumSet.of(CameraConfig.DepthSensorUsage.DO_NOT_USE)

  • Memilih resolusi tekstur GPU alternatif. Pada 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 persyaratan bandwidth memori, meskipun tidak dijamin akan meningkatkan performa dalam semua kasus.

Menggunakan filter konfigurasi kamera

Ikuti langkah-langkah berikut untuk mengaktifkan aplikasi Anda untuk memfilter konfigurasi kamera.

Java

// Create a camera config filter for the session.
CameraConfigFilter filter = new CameraConfigFilter(session);

// Return only camera configs that target 30 fps camera capture frame rate.
filter.setTargetFps(EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30));

// Return only camera configs that will not use the depth sensor.
filter.setDepthSensorUsage(EnumSet.of(CameraConfig.DepthSensorUsage.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.
List<CameraConfig> cameraConfigList = session.getSupportedCameraConfigs(filter);

// 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.
session.setCameraConfig(cameraConfigList.get(0));

Kotlin

// Create a camera config filter for the session.
val filter = CameraConfigFilter(session)

// Return only camera configs that target 30 fps camera capture frame rate.
filter.targetFps = EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30)

// Return only camera configs that will not use the depth sensor.
filter.depthSensorUsage = EnumSet.of(CameraConfig.DepthSensorUsage.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.
val cameraConfigList = session.getSupportedCameraConfigs(filter)

// 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.
session.cameraConfig = cameraConfigList[0]

Mode Fokus

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

Lihat Config.FocusMode untuk mengetahui detailnya.