플랫폼별 가이드
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine
<ph type="x-smartling-placeholder">
AR 앱 개발자는 사용자를 위해 가상 세계와 실제 환경을 원활하게 혼합하고 싶어 합니다. 사용자는 장면에 가상 객체를 배치할 때 현실 세계에 있는 것처럼 보이기를 원합니다. 사용자가 가구를 쇼핑할 수 있는 앱을 빌드한다면, 사용자가 구매하려는 안락의자가 자신의 공간에 어울릴 것이라는 확신을 주어야 합니다.
Depth API를 사용하면 기기의 카메라가 장면에 있는 실제 객체의 크기와 모양을 이해할 수 있습니다. 깊이 이미지, 즉 깊이 맵을 만들어 앱에 사실감을 더해 줍니다. 깊이 이미지에서 제공하는 정보를 사용하면 몰입도 높고 현실적인 사용자 환경을 구현할 수 있습니다.
Depth API를 사용한 개발 사용 사례
Depth API는 객체 오클루전, 향상된 몰입, AR 환경의 현실감을 향상하는 새로운 상호작용을 지원할 수 있습니다. 다음은 프로젝트에서 이를 사용할 수 있는 몇 가지 방법입니다. 실제로 사용되는 깊이의 예시를 보려면 ARCore Depth Lab의 샘플 장면을 살펴보세요. 깊이 데이터에 액세스하는 다양한 방법을 보여줍니다. 이 Unity 앱은 GitHub에서 오픈소스로 제공됩니다.
오클루전 사용 설정
오클루전, 즉 실제 객체 뒤에 가상 객체를 정확하게 렌더링하는 것은 몰입형 AR 경험을 하는 데 가장 중요합니다. 사용자가 문 옆에 트렁크가 있는 장면에 배치하려는 가상의 앤디를 생각해 보세요. 오클루전 없이 렌더링하면 앤디가 비현실적으로 트렁크 가장자리와 겹쳐집니다. 장면의 깊이를 사용하여 가상의 앤디가 나무 몸통과 같은 주변과 얼마나 멀리 떨어져 있는지 파악하면 오클루전으로 앤디를 정확하게 렌더링할 수 있으므로 주위에 훨씬 더 사실적으로 보이게 할 수 있습니다.
장면 변환
사용자가 소파의 팔과 베개에 앉을 수 있는 가상 눈송이를 렌더링하거나 거실을 안개 낀 안개 속에 던져 사용자가 몰입할 수 있는 새로운 세계를 보여주세요. 깊이를 사용하여 가상의 조명이 상호작용하고, 실제 물체 뒤에 숨기고, 실제 물체에 조명을 다시 적용하는 장면을 만들 수 있습니다.
<ph type="x-smartling-placeholder">
거리 및 피사계 심도
뭔가 멀리 떨어져 있다는 것을 보여주어야 하나요? 거리 측정을 사용하고 Depth API를 사용하여 장면의 배경 또는 전경을 흐리게 처리하는 등의 피사계 심도 효과를 추가할 수 있습니다.
<ph type="x-smartling-placeholder">
AR 객체와 사용자 상호작용 사용 설정
충돌과 물리학을 통해 가상 콘텐츠가 현실 세계와 상호작용할 수 있도록 하여 사용자가 앱을 통해 세계를 '터치'할 수 있도록 합니다. 가상 물체가 현실 세계의 장애물을 뛰어넘도록 하거나 가상 페인트볼이 현실 세계의 나무에 부딪혀 부딪히게 합니다. 깊이 기반 충돌을 게임 물리학과 결합하면 생생한 경험을 구현할 수 있습니다.
<ph type="x-smartling-placeholder">
Hit Test 개선
심도는 Hit Test 결과를 개선하는 데 사용될 수 있습니다. 평면 히트 테스트는 텍스처가 있는 평면 표면에서만 작동하는 반면 깊이 히트 테스트는 더 세부적이며 평면이 아니거나 텍스처가 낮은 영역에서도 작동합니다. 심도 히트 테스트는 장면의 깊이 정보를 사용하여 지점의 올바른 깊이와 방향을 결정하기 때문입니다.
다음 예에서 녹색 Andys는 표준 비행기 적중 테스트를 나타내고 빨간색 Andys는 깊이 히트 테스트를 나타냅니다.
<ph type="x-smartling-placeholder">
기기 호환성
Depth API는 깊이이고 다음 페이지에 설명된 대로 ARCore에서 수동으로 사용 설정해야 합니다. 심도 사용 설정.
일부 기기에서는 비행 시간 센서와 같은 하드웨어 깊이 센서를 제공할 수도 있습니다. (ToF) 센서. 자세한 내용은 ARCore 지원 기기 페이지를 참고하세요. Depth API를 지원하는 기기의 최신 목록과 지원되는 하드웨어 깊이 센서(예: ToF 센서)가 있어야 합니다.
심도 이미지
Depth API는 모션 심도 알고리즘을 사용하여 세계의 3D 뷰를 제공하는 깊이 이미지를 생성합니다. 심도 이미지의 각 픽셀은 카메라에서 장면이 얼마나 멀리 떨어져 있는지에 대한 측정값과 관련이 있습니다. 이 알고리즘은 다양한 각도에서 여러 기기 이미지를 촬영하고 이를 비교하여 사용자가 휴대전화를 이동할 때 각 픽셀까지의 거리를 추정합니다. 사용자의 움직임을 최소화하더라도 머신러닝을 선택적으로 사용하여 심도 처리를 높입니다. 또한 사용자 기기에 있을 수 있는 추가 하드웨어를 활용합니다. 기기에 ToF와 같은 전용 심도 센서가 있는 경우 알고리즘은 사용 가능한 모든 소스의 데이터를 자동으로 병합합니다. 이렇게 하면 기존 심도 이미지가 보정되고 카메라가 움직이지 않을 때도 심도를 사용할 수 있습니다. 또한 흰색 벽과 같이 특징이 거의 또는 전혀 없는 표면이나 움직이는 사람이나 사물이 있는 동적 장면에서 심도를 더질 수 있습니다.
다음 이미지는 벽에 자전거가 놓여 있는 복도의 카메라 이미지와 카메라 이미지에서 만든 깊이 이미지를 시각화한 것입니다. 빨간색으로 표시된 영역은 카메라에 더 가까우며 파란색으로 표시된 영역은 더 먼 거리입니다.
모션으로부터의 거리
심도 데이터는 사용자가 기기를 이동하면 사용할 수 있게 됩니다. 이 알고리즘은 0~65m 거리의 수심을 정확하게 추정할 수 있습니다. 가장 정확한 결과는 기기가 실제 현장에서 0.5m~5m 거리에 있을 때 얻어집니다. 사용자가 기기를 더 많이 움직이도록 유도하는 환경은 더 나은 결과를 얻을 수 있습니다.
깊이 이미지 획득
Depth API를 사용하면 모든 카메라 프레임과 일치하는 깊이 이미지를 가져올 수 있습니다. 획득된 깊이 이미지는 카메라와 동일한 타임스탬프 및 시야 내장 기능을 갖습니다. 깊이는 모션으로부터 획득되므로 사용자가 기기를 이리저리 움직이기 시작한 후에만 유효한 깊이 데이터를 사용할 수 있습니다. 흰 벽과 같이 특징이 거의 없거나 전혀 없는 표면은 부정확한 깊이와 연결됩니다.
다음 단계
- 깊이 데이터에 액세스하는 다양한 방법을 보여주는 ARCore Depth Lab을 확인하세요.