ArCameraConfig
descreve as propriedades do
sensor da câmera subjacente, incluindo:
- O ID da câmera
- Se disponível, se um sensor de profundidade será usado
- Para onde a câmera está voltada:
- voltado para frente (selfie)
- traseira (mundo)
- Intervalo de QPS (quadros por segundo)
- Dimensões da imagem da CPU
- Dimensão de textura da GPU
- Se presente, informa se o dispositivo com várias câmeras estéreo será usado
Ao criar uma nova sessão, o ARCore usa
ArSession_setCameraConfig()
para definir a configuração da câmera
que melhor corresponde à lista de configurações disponíveis retornada por
ArSession_getSupportedCameraConfigsWithFilter()
.
Seu app pode usar ArCameraConfigFilter
para restringir as configurações de câmera disponíveis para um determinado dispositivo durante a execução,
filtrando com base nas necessidades do app.
Casos de uso comuns para filtragem incluem:
Limitando o frame rate de captura da câmera a 30 QPS. Em dispositivos com suporte a 60 QPS, o ARCore vai priorizar as configurações da câmera que oferecem suporte a esse frame rate. Para filtrar todas as configurações de câmera compatíveis com 60 QPS, aplique um filtro com
ArCameraConfigFilter_setTargetFps()
usandoAR_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);
Impedir que o ARCore use o sensor de profundidade. Em dispositivos que têm um sensor de profundidade com suporte, o ARCore prioriza as configurações da câmera que usam o sensor de profundidade. Para filtrar todas as configurações da câmera que usam o sensor de profundidade, aplique o filtro
ArCameraConfigFilter_setDepthSensorUsage()
usandoAR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE
.ArCameraConfigFilter_setDepthSensorUsage( session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);
Como selecionar uma resolução de textura de GPU alternativa. Em dispositivos compatíveis, o ARCore pode oferecer outras resoluções de textura de GPU. A seleção de uma textura de GPU de resolução mais baixa pode ajudar a melhorar o desempenho do app reduzindo a carga da GPU e os requisitos de largura de banda da memória. No entanto, não é garantido que melhore o desempenho em todos os casos.
Como usar filtros de configuração da câmera
Siga estas etapas para que seu app filtre as configurações da câmera.
// 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);
Modo sem distrações
Também é possível definir o modo de foco na configuração da sessão. O foco fixo geralmente é melhor para rastreamento e é o padrão do ARCore na maioria dos dispositivos. O foco automático é necessário para gravação, fotografia, videografia e quando objetos próximos precisam estar em foco.
Consulte
ArConfig_setFocusMode()
para ver mais detalhes.