평면 AR tracker 예외 처리
이 문서는 callback을 등록하여 WeChat 평면 AR tracker의 예외를 처리하는 방법을 소개합니다.
시작하기 전에
MegaTracker workflow를 통해 이해합니다.
- xr-frame의 plane AR tracker는 본질적으로 VisionKit 6DoF plane 기능의 wrapper입니다.
- MegaTracker가 xr-frame에서 어떻게 작동하는지.
AR Session의 개념과 흐름을 이해합니다
plane detection 예외가 발생하는 이유
화면에 큰 흰 벽이 나타나거나 카메라가 장시간 가려지는 등 특정 상황에서 WeChat 평면 AR tracker에 상태 이상이 발생할 수 있습니다.
이때 평면 AR tracker는 각 frame의 camera pose, 즉 6DoF 데이터를 정상적으로 출력할 수 없으며, 이로 인해 MegaTracker가 작동할 수 없습니다.
화면이 정상(풍부한 texture, 카메라가 가려지지 않음)인 상태로 일정 시간이 지나면 평면 AR tracker가 다시 작동하고 MegaTracker도 다시 작동합니다.
plane detection 이상 시 동작 설정
setPlaneDetectionErrorBehavior(behavior)를 통해 예외 처리 callback을 등록합니다. 예외가 감지되면 이 callback이 트리거되며, 개발자는 그 안에서 사용자 지정 안내, 3D 콘텐츠 숨김 또는 기타 처리 로직을 구현할 수 있습니다.
session.setPlaneDetectionErrorBehavior(() => {
wx.showToast({
icon: 'none',
title: `微信平面检测结果异常,请将相机对着平面来回移动以恢复跟踪`,
duration: 2000,
});
});
이 예제에서는 session의 setPlaneDetectionErrorBehavior(behavior) interface를 사용해 Toast 창을 띄우는 callback을 등록했으며, plane detection 이상 시 트리거됩니다.