앱은 Jetpack XR용 ARCore를 통해 깊이 정보를 검색하여 실제 객체가 기기에 얼마나 가까운지 확인할 수 있습니다.
Jetpack XR용 ARCore 세션 만들기
Jetpack XR 세션용 ARCore를 통해 머리 포즈 정보를 획득합니다.
Session
를 가져오려면 세션의 수명 주기 이해하기를 참고하세요.
세션 구성
깊이 지도 가져오기는 XR 세션에서 기본적으로 사용 설정되지 않습니다. 깊이 맵 검색을 사용 설정하려면 세션을 구성하고 DepthEstimationMode
를 설정합니다.
val newConfig = session.config.copy( depthEstimation = Config.DepthEstimationMode.SMOOTH_ONLY, ) when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
사용 가능한 DepthEstimationMode
값은 다음과 같습니다.
DISABLED
: 장면 깊이에 관한 정보가 제공되지 않습니다.RAW_ONLY
: 원시 깊이 및 신뢰도 값으로 깊이 추정이 사용 설정됩니다.SMOOTH_ONLY
: 부드러운 깊이와 신뢰도 값을 사용하여 깊이 추정이 사용 설정됩니다.SMOOTH_AND_RAW
: 원시 깊이와 부드러운 깊이 및 신뢰도 값을 모두 사용하여 깊이 추정이 사용 설정됩니다.
원시 깊이 지도는 더 높은 정확도로 깊이를 추정하지만 원시 깊이 이미지에는 카메라 이미지의 모든 픽셀에 대한 깊이 추정치가 포함되지 않을 수 있습니다. 반면 부드러운 깊이 지도는 모든 픽셀의 추정 깊이를 제공하지만 깊이 추정치의 스무딩 및 보간으로 인해 픽셀별 깊이 데이터의 정확도가 떨어질 수 있습니다.
깊이 데이터 가져오기
특정 카메라의 깊이 데이터를 가져오려면 DepthMap
를 사용하세요.
val depthMap = DepthMap.left(session) ?: return
기기마다 기능이 다릅니다. 스테레오 카메라 구성이 있는 기기는 left
및 right
카메라에 null이 아닌 깊이 지도를 반환합니다.
마찬가지로 카메라가 하나인 기기는 mono
를 사용하여 null이 아닌 깊이 맵을 반환합니다.
깊이 값 계산
결과 깊이 지도에서 깊이와 신뢰도 값을 가져올 수 있습니다.
val depthMap = DepthMap.left(session) ?: return
사용된 구성 설정에 따라 smoothDepthMap
또는 rawDepthMap
를 사용하여 해당 깊이 맵에 액세스합니다. 이러한 지도에 포함된 측정값은 미터로 표시됩니다. smoothConfidenceMap
및 rawConfidenceMap
를 사용하여 신뢰도 값에 액세스할 수도 있습니다. 이 값의 범위는 0~255이며, 255는 가장 높은 신뢰도를 나타냅니다.
디버그 또는 시각화 목적으로 깊이 맵을 렌더링하려면 ARCore 테스트 앱의 깊이 부분을 참고하세요.