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

플랫폼별 가이드

AR 앱 개발자는 사용자를 위해 가상과 실제가 자연스럽게 어우러지도록 하고 싶습니다. 사용자는 장면에 가상 객체를 배치할 때 실제로 존재하는 것처럼 보이기를 원합니다. 사용자가 가구를 쇼핑할 수 있는 앱을 개발 중이라면 구매하려는 안락의자가 자신의 공간에 잘 어울린다는 확신을 주어야 합니다.

Depth API를 사용하면 기기의 카메라가 장면에 있는 실제 객체의 크기와 모양을 파악할 수 있습니다. 깊이 이미지 또는 깊이 지도를 만들어 앱에 사실감 레이어를 추가합니다. 깊이 이미지로 제공되는 정보를 사용하면 몰입도 높고 사실적인 사용자 경험을 제공할 수 있습니다.

Depth API를 사용한 개발 사용 사례

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

오클루전 사용 설정

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

장면 변환

소파의 팔과 베개에 앉을 수 있는 가상 눈송이를 렌더링하거나 거실을 안개 낀 안개 속에 던져 사용자가 몰입도가 높은 새로운 세계를 경험하게 할 수 있습니다. 깊이를 사용하여 가상 광원이 상호작용하고, 뒤에 숨겨지며, 실제 객체를 조명하는 장면을 만들 수 있습니다.

거리 및 피사계 심도

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

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

충돌과 물리학을 통해 가상 콘텐츠가 실제 세계와 상호작용할 수 있도록 함으로써 사용자가 앱을 통해 세상을 '터치'할 수 있도록 합니다. 가상의 물체를 현실 세계의 장애물을 뛰어넘거나 가상의 페인트볼을 부딪쳐 실제 나무에 떨어뜨려 보세요. 깊이 기반 충돌과 게임 물리학을 결합하면 생생한 경험을 제공할 수 있습니다.

Hit Test 개선

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

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

기기 호환성

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

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

깊이 이미지

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

다음 이미지는 벽에 자전거가 걸려 있는 복도의 카메라 이미지와 카메라 이미지에서 생성된 깊이 이미지를 시각화한 것입니다. 빨간색으로 표시된 영역은 카메라에 더 가까우며 파란색 영역은 더 멀리 있는 것입니다.

움직임으로부터의 심도

깊이 데이터는 사용자가 기기를 이동할 때 사용할 수 있습니다. 이 알고리즘은 0~65미터 떨어진 거리에서 강력하고 정확한 수심 추정치를 얻을 수 있습니다. 가장 정확한 결과는 기기와 실제 거리의 차이가 0.5미터에서 약 5미터일 때 얻게 됩니다. 사용자가 기기를 더 많이 움직이도록 장려하면 더 나은 결과를 얻을 수 있습니다.

깊이 이미지 획득

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

다음 단계

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