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
.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
.// Return only camera configs that will not use the depth sensor.
filter.setDepthSensorUsage(EnumSet.of(CameraConfig.DepthSensorUsage.DO_NOT_USE));// 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.
// 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));
// 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
.