깊이가 생생함을 더해줍니다.

플랫폼별 가이드

AR 앱 개발자는 사용자를 위해 가상과 실제를 원활하게 혼합하고 싶어 합니다. 사용자가 장면에 가상 물체를 배치할 때는 실제 물체처럼 보이기를 원합니다. 사용자가 가구를 쇼핑할 수 있는 앱을 빌드하는 경우 사용자가 구매하려는 안락의자가 공간에 잘 맞을 것이라고 확신할 수 있어야 합니다.

Depth API는 기기의 카메라가 장면의 실제 물체의 크기와 모양을 파악하는 데 도움이 됩니다. 깊이 이미지 또는 깊이 지도를 만들어 앱에 사실감을 더합니다. 깊이 이미지에서 제공하는 정보를 사용하여 몰입도 높은 현실적인 사용자 환경을 제공할 수 있습니다.

Depth API로 개발하기 위한 사용 사례

Depth API를 사용하면 객체 오클루전, 향상된 몰입도, AR 환경의 현실감을 향상시키는 새로운 상호작용을 지원할 수 있습니다. 다음은 자체 프로젝트에서 이를 사용하는 방법입니다. 실제로 사용되는 깊이의 예시를 보려면 ARCore Depth Lab의 샘플 장면을 살펴보세요. 깊이 데이터에 액세스하는 다양한 방법을 보여줍니다. 이 Unity 앱은 GitHub에서 오픈소스로 제공됩니다.

오클루전 사용 설정

오클루전, 즉 실제 객체 뒤에 가상 객체를 정확하게 렌더링하는 것은 몰입형 AR 환경에 가장 중요합니다. 사용자가 문 옆에 트렁크가 있는 장면에 배치할 수 있는 가상 앤디를 생각해 보겠습니다. 가림 처리 없이 렌더링하면 앤디가 트렁크 가장자리와 비현실적으로 겹쳐집니다. 장면의 깊이를 사용하고 나무 트렁크와 같은 주변 환경을 기준으로 가상 앤디가 얼마나 떨어져 있는지 파악하면 오클루전으로 앤디를 정확하게 렌더링하여 주변 환경에서 훨씬 더 사실적으로 보이게 할 수 있습니다.

장면 변환

가상 눈송이를 렌더링하여 소파의 팔걸이와 베개에 쌓이게 하거나 거실에 안개를 끼게 하여 몰입도 높은 새로운 세상을 사용자에게 보여줍니다. 깊이를 사용하여 가상 조명이 실제 객체와 상호작용하고, 실제 객체 뒤에 숨겨지고, 실제 객체에 다시 조명을 비추는 장면을 만들 수 있습니다.

거리 및 피사계 심도

무언가가 멀리 있음을 보여주고 싶으신가요? Depth API를 사용하여 거리 측정을 사용하고 장면의 배경이나 전경을 흐리게 처리하는 등 심도 효과를 추가할 수 있습니다.

AR 객체와의 사용자 상호작용 사용 설정

가상 콘텐츠가 충돌 및 물리학을 통해 실제 세계와 상호작용할 수 있도록 하여 사용자가 앱을 통해 세상을 '만질 수' 있도록 하세요. 가상 물체가 실제 장애물을 지나가게 하거나 가상 페인트볼이 실제 나무에 부딪혀 튀게 만들 수 있습니다. 깊이 기반 충돌을 게임 물리와 결합하면 생생한 환경을 만들 수 있습니다.

Hit Test 개선

심도는 Hit Test 결과를 개선하는 데 사용될 수 있습니다. 평면 히트 테스트는 텍스처가 있는 평면 표면에서만 작동하는 반면, 깊이 히트 테스트는 더 세부적이며 평면이 아닌 영역과 텍스처가 낮은 영역에서도 작동합니다. 깊이 히트 테스트는 장면의 깊이 정보를 사용하여 점의 올바른 깊이와 방향을 결정하기 때문입니다.

다음 예에서 녹색 Andys는 표준 비행기 적중 테스트를 나타내고 빨간색 Andys는 깊이 히트 테스트를 나타냅니다.

기기 호환성

Depth API는 깊이를 지원하는 처리 능력이 있는 기기에서만 지원되며 사용 설정 깊이에 설명된 대로 ARCore에서 수동으로 사용 설정해야 합니다.

일부 기기에서는 비행 시간(ToF) 센서와 같은 하드웨어 깊이 센서를 제공할 수도 있습니다. Depth API를 지원하는 최신 기기 목록과 지원되는 하드웨어 깊이 센서(예: ToF 센서)가 있는 기기 목록은 ARCore 지원 기기 페이지를 참고하세요.

심도 이미지

Depth API는 모션으로부터 깊이를 추정하는 알고리즘을 사용하여 깊이 이미지를 만들어 세상을 3D로 볼 수 있도록 합니다. 깊이 이미지의 각 픽셀은 장면이 카메라에서 얼마나 떨어져 있는지 측정값과 연결됩니다. 이 알고리즘은 여러 각도에서 여러 기기 이미지를 촬영하고 이를 비교하여 사용자가 휴대전화를 움직일 때 모든 픽셀까지의 거리를 추정합니다. 머신러닝을 선택적으로 사용하여 사용자의 움직임이 최소한이더라도 심도 처리를 개선합니다. 또한 사용자 기기에 있는 추가 하드웨어도 활용합니다. 기기에 ToF와 같은 전용 깊이 센서가 있는 경우 알고리즘은 사용 가능한 모든 소스의 데이터를 자동으로 병합합니다. 이렇게 하면 기존 깊이 이미지가 개선되고 카메라가 움직이지 않아도 깊이를 사용할 수 있습니다. 또한 흰색 벽과 같이 특징이 거의 또는 전혀 없는 표면이나 움직이는 사람이나 사물이 있는 동적 장면에서 심도를 더질 수 있습니다.

다음 이미지는 벽에 자전거가 놓여 있는 복도의 카메라 이미지와 카메라 이미지에서 생성된 깊이 이미지를 시각화한 것입니다. 빨간색 영역은 카메라에 더 가깝고 파란색 영역은 더 멀리 있습니다.

모션으로부터의 깊이

사용자가 기기를 움직이면 깊이 데이터를 사용할 수 있습니다. 이 알고리즘은 0~65m 거리의 수심을 정확하게 추정할 수 있습니다. 기기가 실제 장면에서 0.5~5m 떨어져 있을 때 가장 정확한 결과를 얻을 수 있습니다. 사용자가 기기를 더 많이 움직이도록 유도하는 환경은 더 나은 결과를 얻을 수 있습니다.

깊이 이미지 획득

Depth API를 사용하면 모든 카메라 프레임과 일치하는 깊이 이미지를 가져올 수 있습니다. 획득된 깊이 이미지는 카메라와 동일한 타임스탬프 및 시야 내장 기능을 갖습니다. 깊이는 움직임에서 획득되므로 유효한 깊이 데이터는 사용자가 기기를 움직이기 시작한 후에만 사용할 수 있습니다. 흰색 벽과 같이 특징이 거의 없거나 없는 표면은 부정확한 깊이와 연결됩니다.

다음 단계

  • 깊이 데이터에 액세스하는 다양한 방법을 보여주는 ARCore Depth Lab을 확인하세요.