雷鋒網按:本文作者是 Sensics 公司首席執行官、OSVR 聯合創始人 Yuval。雷鋒網對其內容進行編譯。
在虛擬實境和增強現實系統環境中,可預測追蹤技術能夠對某個物件或身體某一部位的下一步方向和(或)位置進行預測處理。雷鋒網給你舉個例子,當你的頭部朝著某個方向轉動時,可以同步來預測你的手可能放置的位置。
為什麼可預測追蹤技術如此有用?
可預測追蹤技術的一個常見應用,就是減少“運動光子”延遲時間,所謂運動的光子延遲是指用戶在虛擬實境或增強現實環境下完成一個動作,到該動作被充分反映在顯示幕上的時間。由於運動本身就會產生一些延遲,而當運動完成、資訊展現在螢幕上時又會出現一段時延(更多引起時延的原因請參見下文),因此當你能夠預測下一步方向和位置,然後將相關資料優先更新到螢幕上,就可以大大縮短感知延遲。
雖然在虛擬實境應用中,對於可預測追蹤技術的關注比較多,但其實該技術在增強現實領域裡也同樣非常重要,特別是當用戶在真實世界中發生暫態移動,相應的增強現實疊加也要在顯示幕上體現出來。舉個例子,如果你帶著一個增強現實頭盔,看到增強顯示的圖形疊加在實體物件的頂部,更重要的是,即使你旋轉了自己的頭庫,增強現實環境中的“覆蓋物”需要依然“鎖定”在原來的那個物件上,而不是隨著你的頭部轉動而轉動,它其實展示的是真實世界的一部分。物件或許可以被攝像頭識別,但是攝像頭可能需要耗費一些時間來捕獲幀,以便處理器能夠判斷出這個物件在幀中的位置,然後圖形處理晶片需要再呈現疊加層上的新位置。而通過使用可預測追蹤技術,相比于現實世界,在疊加層中運動處理能夠有所減少。
可預測追蹤技術如何工作?
如果你看到一輛汽車正在以恒定的速度行駛,然後你想要預測這輛汽車在下一秒後可能達到的位置似乎是一件非常簡單的事情,而且不出意外的話,預測的準確度也會很高——因為你不但知道這輛汽車的準確位置,而且還知道它當前的(或是估算的)行駛速度,所以有了這些條件之後,基本就能推斷出這輛汽車未來所處的位置在哪裡。
當然,如果你要預測這輛汽車在一秒鐘時間內到底能開到哪兒,那麼這個預測可能無法做到每次都百分之百準確,因為在這段時間裡,汽車可能會改變方向,也有可能會加速。因此對於汽車行駛預測而言,你嘗試預測的範圍越遠,預測的就會更不準確。簡單的說,如果讓你預測汽車在一秒鐘時間之後所在的位置,準確度肯定比讓你預測汽車在一分鐘時間之後所在的位置要高。
此外,你對汽車本身情況瞭解的越多,那麼預測準確的機會也就越大。比如,你不僅要測量汽車的速度,還要測量它的加速度,繼而進行更準確的預測。
所以,假如你能夠獲得被追蹤物體物件更多的行為資訊,那麼也可以提高預測準確度。在舉例說明,當你進行頭部追蹤時,如果能夠瞭解頭部旋轉的速度、以及可能旋轉的角度,那麼就能進一步優化追蹤模型,從而做出更準確的判斷。同樣地,假如你正在進行眼球追蹤,那麼也可以將獲取到的眼球追蹤資訊用於預測頭部運動(這會在本文後詳細探討)。
導致時延的原因
VR頭盔延遲測試裝置
對於可預測追蹤技術的渴望,主要來自于虛擬實境和增強現實環境中的時延,通常這個時延是指用戶在現實世界中完成了一個動作之後,該動作(或是該動作所產生的效果)要花多長時間才能反映到顯示幕上。事實上,導致時延主要有以下幾個原因,比如:
感官延遲:感測器(比如陀螺儀)可能受到頻寬限制,並且不會立即報告方向和位置變化資訊。同樣地,基於攝像頭的感測器也可能出現延遲,因為攝像頭感測器收到來自追蹤物件的光線圖元,到對應的幀準備好被發送到主機處理器也需要一段時間,因此會造成時延。
處理延遲:感測器資料通常會使用一些感測器融合演算法進行整合,而如果執行相關演算法,那麼在接收資料和到演算法輸出答案之間也會造成時延。
為確保資料流程暢,導致延遲:感測器資料有時會比較雜亂,為了避免出現錯誤,可能會執行一些軟體或基於硬體的低通演算法,雖然能夠在一定程度上提升資料流程暢性,但會因為演算法品質較低造成時延。
傳輸延遲:舉個例子,如果使用一個 USB 互聯設備來進行方向感測器資料收集,那麼在主機處理器收集資料和資料通過 USB 傳輸資料之間會需要一定時間,造成時延。
渲染延遲:當你要渲染一個複雜場景時,對於處理器來說可能需要花上一段時間來判斷(或決定)每一幀裡面的每一個圖元放在哪個位置,以及這一幀什麼時候被發送到顯示幕上。
畫面播放速率延遲:舉個例子,如果你使用的是 100Hz顯示幕,那麼就意味著從一幀到下一幀所需要的時間大約為 10 毫秒。當繪製特定圖元時,可能無法即時匹配當前資訊,因為你需要等該圖元被會繪製到顯示幕上,才能出現下一個圖元。
上面提到的這些造成時延的原因,可能有一些隻會導致非常小的時延感受,不過如果幾個問題疊加起來,可能就會帶來比較不好的用戶體驗了。事實上,可預測追蹤技術(結合諸如時間規整演算法等其他技術)對於減少明顯時延非常有幫助。
距離預測未來究竟有多遠?
實際上,上面這個問題似乎沒有標準答案,因為最終還是要看用戶的使用體驗和感受,每個人的體感也都是不一樣的。一開始,你可能會先估計系統端到端的時延,然後根據自己的喜好來優化時間。
此外,在對未來某個給定時間段內進行預測時,你可能需要將這段時間拆分成幾個預測時間段,為什麼要這麼做呢?我們用以下幾個例子來做下解釋:
不同的物件有不同的端到端延遲。舉個例子,基於攝像頭的手部追蹤和基於攝像頭的頭部追蹤所表現出的時延就不一樣,但在某些虛擬實境或增強現實應用場景下,你又需要將手部和頭部動作同步起來,所以你需要採用不同的預測追蹤時間,使得最終效果更加協調。
在配置用於雙眼圖像提供的單螢幕(比如智慧手機螢幕)時,對於單眼圖像顯示,也會出現半幀的延遲(比如,六十分之一秒的一半,或是大約 8 毫秒),一隻眼睛會“先看到”圖像,然後該圖像才會反映到另一隻眼睛上。所以在這種情況下,最好也能夠應用可預測追蹤技術,提前 8 毫秒時間進行判斷,減少半屏延遲體驗。
常見的預測演算法
這裡再介紹幾個可預測追蹤演算法的例子:
導航推測演算法:這其實是一個非常簡單的演算法,如果在給定時間內位置和速度(或是角位置和角速度)都是已知的,而且在速度保持不變的情況下,速度值也不會有錯誤,那麼就可以計算出物件最後的“落腳點”,繼而進行位置預測。舉個例子,如果最後一個所知位置是 100 單位,而最後所知的速度是每秒 10 單位,那麼在未來 10 毫秒這段時間裡,該物件的位置點就是 100+10*0.01=100.1。當然,這是一個非常簡單的計算,因為它有一個假設前提,那就是位置和速度都是正確的(而且在主觀上也不會受到其他測量問題的影響),同時速度也都是保持恒定。但事實上,所有這些假設在現實中幾乎都很難實現。
卡爾曼預測器:它是基於著名的卡爾曼濾波器,用於在已有系統運行的數學模型中減少系統感測器噪音的。如果你需要瞭解更多和卡爾曼濾波器有關的資訊,請參見這裡。
Alpha-beta-gamma:ABG 預測器和上文提到的卡爾曼預測器相關度很高,雖然數學應用更簡單,但是它的通用性卻比較一般。ABG 預測器會嘗試不斷估算速度和加速度,然後將這些資料應用於預測。由於估值考慮到了實際資料,所以他們減少一部分估值誤差。配置 alpha、beta 和 gamma 參數也增強了回應能力。
可預測追蹤技術是一種非常有用的虛擬實境/增強現實技術,而且也常用語減少表現時延問題。該技術執行起來雖然簡單,但是對專業水準要求較高,所以需要你多做一些思考和分析,因為就目前的虛擬實境和增強現實系統來說,減少時延是至關重要的。
VIA
roadtovr