Kamerayı yapılandırma

ArCameraConfig, alttaki kamera sensörünün özelliklerini açıklar. Örneğin:

  • Kamera kimliği
  • Varsa derinlik sensörünün kullanılıp kullanılmayacağı
  • Kameranın baktığı yön:
    • öne bakan (selfie)
    • arka yüz (dünya)
  • FPS (saniyedeki kare sayısı) aralığı
  • CPU görüntü boyutları
  • GPU doku boyutu
  • Varsa cihazdaki stereo çoklu kamerasının kullanılıp kullanılmayacağı

Yeni bir ARCore oturumu oluştururken ARCore, ArSession_getSupportedCameraConfigsWithFilter() tarafından döndürülen mevcut yapılandırmalar listesiyle en iyi eşleşen kamera yapılandırmasını ayarlamak için ArSession_setCameraConfig() aracını kullanır. Uygulamanız, ihtiyaçlarınıza göre filtreleme yaparak çalışma zamanında belirli bir cihazın mevcut kamera yapılandırmalarını daraltmak için ArCameraConfigFilter aracını kullanabilir.

Filtreleme için yaygın kullanım alanlarından bazıları şunlardır:

  • Kamerayla çekim kare hızını 30 fps ile sınırlandırın. 60 fps'yi destekleyen cihazlarda, ARCore bu kare hızını destekleyen kamera yapılandırmasına öncelik verir. 60 fps'yi destekleyen tüm kamera yapılandırmalarını filtrelemek için AR_CAMERA_CONFIG_TARGET_FPS_30 kullanarak ArCameraConfigFilter_setTargetFps() ile bir filtre uygulayın.

    // 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ı engelleyin. ARCore, desteklenen derinlik sensörüne sahip cihazlarda derinlik sensörünü kullanan kamera yapılandırmasına öncelik verir. Derinlik sensörünü kullanan tüm kamera yapılandırmalarını filtrelemek için AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE ile ArCameraConfigFilter_setDepthSensorUsage() filtresini uygulayın.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

  • Alternatif bir GPU doku çözünürlüğü seçme. Desteklenen cihazlarda ARCore, ek GPU doku çözünürlükleri sağlayabilir. Daha düşük çözünürlüklü bir GPU dokusu seçmek, GPU yükünü azaltarak ve bellek bant genişliği gereksinimlerini azaltarak uygulama performansının iyileştirilmesine yardımcı olabilir. Ancak her durumda performansı artıracağı garanti edilmez.

Kamera yapılandırma filtrelerini kullanma

Uygulamanızın kamera yapılandırmalarını filtrelemesini etkinleştirmek 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 varsayılan ARCore ayarıdır). Kayıt, fotoğrafçılık, videografi için ve yakındaki nesnelerin odakta olması gerektiğinde otomatik odaklama gereklidir.

Ayrıntılar için ArConfig_setFocusMode() sayfasını inceleyin.