ArCameraConfig
описывает свойства основного датчика камеры, в том числе:
- Идентификатор камеры
- Если доступен, будет ли использоваться датчик глубины.
- Направление камеры:
- фронтальная (селфи)
- лицом назад (мир)
- Диапазон FPS (кадров в секунду)
- Размеры образа процессора
- Размер текстуры графического процессора
- Если присутствует, будет ли использоваться стереомногокамера устройства.
При создании нового сеанса ARCore ARCore использует ArSession_setCameraConfig()
для установки конфигурации камеры, которая лучше всего соответствует списку доступных конфигураций, возвращаемому ArSession_getSupportedCameraConfigsWithFilter()
. Ваше приложение может использовать ArCameraConfigFilter
чтобы сузить доступные конфигурации камеры для данного устройства во время выполнения путем фильтрации на основе потребностей вашего приложения.
Общие случаи использования фильтрации включают в себя:
Ограничение частоты кадров захвата камеры до 30 кадров в секунду . На устройствах, поддерживающих частоту кадров 60 кадров в секунду, ARCore будет отдавать приоритет конфигурациям камер, поддерживающим эту частоту кадров. Чтобы отфильтровать все конфигурации камеры, поддерживающие 60 кадров в секунду, примените фильтр с помощью
ArCameraConfigFilter_setTargetFps()
используя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);Запретите ARCore использовать датчик глубины . На устройствах с поддерживаемым датчиком глубины ARCore отдает приоритет конфигурациям камеры, использующим датчик глубины. Чтобы отфильтровать все конфигурации камеры, использующие датчик глубины, примените фильтр
ArCameraConfigFilter_setDepthSensorUsage()
с помощьюAR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE
.ArCameraConfigFilter_setDepthSensorUsage(
session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);Выбор альтернативного разрешения текстуры графического процессора . На поддерживаемых устройствах ARCore может обеспечивать дополнительное разрешение текстур графического процессора. Выбор текстуры графического процессора с более низким разрешением может помочь повысить производительность приложения за счет снижения нагрузки на графический процессор и снижения требований к пропускной способности памяти, хотя это не гарантирует повышение производительности во всех случаях.
Использование фильтров конфигурации камеры
Выполните следующие действия, чтобы ваше приложение могло фильтровать конфигурации камеры.
// 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);
Режим фокусировки
Вы также можете установить режим фокусировки в конфигурации сеанса. Фиксированный фокус обычно лучше подходит для отслеживания (и это значение ARCore по умолчанию на большинстве устройств). Автоматическая фокусировка необходима для записи, фото- и видеосъемки, а также когда близлежащие объекты должны быть в фокусе.
Подробности смотрите ArConfig_setFocusMode()
.