Kamerayı yapılandırma

ArCameraConfig, 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 ArSession_setCameraConfig(). tarafından döndürülen mevcut yapılandırmaların listesiyle en iyi eşleşen ArSession_getSupportedCameraConfigsWithFilter(). Uygulamanız ArCameraConfigFilter 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 ArCameraConfigFilter_setTargetFps() ile filtre uygulayın AR_CAMERA_CONFIG_TARGET_FPS_30 kullanılıyor.

    // Return only camera configs that target 30 FPS camera capture frame
    // rate.
    ArCameraConfigFilter_setTargetFps(session, filter,
                                      AR_CAMERA_CONFIG_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 ArCameraConfigFilter_setDepthSensorUsage() AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE kullanarak filtreleyin.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_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.

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

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 nesneler gerektiğinde otomatik odaklama gereklidir. dikkat edin.

Görüntüleyin ArConfig_setFocusMode() inceleyebilirsiniz.