平面 AR tracker の例外処理
この記事では、callback を登録して WeChat 平面 AR tracker の例外を処理する方法を紹介します。
始める前に
MegaTracker workflow を通じて理解してください:
- xr-frame の plane AR tracker は、本質的には VisionKit 6DoF plane 能力のラッパーです。
- 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 異常時にトリガーされます。