Konfiguruję kamerę

ArCameraConfig opisuje właściwości bazowego czujnika aparatu, w tym:

  • Identyfikator kamery
  • Określa, czy zostanie użyty czujnik głębokości (jeśli to możliwe).
  • Kierunek, w którym jest skierowany aparat:
    • przedni (selfie)
    • tylny (świat)
  • Zakres kl./s
  • Wymiary obrazu procesora
  • Wymiar tekstury GPU
  • Jeśli ta opcja jest dostępna, określa, czy będzie używany stereo stereo na urządzeniu.

Podczas tworzenia nowej sesji ARCore ARCore wykorzystuje ArSession_setCameraConfig(), aby ustawić konfigurację kamery która najlepiej pasuje do listy dostępnych konfiguracji zwracanych przez ArSession_getSupportedCameraConfigsWithFilter() Aplikacja może używać uprawnień ArCameraConfigFilter zawężać dostępne konfiguracje kamery dla danego urządzenia w czasie działania przez filtrowanie według potrzeb aplikacji.

Typowe przypadki użycia filtrów:

  • Ograniczenie liczby klatek na sekundę podczas nagrywania aparatem do 30 kl./s. Na urządzeniach, które obsługują 60 kl./s, ARCore nadaje priorytet konfiguracjom kamery, które: liczby klatek na sekundę. Aby odfiltrować wszystkie konfiguracje kamery obsługujące 60 kl./s, zastosuj filtr z zastosowaniem funkcji ArCameraConfigFilter_setTargetFps() za pomocą 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);

  • Nie zezwalaj ARCore na używanie czujnika głębi. Na urządzeniach, które mają obsługiwanego czujnika głębi, ARCore nadaje priorytet konfiguracjom kamery, które korzystają z głębi . Aby odfiltrować wszystkie konfiguracje aparatów, które korzystają z czujnika głębi, zastosuj ArCameraConfigFilter_setDepthSensorUsage() filtr za pomocą funkcji AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

  • Wybieranie alternatywnej rozdzielczości tekstury GPU. Wł. obsługiwanych urządzeniach, ARCore może udostępniać dla dodatkowych rozdzielczości tekstur dostępnych w GPU. Wybieranie tekstury GPU o niższej rozdzielczości może pomóc zwiększyć wydajność aplikacji przez zmniejszenie obciążenia GPU i zmniejszenie pamięci wymagań związanych z przepustowością, chociaż nie możemy zagwarantować, że poprawi to wydajność we wszystkich przypadkach.

Korzystanie z filtrów konfiguracji kamery

Aby włączyć filtrowanie konfiguracji kamery, wykonaj te czynności.

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

Tryb pełnej koncentracji

Tryb pełnej koncentracji możesz też ustawić w konfiguracji sesji. Stała ostrość lepiej sprawdza się w śledzeniu (i jest domyślnym ustawieniem ARCore na większości urządzeń). Autofokus jest wymagany do nagrywania, fotografowania i nagrywania filmów oraz gdy obiekty w pobliżu wymagają na skupienie.

Zobacz ArConfig_setFocusMode() .