CameraConfig
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
setCameraConfig
, aby ustawić konfigurację kamery
która najlepiej pasuje do listy dostępnych konfiguracji zwracanych przez
getSupportedCameraConfigs(CameraConfigFilter)
Aplikacja może używać uprawnień CameraConfigFilter
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
setTargetFps
za pomocąTargetFps.TARGET_FPS_30
.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)
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
setDepthSensorUsage
filtr za pomocą funkcjiDepthSensorUsage.DO_NOT_USE
.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)
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.
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]
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 filmowania oraz wtedy, gdy obiekty w pobliżu muszą być ostre.
Zobacz Config.FocusMode
.