詳解VR/AR頭盔里的可預(yù)測(cè)追蹤技術(shù)
點(diǎn)擊:975
A+ A-
所屬頻道:新聞中心
在虛擬現(xiàn)實(shí)和增強(qiáng)現(xiàn)實(shí)系統(tǒng)環(huán)境中,可預(yù)測(cè)追蹤技術(shù)能夠?qū)δ硞€(gè)對(duì)象或身體某一部位的下一步方向和(或)位置進(jìn)行預(yù)測(cè)處理。給你舉個(gè)例子,當(dāng)你的頭部朝著某個(gè)方向轉(zhuǎn)動(dòng)時(shí),可以同步來(lái)預(yù)測(cè)你的手可能放置的位置。
為什么可預(yù)測(cè)追蹤技術(shù)如此有用?
可預(yù)測(cè)追蹤技術(shù)的一個(gè)常見(jiàn)應(yīng)用,就是減少“運(yùn)動(dòng)光子”延遲時(shí)間,所謂運(yùn)動(dòng)的光子延遲是指用戶(hù)在虛擬現(xiàn)實(shí)或增強(qiáng)現(xiàn)實(shí)環(huán)境下完成一個(gè)動(dòng)作,到該動(dòng)作被充分反映在顯示屏上的時(shí)間。由于運(yùn)動(dòng)本身就會(huì)產(chǎn)生一些延遲,而當(dāng)運(yùn)動(dòng)完成、信息展現(xiàn)在屏幕上時(shí)又會(huì)出現(xiàn)一段時(shí)延(更多引起時(shí)延的原因請(qǐng)參見(jiàn)下文),因此當(dāng)你能夠預(yù)測(cè)下一步方向和位置,然后將相關(guān)數(shù)據(jù)優(yōu)先更新到屏幕上,就可以大大縮短感知延遲。
雖然在虛擬現(xiàn)實(shí)應(yīng)用中,對(duì)于可預(yù)測(cè)追蹤技術(shù)的關(guān)注比較多,但其實(shí)該技術(shù)在增強(qiáng)現(xiàn)實(shí)領(lǐng)域里也同樣非常重要,特別是當(dāng)用戶(hù)在真實(shí)世界中發(fā)生瞬時(shí)移動(dòng),相應(yīng)的增強(qiáng)現(xiàn)實(shí)疊加也要在顯示屏上體現(xiàn)出來(lái)。舉個(gè)例子,如果你帶著一個(gè)增強(qiáng)現(xiàn)實(shí)頭盔,看到增強(qiáng)顯示的圖形疊加在實(shí)體對(duì)象的頂部,更重要的是,即使你旋轉(zhuǎn)了自己的頭庫(kù),增強(qiáng)現(xiàn)實(shí)環(huán)境中的“覆蓋物”需要依然“鎖定”在原來(lái)的那個(gè)對(duì)象上,而不是隨著你的頭部轉(zhuǎn)動(dòng)而轉(zhuǎn)動(dòng),它其實(shí)展示的是真實(shí)世界的一部分。對(duì)象或許可以被攝像頭識(shí)別,但是攝像頭可能需要耗費(fèi)一些時(shí)間來(lái)捕獲幀,以便處理器能夠判斷出這個(gè)對(duì)象在幀中的位置,然后圖形處理芯片需要再呈現(xiàn)疊加層上的新位置。而通過(guò)使用可預(yù)測(cè)追蹤技術(shù),相比于現(xiàn)實(shí)世界,在疊加層中運(yùn)動(dòng)處理能夠有所減少。
可預(yù)測(cè)追蹤技術(shù)如何工作?
如果你看到一輛汽車(chē)正在以恒定的速度行駛,然后你想要預(yù)測(cè)這輛汽車(chē)在下一秒后可能達(dá)到的位置似乎是一件非常簡(jiǎn)單的事情,而且不出意外的話(huà),預(yù)測(cè)的準(zhǔn)確度也會(huì)很高——因?yàn)槟悴坏肋@輛汽車(chē)的準(zhǔn)確位置,而且還知道它當(dāng)前的(或是估算的)行駛速度,所以有了這些條件之后,基本就能推斷出這輛汽車(chē)未來(lái)所處的位置在哪里。
當(dāng)然,如果你要預(yù)測(cè)這輛汽車(chē)在一秒鐘時(shí)間內(nèi)到底能開(kāi)到哪兒,那么這個(gè)預(yù)測(cè)可能無(wú)法做到每次都百分之百準(zhǔn)確,因?yàn)樵谶@段時(shí)間里,汽車(chē)可能會(huì)改變方向,也有可能會(huì)加速。因此對(duì)于汽車(chē)行駛預(yù)測(cè)而言,你嘗試預(yù)測(cè)的范圍越遠(yuǎn),預(yù)測(cè)的就會(huì)更不準(zhǔn)確。簡(jiǎn)單的說(shuō),如果讓你預(yù)測(cè)汽車(chē)在一秒鐘時(shí)間之后所在的位置,準(zhǔn)確度肯定比讓你預(yù)測(cè)汽車(chē)在一分鐘時(shí)間之后所在的位置要高。
此外,你對(duì)汽車(chē)本身情況了解的越多,那么預(yù)測(cè)準(zhǔn)確的機(jī)會(huì)也就越大。比如,你不僅要測(cè)量汽車(chē)的速度,還要測(cè)量它的加速度,繼而進(jìn)行更準(zhǔn)確的預(yù)測(cè)。
所以,假如你能夠獲得被追蹤物體對(duì)象更多的行為信息,那么也可以提高預(yù)測(cè)準(zhǔn)確度。在舉例說(shuō)明,當(dāng)你進(jìn)行頭部追蹤時(shí),如果能夠了解頭部旋轉(zhuǎn)的速度、以及可能旋轉(zhuǎn)的角度,那么就能進(jìn)一步優(yōu)化追蹤模型,從而做出更準(zhǔn)確的判斷。同樣地,假如你正在進(jìn)行眼球追蹤,那么也可以將獲取到的眼球追蹤信息用于預(yù)測(cè)頭部運(yùn)動(dòng)(這會(huì)在本文后詳細(xì)探討)。
導(dǎo)致時(shí)延的原因
VR頭盔延遲測(cè)試裝置
對(duì)于可預(yù)測(cè)追蹤技術(shù)的渴望,主要來(lái)自于虛擬現(xiàn)實(shí)和增強(qiáng)現(xiàn)實(shí)環(huán)境中的時(shí)延,通常這個(gè)時(shí)延是指用戶(hù)在現(xiàn)實(shí)世界中完成了一個(gè)動(dòng)作之后,該動(dòng)作(或是該動(dòng)作所產(chǎn)生的效果)要花多長(zhǎng)時(shí)間才能反映到顯示屏上。事實(shí)上,導(dǎo)致時(shí)延主要有以下幾個(gè)原因,比如:
感官延遲:傳感器(比如陀螺儀)可能受到帶寬限制,并且不會(huì)立即報(bào)告方向和位置變化信息。同樣地,基于攝像頭的傳感器也可能出現(xiàn)延遲,因?yàn)閿z像頭傳感器收到來(lái)自追蹤對(duì)象的光線(xiàn)像素,到對(duì)應(yīng)的幀準(zhǔn)備好被發(fā)送到主機(jī)處理器也需要一段時(shí)間,因此會(huì)造成時(shí)延。
處理延遲:傳感器數(shù)據(jù)通常會(huì)使用一些傳感器融合算法進(jìn)行整合,而如果執(zhí)行相關(guān)算法,那么在接收數(shù)據(jù)和到算法輸出答案之間也會(huì)造成時(shí)延。
為確保數(shù)據(jù)流暢,導(dǎo)致延遲:傳感器數(shù)據(jù)有時(shí)會(huì)比較雜亂,為了避免出現(xiàn)錯(cuò)誤,可能會(huì)執(zhí)行一些軟件或基于硬件的低通算法,雖然能夠在一定程度上提升數(shù)據(jù)流暢性,但會(huì)因?yàn)樗惴ㄙ|(zhì)量較低造成時(shí)延。
傳輸延遲:舉個(gè)例子,如果使用一個(gè) USB 互聯(lián)設(shè)備來(lái)進(jìn)行方向傳感器數(shù)據(jù)收集,那么在主機(jī)處理器收集數(shù)據(jù)和數(shù)據(jù)通過(guò) USB 傳輸數(shù)據(jù)之間會(huì)需要一定時(shí)間,造成時(shí)延。
渲染延遲:當(dāng)你要渲染一個(gè)復(fù)雜場(chǎng)景時(shí),對(duì)于處理器來(lái)說(shuō)可能需要花上一段時(shí)間來(lái)判斷(或決定)每一幀里面的每一個(gè)像素放在哪個(gè)位置,以及這一幀什么時(shí)候被發(fā)送到顯示屏上。
幀速率延遲:舉個(gè)例子,如果你使用的是 100Hz顯示屏,那么就意味著從一幀到下一幀所需要的時(shí)間大約為 10 毫秒。當(dāng)繪制特定像素時(shí),可能無(wú)法實(shí)時(shí)匹配當(dāng)前信息,因?yàn)槟阈枰仍撓袼乇粫?huì)繪制到顯示屏上,才能出現(xiàn)下一個(gè)像素。
上面提到的這些造成時(shí)延的原因,可能有一些只會(huì)導(dǎo)致非常小的時(shí)延感受,不過(guò)如果幾個(gè)問(wèn)題疊加起來(lái),可能就會(huì)帶來(lái)比較不好的用戶(hù)體驗(yàn)了。事實(shí)上,可預(yù)測(cè)追蹤技術(shù)(結(jié)合諸如時(shí)間規(guī)整算法等其他技術(shù))對(duì)于減少明顯時(shí)延非常有幫助。
距離預(yù)測(cè)未來(lái)究竟有多遠(yuǎn)?
實(shí)際上,上面這個(gè)問(wèn)題似乎沒(méi)有標(biāo)準(zhǔn)答案,因?yàn)樽罱K還是要看用戶(hù)的使用體驗(yàn)和感受,每個(gè)人的體感也都是不一樣的。一開(kāi)始,你可能會(huì)先估計(jì)系統(tǒng)端到端的時(shí)延,然后根據(jù)自己的喜好來(lái)優(yōu)化時(shí)間。
此外,在對(duì)未來(lái)某個(gè)給定時(shí)間段內(nèi)進(jìn)行預(yù)測(cè)時(shí),你可能需要將這段時(shí)間拆分成幾個(gè)預(yù)測(cè)時(shí)間段,為什么要這么做呢?我們用以下幾個(gè)例子來(lái)做下解釋?zhuān)?/p>
不同的對(duì)象有不同的端到端延遲。舉個(gè)例子,基于攝像頭的手部追蹤和基于攝像頭的頭部追蹤所表現(xiàn)出的時(shí)延就不一樣,但在某些虛擬現(xiàn)實(shí)或增強(qiáng)現(xiàn)實(shí)應(yīng)用場(chǎng)景下,你又需要將手部和頭部動(dòng)作同步起來(lái),所以你需要采用不同的預(yù)測(cè)追蹤時(shí)間,使得最終效果更加協(xié)調(diào)。
在配置用于雙眼圖像提供的單屏幕(比如智能手機(jī)屏幕)時(shí),對(duì)于單眼圖像顯示,也會(huì)出現(xiàn)半幀的延遲(比如,六十分之一秒的一半,或是大約 8 毫秒),一只眼睛會(huì)“先看到”圖像,然后該圖像才會(huì)反映到另一只眼睛上。所以在這種情況下,最好也能夠應(yīng)用可預(yù)測(cè)追蹤技術(shù),提前 8 毫秒時(shí)間進(jìn)行判斷,減少半屏延遲體驗(yàn)。
常見(jiàn)的預(yù)測(cè)算法
這里再介紹幾個(gè)可預(yù)測(cè)追蹤算法的例子:
導(dǎo)航推測(cè)算法:這其實(shí)是一個(gè)非常簡(jiǎn)單的算法,如果在給定時(shí)間內(nèi)位置和速度(或是角位置和角速度)都是已知的,而且在速度保持不變的情況下,速度值也不會(huì)有錯(cuò)誤,那么就可以計(jì)算出對(duì)象最后的“落腳點(diǎn)”,繼而進(jìn)行位置預(yù)測(cè)。舉個(gè)例子,如果最后一個(gè)所知位置是 100 單位,而最后所知的速度是每秒 10 單位,那么在未來(lái) 10 毫秒這段時(shí)間里,該對(duì)象的位置點(diǎn)就是 100+10*0.01=100.1。當(dāng)然,這是一個(gè)非常簡(jiǎn)單的計(jì)算,因?yàn)樗幸粋€(gè)假設(shè)前提,那就是位置和速度都是正確的(而且在主觀(guān)上也不會(huì)受到其他測(cè)量問(wèn)題的影響),同時(shí)速度也都是保持恒定。但事實(shí)上,所有這些假設(shè)在現(xiàn)實(shí)中幾乎都很難實(shí)現(xiàn)。
卡爾曼預(yù)測(cè)器:它是基于著名的卡爾曼濾波器,用于在已有系統(tǒng)運(yùn)行的數(shù)學(xué)模型中減少系統(tǒng)傳感器噪音的。如果你需要了解更多和卡爾曼濾波器有關(guān)的信息,請(qǐng)參見(jiàn)這里。
Alpha-beta-gamma:ABG 預(yù)測(cè)器和上文提到的卡爾曼預(yù)測(cè)器相關(guān)度很高,雖然數(shù)學(xué)應(yīng)用更簡(jiǎn)單,但是它的通用性卻比較一般。ABG 預(yù)測(cè)器會(huì)嘗試不斷估算速度和加速度,然后將這些數(shù)據(jù)應(yīng)用于預(yù)測(cè)。由于估值考慮到了實(shí)際數(shù)據(jù),所以他們減少一部分估值誤差。配置 alpha、beta 和 gamma 參數(shù)也增強(qiáng)了響應(yīng)能力。
可預(yù)測(cè)追蹤技術(shù)是一種非常有用的虛擬現(xiàn)實(shí)/增強(qiáng)現(xiàn)實(shí)技術(shù),而且也常用語(yǔ)減少表現(xiàn)時(shí)延問(wèn)題。該技術(shù)執(zhí)行起來(lái)雖然簡(jiǎn)單,但是對(duì)專(zhuān)業(yè)水平要求較高,所以需要你多做一些思考和分析,因?yàn)榫湍壳暗奶摂M現(xiàn)實(shí)和增強(qiáng)現(xiàn)實(shí)系統(tǒng)來(lái)說(shuō),減少時(shí)延是至關(guān)重要的。
(審核編輯: 林靜)
分享