이제 ARCore Depth API에서 Geospatial Depth를 지원하므로 Streetscape Geometry도 사용 설정될 때 Depth API의 범위와 속도를 자동으로 높일 수 있습니다. VPS 적용 범위가 있고 Streetscape Geometry가 사용 설정된 위치에 있는 경우, Depth API의 출력 이미지에는 현재 위치로부터 65m 이내의 해당 영역에서 가져온 지형과 건물 도형이 포함됩니다. 도형에서 가져온 이 깊이 데이터는 로컬 깊이 관찰과 병합되고 사용자가 새 위치로 이동할 때 업데이트됩니다.
<ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">
이제 ARCore Depth API 호출을 통해 카메라의 지역 관측뿐만 아니라 Streetscape Geometry의 건물 및 지형도 단일 깊이 이미지로 병합됩니다.
기기 호환성
Geospatial Depth는 Depth API를 지원하는 모든 기기에서 사용할 수 있습니다. 이 기능에는 비행 시간 (ToF) 센서와 같이 지원되는 하드웨어 깊이 센서가 필요하지 않습니다. 그러나 Depth API는 기기에 있을 수 있는 지원되는 하드웨어 센서를 활용합니다.
성능 영향
Geospatial Depth는 처음 다운로드할 때 Streetscape Geometry를 깊이 표현에 통합하기 위해 세션 시작 시 간단한 일회성 계산을 도입하지만, 그렇지 않으면 깊이 계산 비용을 측정 가능한 수준으로 증가시키지 않습니다.
심도 범위
Geospatial Depth를 사용하지 않으면 일반적인 깊이 이미지 범위는 약 20~30m 떨어져 있으며, 그 범위를 넘어서는 깊이 관측의 밀도와 정확도가 떨어집니다. Geospatial Depth를 사용 설정하면 초기에 약간의 움직임으로도 밀집 샘플링된 깊이 값이 최대 65.535m에 도달하는 것이 일반적입니다.
<ph type="x-smartling-placeholder">
사용 사례
ARCore Depth API는 이미 지원되는 모든 기존 사용 사례에 사용할 수 있습니다. Geospatial Depth를 사용하면 VPS 지원 위치에서 얻은 깊이 이미지가 이전보다 더 빠르게 장거리 깊이로 채워지므로 실외 환경에서 장거리 깊이를 타겟팅하는 사용 사례를 지원할 수 있습니다. 사용 사례의 예시는 다음과 같습니다.
- 가상 콘텐츠 및 기타 시각 효과를 건물 크기로 오클루전합니다.
- 실외 내비게이션
- 거리 측정
제한사항
Geospatial Depth는 VPS 현지화 및 Streetscape Geometry를 지원하는 영역에서만 지원됩니다. 다른 영역에서는 ARCore Depth API가 지리정보 값이 없어도 정상적으로 작동합니다.
기본 요건
기본 AR 개념을 이해합니다. ARCore 세션을 구성하는 방법을 알아보세요.
Geospatial Depth 사용 설정
새 ARCore 세션에서 사용자 기기가 Depth 및 Geospatial API를 지원하는지 확인 일부 ARCore 호환 기기는 처리 전력 제약으로 인해 Depth API를 지원하지 않습니다.
리소스를 저장하기 위해 ARCore에서는 깊이가 기본적으로 사용 중지됩니다. 앱이 Depth API를 사용하도록 하려면 깊이 모드를 사용 설정하세요. 또한 Geospatial 모드와 Streetscape Geometry를 사용 설정하여 Geospatial Depth를 사용하세요
자바
Config config = session.getConfig(); // Check whether the user's device supports the Depth API. boolean isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC); boolean isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED); if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. config.setDepthMode(Config.DepthMode.AUTOMATIC); config.setGeospatialMode(Config.GeospatialMode.ENABLED); config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED); } session.configure(config);
Kotlin
val config = session.config // Check whether the user's device supports the Depth API. val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC) val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED) if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. config.depthMode = Config.DepthMode.AUTOMATIC config.geospatialMode = Config.GeospatialMode.ENABLED config.streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED } session.configure(config)
Geospatial Depth가 사용 설정되면 심도 개발자 가이드에 설명된 대로 기존 API 호출을 통해 깊이 이미지에 액세스할 수 있습니다.
자바
// Retrieve the depth image for the current frame, if available. Image depthImage = null; try { depthImage = frame.acquireDepthImage16Bits(); // Use the depth image here. } catch (NotYetAvailableException e) { // This means that depth data is not available yet. // Depth data will not be available if there are no tracked // feature points. This can happen when there is no motion, or when the // camera loses its ability to track objects in the surrounding // environment. } finally { if (depthImage != null) { depthImage.close(); } }
Kotlin
// Retrieve the depth image for the current frame, if available. try { frame.acquireDepthImage16Bits().use { depthImage -> // Use the depth image here. } } catch (e: NotYetAvailableException) { // This means that depth data is not available yet. // Depth data will not be available if there are no tracked // feature points. This can happen when there is no motion, or when the // camera loses its ability to track objects in the surrounding // environment. }
다음 단계
- 증강 현실 환경에서 Streetscape Geometry를 사용하는 방법을 알아보세요.
- Scene Semantics 및 Geospatial Depth Codelab을 통해 Geospatial Depth로 자체 앱을 빌드하는 방법을 알아보세요.