플랫폼별 가이드
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine
AR 앱 개발자는 사용자를 위해 가상과 실제를 원활하게 혼합하려고 합니다. 사용자가 장면에서 가상 객체를 배치할 때 실제 세계에 속한 것처럼 보이기를 원합니다. 사용자가 가구를 쇼핑할 수 있는 앱을 빌드하는 경우 사용자가 구매하려는 안락의자가 공간에 맞을 것이라고 확신하기를 원합니다.
Depth API는 기기의 카메라가 장면에서 실제 객체의 크기와 모양을 이해하는 데 도움이 됩니다. 깊이 이미지 또는 깊이 맵을 만들어 앱에 사실감을 더합니다. 깊이 이미지에서 제공하는 정보를 사용하여 몰입도 높은 현실적인 사용자 환경을 지원할 수 있습니다.
Depth API로 개발하는 경우의 사용 사례
Depth API는 객체 오클루전, 향상된 몰입도, AR 환경의 사실감을 높이는 새로운 상호작용을 지원할 수 있습니다. 다음은 자체 프로젝트에서 사용할 수 있는 몇 가지 방법입니다. 실제 Depth의 예를 보려면 깊이 데이터에 액세스하는 다양한 방법을 보여주는 ARCore Depth Lab의 샘플 장면을 살펴보세요. 이 Unity 앱은 GitHub에서 오픈소스로 제공됩니다.
오클루전 사용 설정
오클루전 또는 실제 객체 뒤에 가상 객체를 정확하게 렌더링하는 것은 몰입도 높은 AR 환경에 매우 중요합니다. 사용자가 문 옆에 트렁크가 있는 장면에서 배치하려는 가상 Andy를 고려해 보겠습니다. 오클루전 없이 렌더링된 Andy는 비현실적으로 트렁크의 가장자리와 겹칩니다. 장면의 깊이를 사용하고 가상 Andy가 나무 트렁크와 같은 주변 환경을 기준으로 얼마나 멀리 떨어져 있는지 이해하면 오클루전으로 Andy를 정확하게 렌더링하여 주변 환경에서 훨씬 더 사실적으로 보이게 할 수 있습니다.

장면 변환
가상 눈송이를 렌더링하여 소파의 팔걸이와 베개에 앉히거나 거실을 안개로 덮어 사용자에게 몰입도 높은 새로운 세계를 보여주세요. Depth를 사용하여 가상 조명이 실제 객체와 상호작용하고, 실제 객체 뒤에 숨고, 실제 객체를 다시 밝히는 장면을 만들 수 있습니다.
거리 및 피사계 심도
어떤 것이 멀리 떨어져 있음을 보여줘야 하나요? Depth API를 사용하여 거리 측정값을 사용하고 장면의 배경이나 전경을 흐리게 처리하는 것과 같은 피사계 심도 효과를 추가할 수 있습니다.
AR 객체와의 사용자 상호작용 사용 설정
가상 콘텐츠가 충돌 및 물리적 상호작용을 통해 실제 세계와 상호작용하도록 지원하여 사용자가 앱을 통해 세계를 '터치'할 수 있도록 합니다. 가상 객체가 실제 장애물을 넘어가거나 가상 페인트볼이 실제 나무에 부딪혀 튀도록 합니다. 깊이 기반 충돌을 게임 물리와 결합하면 환경을 생생하게 만들 수 있습니다.
적중 테스트 개선
깊이를 사용하여 적중 테스트 결과를 개선할 수 있습니다. 평면 적중 테스트는 텍스처가 있는 평면 표면에서만 작동하는 반면 깊이 적중 테스트는 더 자세하며 평면이 아닌 영역과 텍스처가 낮은 영역에서도 작동합니다. 이는 깊이 적중 테스트가 장면의 깊이 정보를 사용하여 점의 올바른 깊이와 방향을 결정하기 때문입니다.
다음 예에서 녹색 Andy는 표준 평면 적중 테스트를 나타내고 빨간색 Andy는 깊이 적중 테스트를 나타냅니다.
기기 호환성
Depth API는 깊이를 지원하는 처리 능력이 있는 기기에서만 지원되며 깊이 사용 설정에 설명된 대로 ARCore에서 수동으로 사용 설정해야 합니다.
일부 기기에서는 비행 시간(ToF) 센서와 같은 하드웨어 깊이 센서를 제공할 수도 있습니다. Depth API를 지원하는 기기의 최신 목록과 ToF 센서와 같은 지원되는 하드웨어 깊이 센서가 있는 기기의 목록은 ARCore 지원 기기 페이지를 참고하세요.
깊이 이미지
Depth API는 동작에서 깊이 알고리즘을 사용하여 세계의 3D 뷰를 제공하는 깊이 이미지를 만듭니다. 깊이 이미지의 각 픽셀은 장면이 카메라에서 얼마나 멀리 떨어져 있는지 측정하는 것과 연결됩니다. 이 알고리즘은 다양한 각도에서 여러 기기 이미지를 가져와 사용자가 휴대전화를 움직일 때 모든 픽셀까지의 거리를 추정하기 위해 비교합니다. 사용자의 움직임이 최소화된 경우에도 머신러닝을 선택적으로 사용하여 깊이 처리를 늘립니다. 또한 사용자의 기기에 있을 수 있는 추가 하드웨어를 활용합니다. 기기에 ToF와 같은 전용 깊이 센서가 있는 경우 알고리즘은 사용 가능한 모든 소스의 데이터를 자동으로 병합합니다. 이렇게 하면 기존 깊이 이미지가 향상되고 카메라가 움직이지 않을 때도 깊이가 지원됩니다. 또한 흰색 벽과 같이 특징이 거의 또는 전혀 없는 표면이나 움직이는 사람 또는 객체가 있는 동적 장면에서 더 나은 깊이를 제공합니다.
다음 이미지는 벽에 자전거가 있는 복도의 카메라 이미지와 카메라 이미지에서 생성된 깊이 이미지의 시각화를 보여줍니다. 빨간색 영역은 카메라에 더 가깝고 파란색 영역은 더 멀리 있습니다.

동작에서 깊이
사용자가 기기를 움직이면 깊이 데이터를 사용할 수 있습니다. 이 알고리즘은 0~65m 떨어진 곳에서 강력하고 정확한 깊이 추정치를 얻을 수 있습니다. 가장 정확한 결과는 기기가 실제 장면에서 0.5m~5m 정도 떨어져 있을 때 나옵니다. 사용자가 기기를 더 많이 움직이도록 유도하는 환경은 점점 더 나은 결과를 얻을 수 있습니다.
깊이 이미지 획득
Depth API를 사용하면 모든 카메라 프레임과 일치하는 깊이 이미지를 가져올 수 있습니다. 획득한 깊이 이미지의 타임스탬프와 시야 내장 함수는 카메라와 동일합니다. 깊이는 동작에서 획득되므로 사용자가 기기를 움직이기 시작한 후에만 유효한 깊이 데이터를 사용할 수 있습니다. 흰색 벽과 같이 특징이 거의 또는 전혀 없는 표면은 부정확한 깊이와 연결됩니다.
다음 단계
- 깊이 데이터에 액세스하는 다양한 방법을 보여주는 ARCore Depth Lab을 살펴보세요.