在 EasyAR 更新到 3.0 以後,發現 image tracking 時會有一種延遲的感覺
本以為是 EasyAR 3.0 自動做了 smooth 的效果(為了讓辨識的抖動減少)
但剛剛仔細看了一下 Unity 的 SDK,發現 ImageTrackerBehaviour 裡面有一個很奇怪的寫法
我發現 Unity 的腳本裡向 plugin 索取辨識結果是來自於這一行:
var pose = Utility.Matrix44FToMatrix4x4(targetInstance.pose());
接著會再把這個數值轉給 centerTransform:
centerTransform = pose.inverse;
但奇怪的是,把這個數值轉給 camera 的程式碼,卻是在取得 pose 之前
Utility.SetMatrixOnTransform(Camera.main.transform, centerTransform);
所以每個 frame 的攝影機位置,其實是上一禎的辨識結果,所以看起來才會有延遲的感覺
我把這行放到該 function 的最後,就解決這個問題了