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ą funkcjiAR_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()
.