CameraConfig
описывает свойства базового датчика камеры, в том числе:
- Идентификатор камеры
- Если доступен, будет ли использоваться датчик глубины.
- Направление камеры:
- фронтальная (селфи)
- лицом назад (мир)
- Диапазон FPS (кадров в секунду)
- Размеры образа процессора
- Размер текстуры графического процессора
- Если присутствует, будет ли использоваться стереомногокамера устройства.
При создании нового сеанса ARCore ARCore использует setCameraConfig
для установки конфигурации камеры, которая лучше всего соответствует списку доступных конфигураций, возвращаемых getSupportedCameraConfigs(CameraConfigFilter)
. Ваше приложение может использовать CameraConfigFilter
, чтобы сузить доступные конфигурации камеры для данного устройства во время выполнения путем фильтрации на основе потребностей вашего приложения.
Общие случаи использования фильтрации включают в себя:
Ограничение частоты кадров при захвате камеры до 30 кадров в секунду . На устройствах, поддерживающих частоту кадров 60 кадров в секунду, ARCore будет отдавать приоритет конфигурациям камер, поддерживающим эту частоту кадров. Чтобы отфильтровать все конфигурации камеры, поддерживающие 60 кадров в секунду, примените фильтр с помощью
setTargetFps
используяTargetFps.TARGET_FPS_30
.Ява
// 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 target 30 FPS camera capture frame rate. filter.targetFps = EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30)
Запретите ARCore использовать датчик глубины . На устройствах с поддерживаемым датчиком глубины ARCore отдает приоритет конфигурациям камеры, использующим датчик глубины. Чтобы отфильтровать все конфигурации камеры, использующие датчик глубины, примените фильтр
setDepthSensorUsage
с помощьюDepthSensorUsage.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)
Выбор альтернативного разрешения текстуры графического процессора . На поддерживаемых устройствах ARCore может обеспечивать дополнительное разрешение текстур графического процессора. Выбор текстуры графического процессора с более низким разрешением может помочь повысить производительность приложения за счет снижения нагрузки на графический процессор и снижения требований к пропускной способности памяти, хотя это не гарантирует повышение производительности во всех случаях.
Использование фильтров конфигурации камеры
Выполните следующие действия, чтобы ваше приложение могло фильтровать конфигурации камеры.
Ява
// 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]
Режим фокусировки
Вы также можете установить режим фокусировки в конфигурации сеанса. Фиксированный фокус обычно лучше подходит для отслеживания (и это значение ARCore по умолчанию на большинстве устройств). Автоматическая фокусировка необходима для записи, фото- и видеосъемки, а также когда близлежащие объекты должны быть в фокусе.
Подробности см. Config.FocusMode
.