카메라 구성하기

ArCameraConfig은 다음을 포함한 기본 카메라 센서의 속성을 설명합니다.

  • 카메라 ID
  • 가능한 경우 심도 센서 사용 여부
  • 카메라가 향하는 방향:
    • 전면 (셀카)
    • 후면 (월드)
  • FPS (초당 프레임 수) 범위
  • CPU 이미지 크기
  • GPU 텍스처 크기
  • 기기의 스테레오 다중 카메라 사용 여부(있는 경우)

새 ARCore 세션을 만들 때 ARCore는 ArSession_setCameraConfig()을 사용하여 ArSession_getSupportedCameraConfigsWithFilter()에서 반환한 사용 가능한 구성 목록과 가장 일치하는 카메라 구성을 설정합니다. 앱은 ArCameraConfigFilter를 사용하여 앱의 요구사항에 따라 필터링하여 런타임에 특정 기기에서 사용할 수 있는 카메라 구성 범위를 좁힐 수 있습니다.

필터링의 일반적인 사용 사례는 다음과 같습니다.

  • 카메라 캡처 프레임 속도를 30fps로 제한 60fps를 지원하는 기기에서 ARCore는 이 프레임 속도를 지원하는 카메라 구성에 우선순위를 지정합니다. 60fps를 지원하는 모든 카메라 구성을 필터링하려면 AR_CAMERA_CONFIG_TARGET_FPS_30를 사용하여 ArCameraConfigFilter_setTargetFps()로 필터를 적용합니다.

    // Return only camera configs that target 30 FPS camera capture frame
    // rate.
    ArCameraConfigFilter_setTargetFps(session, filter,
                                      AR_CAMERA_CONFIG_TARGET_FPS_30);

  • ARCore가 깊이 센서를 사용하지 못하도록 방지 ARCore는 지원되는 깊이 센서가 있는 기기에서 깊이 센서를 사용하는 카메라 구성을 우선합니다. 깊이 센서를 사용하는 모든 카메라 구성을 필터링하려면 AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE를 사용하여 ArCameraConfigFilter_setDepthSensorUsage() 필터를 적용합니다.

    ArCameraConfigFilter_setDepthSensorUsage(
        session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);

  • 대체 GPU 텍스처 해상도 선택 지원되는 기기에서는 ARCore가 GPU 텍스처 해상도를 추가로 제공할 수 있습니다. 저해상도 GPU 텍스처를 선택하면 GPU 부하를 줄이고 메모리 대역폭 요구사항을 줄여 앱 성능을 개선하는 데 도움이 될 수 있지만 모든 경우에 성능이 개선되는 것은 아닙니다.

카메라 구성 필터 사용

앱에서 카메라 구성을 필터링하도록 사용 설정하려면 다음 단계를 따르세요.

// 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()를 참고하세요.