【小箘學VR】預測追蹤與VR系統延遲
作為Sensics公司CEO兼OSVR平臺聯合創始人,Yuval與他的團隊設計了開源虛擬現實(OSVR)軟件平臺并構建了OSVR系統最關鍵的系統實現。另一方面,他經常會在自己的博客上分享自己對VR的觀點和知識,這一次,我們了解到的就是關于VR預測追蹤的內容。
在VR和AR系統中,預測追蹤涉及對一個物體或用戶身體的一部分的方向和位置變化的預測過程。舉例來說,Oculus開發的異步空間扭曲(ASW)就涉及對用戶頭部位置變化的預測。
預測追蹤的重要性
預測追蹤最常見的VR應用之一就是用來降低VR頭顯的運動畫面延遲,因為一般來說,如果頭顯傳感器檢測人的運動到最終顯示屏顯示出對應畫面的時間間隔大于20ms,人們就會感覺到畫面的滯后,從而導致頭暈。很明顯,從傳感器檢測數據傳輸到計算機進行處理然后進行顯示總需要一定時間,我們不可能完全消除這段時間差,但人的很多動作過程存在連續性,軟件可以預測運動軌跡,提前生成對應的畫面,這樣我們就能夠減少明顯可被感知的延遲了。
據VR箘的了解,現在有很多虛擬現實應用已經應用了預測追蹤技術,不過實際上它在增強現實領域也非常重要,因為有很多用戶在快速移動中仍然會同時看到現實場景和虛擬畫面疊加層并進行對比。想象一下,如果我們在AR頭顯中觀看一個投影到顯示物體表面的虛擬圖像,這個圖像即使在我們轉頭時仍然應該在視覺上與現實物體保持相對靜止,這樣才會讓我們感到它的確是這個物體的一部分。
增強現實一般使用Inside-Out進行定位,頭顯上的攝像頭需要對物體進行識別,不過攝像頭拍攝圖像,并使用處理器識別物體在圖像中的位置,然后在對應位置渲染虛擬畫面都需要時間。當我們應用預測追蹤,就可以提前開始渲染,緩解處理器的壓力。
預測追蹤的原理
先從理想化的條件開始說起,如果我們看到一輛勻速運動的汽車,想要預測它在1s后的位置,估計我們很容易就能得到相當正確的結果。我們知道汽車當前的位置,然后估計一個比較接近的速度,然后就能獲得短時間之后汽車的位置。
當然,一般來說我們的預測值與汽車在1s后的真實位置不可能總是100%相同:畢竟真實情況中汽車可能會在那段時間改變方向或者速度。基本的規律是,你想要預測的時間越遠,你的預測準確度就會急速下降:預測1s后汽車的位置變化很明顯比預測1分鐘后汽車的位置變化要準確很多。
另一點則在于采集的數據,你對汽車了解的越多,你的預測就越準確。例如,如果你不僅知道汽車的速度,還知道它的加速度,那么1s后的位置變化就更精準了。
因此,如果我們能夠采集到追蹤物體更多運動信息,預測追蹤的準確度也更精確。在追蹤用戶頭部運動時,如果我們知道人類頭部正常和極限的旋轉速度,就可以建立一個更精確的追蹤數據模型。同樣的,如果我們還要進行眼球追蹤,我們可以使用眼球追蹤數據增強頭部追蹤預測的可靠性。
造成延遲的原因
前面已經說過,預測追蹤的原因在于真實頭部運動到與這個運動對應的畫面顯示在VR屏幕中存在時間差。這個時間差的來源有很多,例如:
傳感器本身的延遲。傳感器(最常見的就是陀螺儀)受限于帶寬和本身數據采集的頻率,并沒有及時上傳運動數據。而光學感應元件也因為畫面刷新等問題沒有在接收來自追蹤物體的光的同時向處理器發送圖像。
處理器延遲。來自傳感器的數據通常會使用一些傳感器融合算法進行整合,當處理器接收這些數據之后,由于需要運行算法會產生一定延遲。
數據降噪延遲。傳感器的數據不可避免存在一些噪聲信號,為了避免錯誤數據影響體驗,我們需要使用軟件端或硬件端低通算法對其進行處理。
數據傳輸延遲。這一點當然也很好理解,數據以電信號作為傳輸載體,而無論采取什么手段,電信號的傳輸肯定存在一些延遲。
渲染延遲。渲染畫面,尤其是復雜場景,GPU需要花費一段時間才能完成工作,它們需要在將畫面幀傳輸到屏幕之前確定每個像素點的正確位置。
幀率延遲。如果一個顯示屏刷新率為100Hz,那么它顯示第一幀到第二幀之間必定存在10ms延遲。問題是GPU傳送的畫面幀在時間上并沒有與顯示屏刷新進行同步,有時候即使畫面幀已經傳送到顯示屏仍然需要等待一段時間才能顯示。
這里面大部分延遲都非常小,然而它們疊加起來就不容忽視了。而預測追蹤和其他技術,例如異步時間扭曲(ATW)能夠有效減少那些比較明顯的延遲。
預測的范圍有多遠?
關于這一點,VR箘只能表示看情況。由于VR系統存在多個追蹤物體,我們需要將不同物體作為單獨的預測起點,然后優化到理想的狀態。
為了保證穩定性,也許我們需要一直預測物體多個時間點的運動狀態,下面來解釋為什么這是必要的:
?現在系統中不同追蹤物體的延遲并不相同。例如基于相機的手勢追蹤與頭部追蹤的延遲不同,但它們出現在同一個場景中,需要進行同步繪制,這時候就需要用到多個時間點的預測追蹤結果。
?VR顯示屏有兩種形式,一種采用兩塊獨立屏幕,另一種則使用單一屏幕。后者,例如手機VR中,單一屏幕需要同時顯示兩只眼睛的圖像,然而屏幕是逐次顯示圖像,因此一只眼睛的圖像總是比另一只眼睛慢半幀(大約為8ms)。這樣的話,我們最好利用預測追蹤給另一只眼顯示8ms之后的圖像。
常見的預測算法:
下面是一些常見預測追蹤算法的例子:
航位推算法:這是一個比較簡單的算法,如果我們知道給定時間的位置和速度(或者角位置和角速度),假定最后測得的移動距離和方向沒有誤差,我們就可以推算出一定時間之后的位置。舉例來說,方向固定,已知最后的位置是100單位而最后測得的速度是10單位每秒,那么10ms之后的位置就是100.1單位。這是一個非常簡化的計算方法,因為它假設最后測得數據都是準確的,并且物體速度不變,而實際情況往往不是如此。
卡爾曼濾波:著名的卡爾曼濾波器一般用于去除傳感器噪聲,一般都有專門的數學模型,卡爾曼濾波的具體講解在英文維基百科上能夠找到。
ABG預測:ABG指的是阿爾法-貝塔-伽馬,它與卡爾曼預測關系也十分緊密,但通用性相對較差,而涉及到的數學也比較簡單。ABG通過連續不斷地估計速度和加速度參數進行預測。由于估算值會參考實際數據,因此它們可以測量部分噪聲點。配置參數(阿爾法-貝塔-伽馬)更注重響應能力,而非降噪。
如果我們想要減少那些明顯的延遲,預測追蹤是一個有效并且挺常用的技術。其實現手段有簡單的也有復雜的,需要進行一些數據分析,不過相信它對現在和未來的VR/AR系統延遲問題有很多幫助。
未經授權,禁止轉載,違者必將追究法律責任。
文章點評
相關閱讀
-
兼容移動VR頭顯的手機究竟有多少?
在全球28億臺智能手機中,只有1.91億臺(6.8%)能夠兼容主要的VR頭顯:Gear VR和谷歌Daydream。...
- 臉書公開新工具 360度視頻輕松制作
- 虛擬現實要上天!8月發射的VR衛星干什么用?
- 移動VR No.1究竟如何?GearVR控制器體驗
- 30億美元收購VR公司 Facebook卻搞起了AR平臺
- 震動已無法滿足 德國團隊用電刺激模擬VR觸覺