在談?wù)揂R和VR系統(tǒng)時(shí),預(yù)測(cè)性追蹤是指預(yù)測(cè)對(duì)象或身體部位的未來(lái)方向和/或位置的過(guò)程。 例如,人們可能想要預(yù)測(cè)頭部的方向或手的位置。
尤瓦爾·博格(Yuval Boger)是Sensics的執(zhí)行總監(jiān)兼OSVR的聯(lián)合創(chuàng)始人。尤瓦爾與他的團(tuán)隊(duì)設(shè)計(jì)了OSVR的軟件平臺(tái)。他經(jīng)常都會(huì)在自己的博客上分享他的觀點(diǎn)和經(jīng)驗(yàn)。下面是 來(lái)自尤瓦爾的分享。
1. 為什么預(yù)測(cè)性追蹤很有用
預(yù)測(cè)性追蹤的一個(gè)常見(jiàn)用途是減少“運(yùn)動(dòng)到光子”延遲,這意味著運(yùn)動(dòng)到運(yùn)動(dòng)之間的時(shí)間,以及運(yùn)動(dòng)呈現(xiàn)在顯示器上的時(shí)間。由于運(yùn)動(dòng)到運(yùn)動(dòng)之間存在部分延遲,當(dāng)關(guān)于運(yùn)動(dòng)的信息最終投影在屏幕上時(shí),將預(yù)測(cè)的未來(lái)方向和位置作為更新屏幕的數(shù)據(jù)可以有效縮短感知延遲。
雖然人們十分關(guān)注針對(duì)虛擬現(xiàn)實(shí)應(yīng)用程序的預(yù)測(cè)性追蹤,但這項(xiàng)功能對(duì)增強(qiáng)現(xiàn)實(shí)也是非常重要,尤其是因?yàn)榇嬖谟脩?hù)在現(xiàn)實(shí)世界的瞬時(shí)移動(dòng),以及需要與增強(qiáng)現(xiàn)實(shí)的數(shù)字覆蓋進(jìn)行比較。比方說(shuō),你需要將數(shù)字影像疊加在物理對(duì)象中,這一數(shù)字疊加“鎖定”于物理對(duì)象將會(huì)變得尤為重要。攝像頭或許能識(shí)別對(duì)象,但攝像頭捕捉一幀需要時(shí)間,處理器確定對(duì)象位于一幀的位置需要時(shí)間,顯卡渲染數(shù)字疊加的新位置也需要時(shí)間。借助預(yù)測(cè)性追蹤,你可以減少數(shù)字疊加相對(duì)于真實(shí)世界的運(yùn)動(dòng)。
2. 預(yù)測(cè)性追蹤是如何工作的
如果你看到一輛汽車(chē)以恒定的速度行駛,并且想要預(yù)測(cè)一秒鐘后汽車(chē)的位置,那么你可能會(huì)做出相當(dāng)準(zhǔn)確的預(yù)測(cè)。你知道汽車(chē)的當(dāng)前位置,你可能還知道(或估計(jì))當(dāng)前的速度,因此你可以推斷一定時(shí)間后的汽車(chē)位置。
當(dāng)然,如果將你的預(yù)測(cè)與在一秒后的實(shí)際情況進(jìn)行對(duì)比,你的預(yù)測(cè)不太可能每次是100%準(zhǔn)確:在這段時(shí)間里,汽車(chē)可能改變方向或速度。預(yù)測(cè)時(shí)間的越短,預(yù)測(cè)就越準(zhǔn)確:預(yù)測(cè)汽車(chē)在一秒鐘后的位置可能比預(yù)測(cè)在一分鐘后的位置更 。
你對(duì)汽車(chē)及其行為的了解越多,預(yù)測(cè)準(zhǔn)確的機(jī)會(huì)就越大。例如,如果你不僅知道汽車(chē)速度,而且還知道加速度,你將可以進(jìn)行更準(zhǔn)確的預(yù)測(cè)。
如果你有關(guān)于追蹤對(duì)象行為的其他信息,這也可以提高預(yù)測(cè)精度。比如在進(jìn)行頭部追蹤時(shí),用戶(hù)頭部可能的旋轉(zhuǎn)速度和常用的旋轉(zhuǎn)速度可以改善追蹤模型。同樣,如果你正在進(jìn)行眼動(dòng)追蹤,你可以使用眼睛追蹤信息來(lái)預(yù)測(cè)頭部追蹤(在本文后面討論)。
3. 延遲的原因
之所以需要執(zhí)行預(yù)測(cè)性追蹤的原因在于,實(shí)際運(yùn)動(dòng)到運(yùn)動(dòng)之間存在一些延遲,以及將該運(yùn)動(dòng)的圖像呈現(xiàn)在顯示器上需要時(shí)間。延遲的來(lái)源包括很多,如:
· 感應(yīng)延遲:傳感器(例如陀螺儀)可能會(huì)因?yàn)閹捪拗贫粫?huì)立即報(bào)告方向或位置變化。類(lèi)似地,在攝像頭傳感器上的像素接收到來(lái)自追蹤對(duì)象的光和當(dāng)該幀準(zhǔn)備好發(fā)送到主處理器之間,基于攝像頭的傳感器可能會(huì)出現(xiàn)延遲。
· 處理延誤:傳感器數(shù)據(jù)通常會(huì)根據(jù)某種傳感器融合的算法組合在一起,而執(zhí)行該算法會(huì)在接收數(shù)據(jù)和算法輸出答案之間增加延遲。
· 數(shù)據(jù)平滑處理:傳感器數(shù)據(jù)有時(shí)存在噪聲點(diǎn),為避免錯(cuò)誤的抖動(dòng),需要執(zhí)行基于軟件或基于硬件的低通算法。
· 傳輸延遲:例如,如果使用USB連接的設(shè)備進(jìn)行方向感知,主機(jī)處理器的數(shù)據(jù)收集和通過(guò)USB傳輸數(shù)據(jù)之間需要一段時(shí)間才能完成。
· 渲染延遲:對(duì)于渲染復(fù)雜的嘲,處理器需要一定時(shí)間才能決定將每個(gè)像素放置在一幀上的位置,以及該幀何時(shí)準(zhǔn)備好發(fā)送到顯示器。
· 幀速率延遲:例如,如果顯示器的幀率為100Hz,那從一幀到下一幀的時(shí)間為10毫秒。
其中一些延遲非常小,但所有一切都會(huì)加起來(lái),從而出現(xiàn)較大的延遲。預(yù)測(cè)性追蹤以及諸如時(shí)間扭曲的其他技術(shù)有助于減少延遲。
4. 預(yù)測(cè)時(shí)間的長(zhǎng)短
答案是:視情況而定。你需要把預(yù)測(cè)系統(tǒng)端到端的延遲作為起點(diǎn),然后根據(jù)喜好優(yōu)化時(shí)間。
你可能需要在任何給定的時(shí)間內(nèi)預(yù)測(cè)未來(lái)的幾個(gè)時(shí)間點(diǎn)。以下是部分原因:
部分對(duì)象具有不同的端到端延遲。例如,與頭部追蹤器相比,通過(guò)攝像頭追蹤手部可能會(huì)出現(xiàn)不同的延遲,但兩者都需要在同一嘲中同步繪制。
在使用單屏幕(例如智能手機(jī)屏幕)來(lái)為雙眼提供圖像的配置中,通常情況下一只眼睛的圖像相對(duì)于另一只眼睛會(huì)出現(xiàn)半幀延遲(例如1/60秒的一半) ,或約8毫秒)。
5. 預(yù)測(cè)性算法的共性
以下是部分預(yù)測(cè)性追蹤算法:
航位推測(cè)法:這是一個(gè)非常簡(jiǎn)單的算法。如果在給定時(shí)間已知位置和速度(或角位置和角速度),預(yù)測(cè)位置會(huì)假設(shè)最后已知位置和速度正確,同時(shí)速度保持不變。例如,如果最后一個(gè)已知位置為100單位,最后一個(gè)已知速度為10單位/秒,則未來(lái)10毫秒的預(yù)測(cè)位置是100 + 10 x 0.01 = 100.1。雖然這是非常簡(jiǎn)單的計(jì)算,但它假定最后的位置和速度是準(zhǔn)確的(例如不受任何測(cè)量噪聲),速度是恒定的。然而,這兩個(gè)假設(shè)往往并不正確。
〃爾曼預(yù)測(cè):這是基于流行的卡爾曼濾波器。卡爾曼濾波器是一種用于時(shí)變線性系統(tǒng)的遞歸濾波器。這種濾波器是將過(guò)去的測(cè)量估計(jì)誤差合并到新的測(cè)量誤差中來(lái)估計(jì)將來(lái)的誤差。
Alpha-beta-gamma預(yù)測(cè):ABG預(yù)測(cè)與卡爾曼預(yù)測(cè)密切相關(guān),但不常見(jiàn),而所需數(shù)學(xué)更簡(jiǎn)單。ABG會(huì)不斷地估計(jì)速度和加速度,并將其用于預(yù)測(cè)。由于估算值會(huì)參考實(shí)際數(shù)據(jù),因此它們可以測(cè)量部分噪聲點(diǎn)。配置參數(shù)(alpha,beta和gamma)提供了強(qiáng)調(diào)響應(yīng)的能力,而非降噪。
預(yù)測(cè)性追蹤是一種有效的常用技術(shù),通常用于減少延遲。它提供了簡(jiǎn)單或復(fù)雜的實(shí)施方法,同時(shí)需要一些思考和分析。但對(duì)今天VR和AR系統(tǒng)實(shí)現(xiàn)低延遲追蹤來(lái)說(shuō),預(yù)測(cè)性追蹤至關(guān)重要。
投稿郵箱:chuanbeiol@163.com 詳情請(qǐng)?jiān)L問(wèn)川北在線:http://m.sanmuled.cn/