오브젝트 트래킹과 motion tracking 결합
이 문서는 3D object tracking과 장치 motion tracking 기능을 융합하여 복잡한 시나리오에서 tracking 안정성과 사용자 경험을 향상하는 방법을 설명합니다.
기본 원리
Motion Fusion은 3D object tracking의 pose 데이터와 장치 motion tracking의 pose 데이터를 결합하여 더 robust한 pose 추정을 구현합니다.
데이터 동기화와 상호 보완
- 비주얼 트래킹: 이미지 특징점 매칭을 통해 현재 프레임의 pose(위치 + 회전)를 계산하지만, 가림, 흐림 또는 빠른 움직임의 영향을 받기 쉽습니다.
- Motion tracking: IMU 센서의 고주파 출력과 비주얼 이미지 출력을 이용해 장치 운동 데이터를 얻지만 누적 drift 오차가 있을 수 있습니다.
- Motion Fusion:
- 비주얼 트래킹 pose와 장치 motion tracking pose의 좌표계를 정렬합니다.
- target object가 선명하게 보이고 안정적으로 움직일 때는 비주얼 트래킹이 주가 되며, 그 pose를 fusion 모듈에 지속적으로 입력해 누적 drift를 줄입니다.
- target object가 손실되거나 화면에서 너무 작거나 빠르게 움직이면 비주얼 트래킹이 실패하고 motion tracking이 주가 됩니다.
핵심 기술 포인트
- 타임스탬프 정렬: 비주얼 프레임의 timestamp와 motion tracking 데이터를 정렬하여 지연으로 인한 jitter를 방지합니다.
- 좌표계 정렬: 비주얼 트래킹 궤적과 motion tracking 궤적에 따라 좌표계를 정렬합니다.
- 재로컬라이제이션: target object가 다시 나타나면 비주얼 트래킹이 인수하여 가능한 누적 오차를 빠르게 보정합니다.
적용 시나리오 및 제한
Motion Fusion은 모든 시나리오에 적합하지 않습니다. 다음 중 하나에 해당하면 Motion Fusion 기능을 적용할 수 없습니다.
- 대상 장치가 ARCore/ARKit 등의 motion tracking 기능을 지원하지 않습니다. 자세한 장치 지원 목록은 Motion Tracking 장치 지원을 참조하십시오.
- target object가 scene에서 동적인 경우, 예를 들어 손에 든 장난감이나 피규어.
그 외 시나리오에서 Motion Fusion은 3D object tracking의 사용자 경험을 크게 향상합니다.
- 빠른 움직임: 사용자가 손에 든 장치를 빠르게 움직이면 motion blur로 인해 비주얼 트래킹이 실패할 수 있습니다.
- target 사라짐: 화면이 target 자체를 벗어나거나 target이 보행자 같은 동적 물체에 가려져도 전체 scene의 가상 콘텐츠 표시를 유지할 수 있습니다.
- target에서 멀어짐: 사용자가 장치를 멀리 이동해 target object가 화면에서 너무 작아져도 안정적으로 tracking을 지속할 수 있습니다.
- 저조도 조건: 비주얼 트래킹 성능이 저하되어 경험을 유지해야 합니다.
효과 및 기대 결과
시나리오가 적합하면 Motion Fusion은 3D object tracking만 사용할 때보다 더 안정적이고 부드러운 사용자 경험을 제공합니다.
이상적인 효과
- 더 안정적인 트래킹: 가상 오브젝트가 흔들리거나 튀지 않습니다.
- 부드러운 전환: 비주얼 트래킹이 실패할 때 fusion pose의 변화가 연속적이고 자연스럽습니다.
- 간섭 저항성: target object가 손실되거나 가려지거나 장치가 빠르게 움직여도 가상 오브젝트는 장치 움직임을 따라 계속 tracking할 수 있습니다.
비이상적 상황 및 대응
| 현상 | 원인 | 사용자 인지 | 해결 방법 |
|---|---|---|---|
| 초기에 적용되지 않음 | motion tracking 초기화에 시간이 필요함 | 초기 단계에서 콘텐츠가 사라짐 | 적절한 UI 안내를 제공하고 시스템 motion tracking 초기화가 완료되었는지 확인 |
| 뚜렷한 drift | 시스템 오차가 누적되고 오랫동안 비주얼 보정이 없음 | 가상 오브젝트가 원래 위치에서 벗어남 | 사용자에게 가림 시간을 줄이도록 안내하거나 비주얼 재로컬라이제이션 안내 추가 |
| 성능 저하 | 두 기능이 장시간 동시에 실행됨 | 프레임레이트가 떨어지고 화면이 끊김 | 정상 현상이며 API를 통해 Motion Fusion을 끌 수 있음 |
기대 결과 검증 방법
지원되는 장치를 사용하여 실제 scene에서 테스트합니다.
- target object를 조준하고 가상 오브젝트가 안정적인지 확인합니다.
- 손으로 object를 2초 동안 가리고 장치를 움직여 가상 오브젝트가 부드럽게 움직이는지 관찰합니다.
- 손을 치우고 가상 오브젝트가 튐 없이 빠르게 올바른 위치로 돌아오는지 확인합니다.
요약 및 모범 사례
Motion Fusion은 많은 시나리오에서 3D object tracking의 robust함을 크게 향상하지만, 장치 hardware 지원과 충분한 성능이 필요합니다.
Motion Fusion 기능을 실시간으로 켜고/끄는 API 참조:
- Native: setResultPostProcessing
- Unity: EnableMotionFusion