Kamerayı yapılandırma

CameraConfig, aşağıdaki kamera sensörü dahil:

  • Kamera kimliği
  • Derinlik sensörü kullanılıp kullanılmayacağı
  • Kameranın baktığı yön:
    • öne bakan (selfie)
    • arkaya bakan (dünya)
  • FPS (saniyedeki kare sayısı) aralığı
  • CPU resim boyutları
  • GPU doku boyutu
  • Bu seçenek varsa cihazın stereo çok kameralı kullanılıp kullanılmayacağı

ARCore, yeni bir ARCore oturumu oluştururken Kamera yapılandırmasını ayarlamak için setCameraConfig. tarafından döndürülen mevcut yapılandırmaların listesiyle en iyi eşleşen getSupportedCameraConfigs(CameraConfigFilter). Uygulamanız CameraConfigFilter kullanabilir kamera yapılandırmalarını en aza indirmek için filtre uygulayabilirsiniz.

Filtreleme için yaygın kullanım örneklerinden bazıları şunlardır:

  • Kamera çekimi kare hızı 30 fps ile sınırlanıyor. Şu cihazları destekleyen cihazlarda: ARCore, 60 fps'yi destekleyen kamera yapılandırmalarına öncelik verir kare hızı. 60 fps'yi destekleyen tüm kamera yapılandırmalarını filtrelemek için setTargetFps ile filtre uygulayın TargetFps.TARGET_FPS_30 kullanılıyor.

    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)

  • ARCore'un derinlik sensörünü kullanmasını önleyin. Şu cihazlarda: Desteklenen derinlik sensörü olarak ARCore, derinliği kullanan kamera yapılandırmaları görebilirsiniz. Derinlik sensörünü kullanan tüm kamera yapılandırmalarını filtrelemek için setDepthSensorUsage DepthSensorUsage.DO_NOT_USE kullanarak filtreleyin.

    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)

  • Alternatif bir GPU doku çözünürlüğü seçme. Şu tarihte: desteklenen cihazlarda, ARCore, ek GPU doku çözünürlükleri sunar. Daha düşük çözünürlüklü bir GPU dokusu seçme GPU yükünü azaltıp belleği düşürerek uygulama performansını iyileştirmeye yardımcı olabilir performansı artıracağı garanti edilmese de bant genişliğinin tüm durumlarda geçerlidir.

Kamera yapılandırma filtrelerini kullanma

Uygulamanızın kamera yapılandırmalarını filtrelemesini sağlamak için aşağıdaki adımları uygulayın.

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]

Konsantrasyon modu

Odak modunu oturum yapılandırmasında da ayarlayabilirsiniz. Sabit odak, izleme için genellikle daha iyidir (ve çoğu cihazda ARCore varsayılanıdır). Kayıt, fotoğrafçılık, video çekimi ve yakındaki nesnelerin odakta olması gerektiğinde otomatik odaklama gereklidir.

Bkz. Config.FocusMode inceleyebilirsiniz.