亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

使用交織合成第二眼睛視口的制作方法

文檔序號(hào):11291300閱讀:321來(lái)源:國(guó)知局
使用交織合成第二眼睛視口的制造方法與工藝



背景技術(shù):

近來(lái),計(jì)算機(jī)內(nèi)容越來(lái)越多地被轉(zhuǎn)移到云平臺(tái),在云平臺(tái),專用服務(wù)器通過(guò)廣域網(wǎng)繪制并且流式傳輸內(nèi)容至客戶端計(jì)算設(shè)備。在基于云的流媒體游戲的類型中,這樣的流媒體平臺(tái)使得服務(wù)提供商能夠集中數(shù)據(jù)中心服務(wù)器處的游戲中的圖形場(chǎng)景的繪制過(guò)程。服務(wù)器側(cè)繪制提供了幾個(gè)優(yōu)點(diǎn)。首先,客戶端計(jì)算設(shè)備可以利用強(qiáng)大的服務(wù)器gpu提供的高端圖形,以使得用戶能夠在不太強(qiáng)大的客戶端計(jì)算設(shè)備上享受高端圖形。第二,開發(fā)人員可以使其軟件專門針對(duì)數(shù)據(jù)中心服務(wù)器,以緩解平臺(tái)兼容性問(wèn)題并且提高平臺(tái)性能調(diào)整的效率。第三,集中到數(shù)據(jù)中心服務(wù)器增加了錯(cuò)誤修復(fù)、軟件更新、硬件更新和內(nèi)容添加的難易程度。最后,用戶可以選擇已經(jīng)加載在數(shù)據(jù)中心服務(wù)器上的大量?jī)?nèi)容,并且立即將該內(nèi)容流式傳輸?shù)狡淇蛻舳擞?jì)算設(shè)備。

基于云的流媒體平臺(tái)的一個(gè)缺點(diǎn)在于廣域網(wǎng)絡(luò)可能經(jīng)受由于網(wǎng)絡(luò)擁塞、分組丟失等導(dǎo)致的高的等待時(shí)間、以及/或者由用戶與服務(wù)器之間的大距離引起的持續(xù)地高的等待時(shí)間,這可能降低用戶實(shí)時(shí)體驗(yàn)流媒體內(nèi)容的能力,而沒(méi)有頻繁的停頓和延遲。當(dāng)前流媒體平臺(tái)嘗試通過(guò)使用內(nèi)容緩沖區(qū)來(lái)解決這個(gè)問(wèn)題。為了實(shí)現(xiàn)內(nèi)容緩沖區(qū),服務(wù)器將內(nèi)容流式傳輸?shù)娇蛻舳擞?jì)算設(shè)備,在客戶端計(jì)算設(shè)備處,內(nèi)容被放置到內(nèi)容緩沖區(qū)中,內(nèi)容緩沖區(qū)存儲(chǔ)內(nèi)容用于顯示給用戶。客戶端計(jì)算設(shè)備等待直到在播放給用戶之前已經(jīng)緩沖了足夠的內(nèi)容。在足夠的內(nèi)容被存儲(chǔ)在緩沖區(qū)中之后,內(nèi)容被顯示給用戶。當(dāng)內(nèi)容被顯示時(shí),緩沖區(qū)將重新填充有來(lái)自服務(wù)器的流媒體內(nèi)容。在沒(méi)有緩沖區(qū)的情況下,高的等待時(shí)間會(huì)導(dǎo)致播放暫停;然而,在具有緩沖區(qū)的情況下,不需要暫停播放,這是因?yàn)閮H在將數(shù)據(jù)流下載到緩沖區(qū)中時(shí)發(fā)生暫停。通過(guò)這種方式,流媒體內(nèi)容可以被播放給用戶而沒(méi)有感覺(jué)到延遲,這是因?yàn)橛捎诘却龝r(shí)間而導(dǎo)致的下載的延遲被緩沖區(qū)吸收。然而,雖然緩沖可以減少用戶對(duì)流媒體內(nèi)容中的延遲的感知,但是當(dāng)應(yīng)用于其中在客戶端計(jì)算設(shè)備處的用戶輸入被發(fā)送到服務(wù)器并且影響繪制的內(nèi)容的應(yīng)用(諸如游戲)時(shí),緩沖存在相當(dāng)大的缺點(diǎn)。在這些繪制應(yīng)用中,由于在計(jì)算設(shè)備處接收到內(nèi)容與向用戶顯示內(nèi)容之間的通信時(shí)間滯后,緩沖實(shí)際上可以增加用戶對(duì)等待時(shí)間的感知。由于在用戶輸入與顯示的內(nèi)容的響應(yīng)之間產(chǎn)生小的滯后,小的通信時(shí)間滯后可能對(duì)用戶造成煩擾。然而,大的通信時(shí)間滯后可能使這種網(wǎng)絡(luò)上的實(shí)時(shí)游戲變得令人沮喪并且不切實(shí)際。



技術(shù)實(shí)現(xiàn)要素:

為了解決這些問(wèn)題,提供了一種用于在使用交織來(lái)合成第二眼睛視口時(shí)使用以便降低帶寬成本的客戶端設(shè)備和方法??蛻舳嗽O(shè)備可以包括接收用戶輸入流的用戶輸入設(shè)備、立體顯示設(shè)備、處理器和保持用于客戶端應(yīng)用程序的指令的存儲(chǔ)設(shè)備,這些指令由處理器可執(zhí)行以在客戶端應(yīng)用程序的視圖插值模塊處獲取表示用于用戶的第一眼睛的場(chǎng)景的當(dāng)前視圖的當(dāng)前繪制的繪制表面和表示用于用戶的第二眼睛的場(chǎng)景的過(guò)去的視圖的先前繪制的繪制表面,基于當(dāng)前繪制的繪制表面和先前繪制的繪制表面來(lái)合成表示用于用戶的第二眼睛的場(chǎng)景的當(dāng)前視圖的當(dāng)前第二眼睛視口,并且在立體顯示設(shè)備上顯示合成的當(dāng)前第二眼睛視口。

提供本發(fā)明內(nèi)容以便以簡(jiǎn)化的形式介紹在下面的具體實(shí)施方式中進(jìn)一步描述的概念的選擇。本發(fā)明內(nèi)容不旨在標(biāo)識(shí)所要求保護(hù)的主題的主要特征或基本特征,也不旨在用于限制所要求保護(hù)的主題的范圍。此外,所要求保護(hù)的主題不限于解決在本公開的任何部分中指出的任何或所有缺點(diǎn)的實(shí)現(xiàn)。

附圖說(shuō)明

圖1是包括通過(guò)網(wǎng)絡(luò)與客戶端設(shè)備通信的服務(wù)器設(shè)備的一個(gè)實(shí)施例的計(jì)算系統(tǒng)的示意圖。

圖2a是對(duì)于標(biāo)準(zhǔn)云游戲平臺(tái)的響應(yīng)于用戶輸入從輸入到顯示的幀的幀時(shí)間的時(shí)間線。

圖2b是對(duì)于圖1的計(jì)算系統(tǒng)的一個(gè)實(shí)施例的響應(yīng)于用戶輸入從輸入到顯示的幀的幀時(shí)間的時(shí)間線。

圖3a是示出由圖1的繪制模塊繪制的較寬視場(chǎng)的圖形視圖。

圖3b是示出具有被包括在圖3a的繪制的較寬視場(chǎng)內(nèi)的實(shí)際查看區(qū)域的實(shí)際的用戶視點(diǎn)的圖形視圖。

圖3c是示出被包括在圖3b的實(shí)際查看區(qū)域內(nèi)的未顯示的繪制的像素?cái)?shù)據(jù)項(xiàng)的部分的圖形視圖。

圖4是圖1的繪制表面的透視圖實(shí)施例的圖示。

圖5是圖1的繪制表面的剪切的透視圖實(shí)施例的圖示。

圖6是用于圖4的透視圖實(shí)施例的預(yù)測(cè)的用戶取向的預(yù)測(cè)的查看區(qū)域的圖示。

圖7是用于圖4的透視圖實(shí)施例的實(shí)際的用戶取向的實(shí)際的查看區(qū)域的圖示。

圖8是圖1的繪制表面的邊緣實(shí)施例的圖示。

圖9是用于圖8的邊緣實(shí)施例的預(yù)測(cè)的用戶取向的預(yù)測(cè)的查看區(qū)域的圖示。

圖10是用于圖8的邊緣實(shí)施例的實(shí)際的用戶取向的實(shí)際的查看區(qū)域的圖示。

圖11是用于圖1的可能的備選脈沖輸入序列的圖形視圖和時(shí)間線。

圖12a至圖12d是示出圖11的備選脈沖輸入序列的俯視俯視圖。

圖13是用于圖11的備選脈沖輸入序列的子采樣和時(shí)移的圖形視圖和時(shí)間線。

圖14是示出用于被配置為計(jì)算預(yù)測(cè)的未來(lái)的導(dǎo)航輸入并且將未來(lái)的場(chǎng)景繪制到繪制表面的服務(wù)器設(shè)備的方法的流程圖。

圖15是具有由圖1的繪制模塊繪制的預(yù)測(cè)的用戶視點(diǎn)的場(chǎng)景的俯視透視圖。

圖16是示出可以從圖14的方法發(fā)生的用戶視點(diǎn)錯(cuò)誤預(yù)測(cè)的俯視透視圖。

圖17是用于填充由圖15的用戶視點(diǎn)錯(cuò)誤預(yù)測(cè)引起的視覺(jué)孔的空間插值方法的俯視透視圖。

圖18是用于填充由圖15的用戶視點(diǎn)中期預(yù)測(cè)引起的視覺(jué)孔的時(shí)間插值方法的俯視透視圖。

圖19是用于填充由圖15的用戶視點(diǎn)錯(cuò)誤預(yù)測(cè)引起的視覺(jué)孔的深度剝離方法的俯視透視圖。

圖20是示出被配置為從圖1的繪制的繪制表面重構(gòu)用于實(shí)際的用戶視點(diǎn)的視口的客戶端設(shè)備的方法的流程圖。

圖21是圖1的客戶端設(shè)備的頭戴式顯示器實(shí)施例的圖示。

圖22是對(duì)于圖21的hmd實(shí)施例的當(dāng)合成用于第二眼睛的視口時(shí)由于深度差異和瞳孔間距離而可能產(chǎn)生的視覺(jué)孔的俯視透視圖。

圖23是用于合成圖22的第二眼睛的視口的交織方法的圖形視圖。

圖24是示出可能由圖23的交織方法產(chǎn)生的視覺(jué)孔的圖形視圖。

圖25是示出用于被配置為從具有用于第一眼睛的用戶視點(diǎn)的繪制的繪制表面合成用于第二眼睛的視口的客戶端設(shè)備的方法的流程圖。

具體實(shí)施方式

圖1總體上示出了其中基于預(yù)測(cè)的未來(lái)的客戶端側(cè)導(dǎo)航輸入來(lái)執(zhí)行場(chǎng)景的服務(wù)器側(cè)繪制的計(jì)算系統(tǒng)10。通過(guò)預(yù)測(cè)未來(lái)的客戶端導(dǎo)航輸入,計(jì)算系統(tǒng)10不僅可以繪制具有適合于最新的用戶輸入的視場(chǎng)的場(chǎng)景,而且可以繪制適合于預(yù)測(cè)的未來(lái)的客戶端側(cè)導(dǎo)航輸入的較大的視場(chǎng)。如下面詳細(xì)地描述的,這個(gè)較大的視場(chǎng)被發(fā)送到客戶端設(shè)備,在客戶端設(shè)備處,可以基于在客戶端設(shè)備處接收到的最新的實(shí)際用戶輸入來(lái)適當(dāng)?shù)匦薷暮拖蛴脩麸@示這個(gè)較大的視場(chǎng)。這樣的方法提供了計(jì)算系統(tǒng)的清晰響應(yīng)性的潛在優(yōu)點(diǎn),從而減少了在用戶輸入與響應(yīng)于用戶輸入的服務(wù)器側(cè)繪制的內(nèi)容的顯示之間的用戶感覺(jué)到的等待時(shí)間。

計(jì)算系統(tǒng)10通常包括被配置為通過(guò)網(wǎng)絡(luò)16與服務(wù)器設(shè)備14通信的客戶端設(shè)備12,網(wǎng)絡(luò)16可以是諸如因特網(wǎng)等廣域網(wǎng)、或其他合適的計(jì)算機(jī)網(wǎng)絡(luò)??蛻舳嗽O(shè)備12包括處理器18、易失性存儲(chǔ)器20、非易失性存儲(chǔ)設(shè)備22、和被配置為從客戶端設(shè)備12的用戶接收用戶輸入的至少一個(gè)用戶輸入設(shè)備24。如下所述,非易失性存儲(chǔ)設(shè)備22保持由處理器18可執(zhí)行以執(zhí)行各種客戶端側(cè)功能的客戶端應(yīng)用程序26的指令。類似地,服務(wù)器設(shè)備14包括處理器28、易失性存儲(chǔ)器30和相關(guān)聯(lián)的非易失性存儲(chǔ)設(shè)備32。如下所述,非易失性存儲(chǔ)設(shè)備32保持由處理器28可執(zhí)行以執(zhí)行各種服務(wù)器側(cè)功能的服務(wù)器應(yīng)用程序34的指令。

在計(jì)算系統(tǒng)10中,客戶端設(shè)備12通常收集客戶端側(cè)用戶輸入,并且將該用戶輸入通過(guò)網(wǎng)絡(luò)轉(zhuǎn)發(fā)到服務(wù)器設(shè)備14,服務(wù)器設(shè)備14又基于用戶輸入來(lái)繪制內(nèi)容,并且將所繪制的內(nèi)容通過(guò)網(wǎng)絡(luò)16發(fā)送回客戶端設(shè)備12。如以上簡(jiǎn)要所述,通過(guò)網(wǎng)絡(luò)16傳播的數(shù)據(jù)可能經(jīng)歷由于網(wǎng)絡(luò)擁塞導(dǎo)致的傳輸延遲或由于設(shè)備故障導(dǎo)致的分組丟失,從而觸發(fā)tcp慢啟動(dòng)并且在tcp/ip協(xié)議下需要耗時(shí)的重傳或由用戶與服務(wù)器之間的較大距離引起的持續(xù)高的等待時(shí)間。因此,客戶端設(shè)備和服務(wù)器設(shè)備可以在高等待時(shí)間期間通過(guò)網(wǎng)絡(luò)16進(jìn)行通信。如下面詳細(xì)地描述的,為了減少客戶端設(shè)備處的用戶輸入與響應(yīng)服務(wù)器繪制的內(nèi)容在客戶端設(shè)備處的隨后的顯示之間的感知到的通信時(shí)間滯后,實(shí)現(xiàn)了一種預(yù)測(cè)繪制方案,其中服務(wù)器設(shè)備基于未來(lái)的預(yù)測(cè)的輸入狀態(tài)來(lái)繪制額外的內(nèi)容,并且客戶端設(shè)備基于當(dāng)前用戶輸入來(lái)執(zhí)行運(yùn)行時(shí)決策邏輯,以確定要顯示的繪制的內(nèi)容的特定部分,并且插值像素?cái)?shù)據(jù)項(xiàng)以填充由于所接收的繪制的內(nèi)容中的任何不足而留下的任何視覺(jué)孔。

首先轉(zhuǎn)到客戶端設(shè)備12,應(yīng)當(dāng)理解,客戶端設(shè)備12在用戶輸入緩沖區(qū)38處從用戶輸入設(shè)備24接收用戶輸入流36。用戶輸入緩沖區(qū)38存儲(chǔ)和組織用戶輸入流36并且將來(lái)自用戶輸入流36的當(dāng)前用戶導(dǎo)航輸入40發(fā)送到服務(wù)器設(shè)備14上的服務(wù)器應(yīng)用程序34。應(yīng)當(dāng)理解,作為若干示例,客戶端設(shè)備12可以是移動(dòng)計(jì)算設(shè)備(諸如,智能電話、平板計(jì)算機(jī)或頭戴式增強(qiáng)現(xiàn)實(shí)計(jì)算設(shè)備)、個(gè)人計(jì)算設(shè)備或游戲控制臺(tái)。例如,用戶輸入設(shè)備24可以是例如安裝到可佩戴的計(jì)算設(shè)備(諸如,頭戴式增強(qiáng)現(xiàn)實(shí)設(shè)備)的觸摸屏、鍵盤、鼠標(biāo)和/或傳感器(例如,陀螺儀、加速度計(jì)、深度相機(jī)和/或rgb相機(jī))。應(yīng)當(dāng)理解,諸如當(dāng)前用戶導(dǎo)航輸入40等導(dǎo)航輸入是由客戶端應(yīng)用26和服務(wù)器應(yīng)用34解釋以通過(guò)虛擬空間導(dǎo)航用戶的輸入。例如,客戶端應(yīng)用程序26和服務(wù)器應(yīng)用程序34可以被配置為包括占用二維游戲空間或三維游戲空間的虛擬世界的游戲。導(dǎo)航輸入可以由在客戶端應(yīng)用程序26和服務(wù)器應(yīng)用程序34中實(shí)現(xiàn)的程序邏輯來(lái)解釋,以使玩家角色能夠沿導(dǎo)航輸入指示的方向行進(jìn)通過(guò)游戲空間。還應(yīng)當(dāng)理解,用戶輸入還可以包括一個(gè)或多個(gè)實(shí)際的脈沖輸入41,它們是非導(dǎo)航輸入,諸如激活對(duì)象,激活能力等。例如,在第一人稱視角戰(zhàn)斗游戲的上下文中,脈沖輸入可能導(dǎo)致玩家角色揮動(dòng)武器,用武器攻擊,變?yōu)椴豢梢?jiàn),點(diǎn)燃火炬等。這些輸入本身不會(huì)導(dǎo)致玩家角色在游戲虛擬世界中的導(dǎo)航。

服務(wù)器應(yīng)用程序34又在預(yù)測(cè)模塊42處接收當(dāng)前用戶導(dǎo)航輸入40。預(yù)測(cè)模塊42計(jì)算預(yù)測(cè)的未來(lái)的導(dǎo)航輸入44。應(yīng)當(dāng)理解,作為若干示例,預(yù)測(cè)的未來(lái)的導(dǎo)航輸入44可以使用神經(jīng)網(wǎng)絡(luò)時(shí)間序列預(yù)測(cè)模型、線性和多項(xiàng)式回歸模型、或馬爾可夫模型來(lái)計(jì)算。如下所述,在一個(gè)示例性實(shí)施例中,應(yīng)用離散時(shí)間馬爾可夫鏈來(lái)計(jì)算預(yù)測(cè)的未來(lái)的導(dǎo)航輸入44。非導(dǎo)航實(shí)際脈沖輸入41也在服務(wù)器設(shè)備14處被接收。雖然這些輸入確實(shí)影響服務(wù)器應(yīng)用程序的應(yīng)用狀態(tài)47,但是在一個(gè)實(shí)施例中,它們不用于預(yù)測(cè)導(dǎo)航輸入,并且因此在圖中未被示出為被傳遞給預(yù)測(cè)模塊42,但是被示出為通常被服務(wù)器應(yīng)用程序34接收。

在可以由預(yù)測(cè)模塊42實(shí)現(xiàn)的一個(gè)示例馬爾科夫模型中,時(shí)間被量化,每個(gè)離散間隔表示服務(wù)器應(yīng)用程序34的時(shí)鐘刻度。隨機(jī)變量導(dǎo)航向量nt表示在時(shí)間t的3-d轉(zhuǎn)換和旋轉(zhuǎn)的變化:nt={δx,t,δy,t,δz,t,θx,t,θy,t,θz,t}。上述每個(gè)分量被量化。nt表示作為當(dāng)前用戶導(dǎo)航輸入40從客戶端接收的實(shí)際經(jīng)驗(yàn)導(dǎo)航向量。預(yù)測(cè)模塊42計(jì)算狀態(tài)估計(jì)問(wèn)題以找到最大似然估計(jì)其中λ是在客戶端設(shè)備12與服務(wù)器設(shè)備14之間在網(wǎng)絡(luò)16上的往返時(shí)間(rtt)。

使用馬爾科夫模型,導(dǎo)航向量在下一時(shí)間步長(zhǎng)的概率分布僅取決于當(dāng)前時(shí)間步長(zhǎng)的導(dǎo)航向量:p(nt+1|nt)。預(yù)測(cè)模塊42將下一時(shí)間步長(zhǎng)的最可能的導(dǎo)航向量預(yù)測(cè)為:

其中nt=nt指示通過(guò)對(duì)實(shí)際用戶輸入nt進(jìn)行采樣而向當(dāng)前時(shí)間步長(zhǎng)分配固定值。在很多情況下,rtt長(zhǎng)于單個(gè)時(shí)間步長(zhǎng)(例如,32ms)。為了處理這種情況,預(yù)測(cè)模塊42將一個(gè)rtt之后的最可能的值預(yù)測(cè)為:

其中λ表示以時(shí)鐘刻度為單位表示的rtt等待時(shí)間。

已經(jīng)發(fā)現(xiàn),當(dāng)由預(yù)測(cè)模塊42實(shí)現(xiàn)時(shí),上述馬爾科夫模型具有令人滿意的效果,即nt+1無(wú)記憶性(即,獨(dú)立于過(guò)去的給定的nt)并且附加的用戶輸入歷史(以更長(zhǎng)的馬爾科夫鏈的形式)在預(yù)測(cè)精度方面沒(méi)有示出可測(cè)量的好處。預(yù)測(cè)模塊42獨(dú)立地對(duì)待向量n的每個(gè)分量,并且構(gòu)建六個(gè)單獨(dú)的模型。這種方法的有益效果是,在估計(jì)n時(shí)需要較少的訓(xùn)練,并且已經(jīng)發(fā)現(xiàn),獨(dú)立地對(duì)待向量分量不會(huì)損害預(yù)測(cè)精度。

在計(jì)算預(yù)測(cè)的用戶導(dǎo)航輸入44之后,預(yù)測(cè)模塊42基于在服務(wù)器設(shè)備與客戶端設(shè)備之間的在通信滯后時(shí)間(例如,一個(gè)rrt)內(nèi)的應(yīng)用狀態(tài)47的當(dāng)前應(yīng)用狀態(tài)來(lái)確定可能發(fā)生的不同排列的脈沖輸入的多個(gè)備選脈沖輸入序列46。如上所述,脈沖輸入是非導(dǎo)航用戶輸入,諸如揮舞武器,用武器攻擊,激活諸如火炬等對(duì)象,激活諸如不可見(jiàn)性等能力,等等。在一個(gè)示例性實(shí)施例中,預(yù)測(cè)模塊42考慮可能在一個(gè)rtt中發(fā)生的所有可能的脈沖輸入序列。例如,根據(jù)服務(wù)器應(yīng)用程序34和客戶端應(yīng)用程序26的程序邏輯,用戶可以在客戶端應(yīng)用程序26的每個(gè)時(shí)鐘刻度處激活發(fā)射武器的脈沖輸入。因此,如果rtt是兩個(gè)時(shí)鐘刻度,則預(yù)測(cè)模塊42考慮與以下各項(xiàng)相對(duì)應(yīng)的脈沖輸入序列:在兩個(gè)時(shí)鐘刻度處發(fā)射武器,以及在第一時(shí)鐘刻度而不是第二個(gè)時(shí)鐘刻度處發(fā)射武器,不在第一時(shí)鐘刻度處發(fā)射武器而是在第二時(shí)鐘刻度處發(fā)射武器,或者不在任何時(shí)鐘刻度處發(fā)射武器。因此,這四種備選的可能性將被包括在多個(gè)備選的脈沖輸入序列46內(nèi)。在網(wǎng)絡(luò)等待時(shí)間較長(zhǎng)的情況下,諸如如果rtt是8個(gè)時(shí)鐘刻度長(zhǎng),則可能的脈沖輸入序列的狀態(tài)空間可能變得不合需要地大。

為了減少可能在一個(gè)rtt期間發(fā)生的可能的備選脈沖輸入序列的數(shù)目,預(yù)測(cè)模塊42通常僅允許脈沖輸入激活以大于服務(wù)器應(yīng)用程序34和客戶端應(yīng)用程序26的一個(gè)時(shí)鐘刻度的子采樣周期σ來(lái)發(fā)生。該子采樣將預(yù)測(cè)模塊42考慮的所有可能的脈沖輸入序列的狀態(tài)空間減小到2λ/σ。

預(yù)測(cè)模塊42將預(yù)測(cè)的未來(lái)的導(dǎo)航輸入44和多個(gè)備選脈沖輸入序列46發(fā)送到繪制模塊48。繪制模塊48從繪制表面庫(kù)52中檢索多個(gè)繪制表面50?;陬A(yù)測(cè)的未來(lái)的導(dǎo)航輸入44、多個(gè)備選脈沖輸入序列46、以及服務(wù)器應(yīng)用程序34的應(yīng)用狀態(tài)47的當(dāng)前應(yīng)用狀態(tài),繪制模塊48將具有預(yù)測(cè)的用戶視點(diǎn)的多個(gè)未來(lái)的場(chǎng)景繪制到多個(gè)繪制表面50和相應(yīng)的多個(gè)深度圖51。每個(gè)深度圖51包含表示從與預(yù)測(cè)的用戶視點(diǎn)相對(duì)應(yīng)的點(diǎn)到每個(gè)繪制的繪制表面中的每個(gè)像素(或像素組)的在虛擬世界(游戲空間)中的距離的深度值。繪制模塊48將繪制的繪制表面54發(fā)送到聯(lián)合編碼器56。期望預(yù)測(cè)的未來(lái)的導(dǎo)航輸入44將不總是完全匹配從用戶輸入的實(shí)際導(dǎo)航輸入。為了解決用戶視點(diǎn)錯(cuò)誤預(yù)測(cè),繪制模塊48使用比客戶端設(shè)備12處的客戶端應(yīng)用程序26的視口大的視場(chǎng)來(lái)繪制未來(lái)的場(chǎng)景。通過(guò)使用更大的視場(chǎng)來(lái)繪制,即使實(shí)際的用戶視點(diǎn)具有與預(yù)測(cè)的用戶視點(diǎn)不同的取向,諸如用戶正在比預(yù)測(cè)更遠(yuǎn)地向右看,實(shí)際的用戶視點(diǎn)具有高的概率仍然被包含在繪制的較大視場(chǎng)內(nèi)。當(dāng)使用更大的視場(chǎng)來(lái)繪制時(shí),多個(gè)繪制表面50不一定像游戲應(yīng)用的視口中一樣是矩形的。在一些實(shí)施例中,多個(gè)繪制表面可以是立方體圖、剪切的立方體圖、邊緣、四面體或其他類型的繪制表面。

為了執(zhí)行繪制,繪制模塊48的示例性實(shí)施例創(chuàng)建多個(gè)從屬實(shí)例,每個(gè)從屬實(shí)例是原始服務(wù)器應(yīng)用程序34的修改實(shí)例。從屬實(shí)例被配置為根據(jù)服務(wù)器應(yīng)用程序34的程序邏輯來(lái)執(zhí)行預(yù)測(cè)的未來(lái)的導(dǎo)航輸入44以及來(lái)自多個(gè)備選脈沖輸入序列46的一個(gè)備選脈沖輸入序列。對(duì)于每個(gè)從屬實(shí)例,基于預(yù)測(cè)的未來(lái)的導(dǎo)航輸入44來(lái)確定預(yù)測(cè)的用戶視點(diǎn)。在執(zhí)行服務(wù)器應(yīng)用程序的程序邏輯之后,每個(gè)從屬實(shí)例基于其接收到的應(yīng)用狀態(tài)47的當(dāng)前應(yīng)用狀態(tài)和備選脈沖輸入序列將來(lái)自預(yù)測(cè)的用戶視點(diǎn)的其自己的未來(lái)的場(chǎng)景繪制到繪制表面,并且創(chuàng)建未來(lái)的場(chǎng)景的相應(yīng)的深度圖。在繪制之后,每個(gè)從屬場(chǎng)景將其自己的繪制的繪制表面和深度映射表發(fā)送到繪制模塊48中的主進(jìn)程。主進(jìn)程可以取決于rtt的長(zhǎng)度來(lái)改變從屬實(shí)例的數(shù)目,并且負(fù)責(zé)轉(zhuǎn)發(fā)由每個(gè)從屬實(shí)例完成的繪制用于由聯(lián)合編碼器56進(jìn)行下游處理。

應(yīng)當(dāng)理解,并不是所有脈沖輸入和導(dǎo)航輸入的推測(cè)性序列都將是正確的,并且實(shí)際上也可能沒(méi)有一個(gè)推測(cè)性序列是正確的。因此,從屬實(shí)例可能已經(jīng)執(zhí)行作為錯(cuò)誤預(yù)測(cè)的脈沖輸入和導(dǎo)航輸入的推測(cè)性序列,并且將具有不正確的應(yīng)用狀態(tài)。為了解決這個(gè)問(wèn)題,系統(tǒng)可以使用以下技術(shù)中的一種或多種來(lái)將不正確的從屬實(shí)例回滾到正確的應(yīng)用狀態(tài):頁(yè)面級(jí)檢查點(diǎn)、對(duì)象級(jí)檢查點(diǎn)和恢復(fù)功能。

對(duì)于頁(yè)面級(jí)檢查點(diǎn),服務(wù)器應(yīng)用程序保持與服務(wù)器應(yīng)用程序的過(guò)去的應(yīng)用狀態(tài)相對(duì)應(yīng)的存儲(chǔ)器的頁(yè)面的副本,以便在當(dāng)前應(yīng)用狀態(tài)是由導(dǎo)航輸入和脈沖輸入的不正確的推測(cè)性輸入序列導(dǎo)致的情況下回滾到過(guò)去的應(yīng)用狀態(tài)。為了實(shí)現(xiàn)這一點(diǎn),服務(wù)器應(yīng)用程序?qū)崿F(xiàn)頁(yè)面級(jí)的寫時(shí)復(fù)制。在導(dǎo)航輸入或脈沖輸入的推測(cè)性序列開始時(shí),服務(wù)器應(yīng)用程序?qū)⑺许?yè)面標(biāo)記為只讀。當(dāng)出現(xiàn)頁(yè)面錯(cuò)誤時(shí),服務(wù)器應(yīng)用程序會(huì)復(fù)制原始頁(yè)面,并且將故障頁(yè)面的保護(hù)級(jí)別設(shè)置為讀寫。當(dāng)新的輸入到達(dá)時(shí),服務(wù)器應(yīng)用程序?qū)o(wú)效并且丟棄與新的輸入不匹配的推測(cè)性輸入序列。為了回滾到檢查點(diǎn),服務(wù)器應(yīng)用程序使用其創(chuàng)建的原始頁(yè)面的副本來(lái)復(fù)制回原始內(nèi)容。服務(wù)器應(yīng)用程序丟棄自上一檢查點(diǎn)以來(lái)由于新的對(duì)象分配而創(chuàng)建的任何頁(yè)面。另外,在推測(cè)性序列期間由刪除的對(duì)象產(chǎn)生的頁(yè)面解除分配被推遲,這是因?yàn)槿绻茰y(cè)性序列不正確,則那些被刪除的對(duì)象可能需要被恢復(fù)。

對(duì)于對(duì)象級(jí)檢查點(diǎn),每個(gè)對(duì)象的生命周期由服務(wù)器應(yīng)用程序來(lái)跟蹤。為了回滾推測(cè)性序列,在檢查點(diǎn)被回滾時(shí)不存在的對(duì)象將被刪除,并且自檢查點(diǎn)被回滾以來(lái)在不正確的推測(cè)性序列期間被刪除的對(duì)象將被恢復(fù)。

在從繪制模塊48接收到繪制的繪制表面54之后,聯(lián)合編碼器56對(duì)繪制的繪制表面54聯(lián)合編碼,并且將編碼的繪制的繪制表面58通過(guò)網(wǎng)絡(luò)16發(fā)送到客戶端設(shè)備12處的解碼器60。在示例性實(shí)施例中,聯(lián)合編碼器56將繪制的繪制表面54劃分成宏塊(例如,64×64位)。聯(lián)合編碼器的搜索處理標(biāo)識(shí)在幀內(nèi)、幀間和跨與每個(gè)從屬實(shí)例相對(duì)應(yīng)的繪制的繪制表面的不同流等效(在有損域中)的宏塊。聯(lián)合編碼器56的編碼的目的是減少表示編碼的繪制的繪制表面的數(shù)據(jù)量,以增加數(shù)據(jù)傳輸?shù)乃俣炔⑶覝p少帶寬消耗,這有助于降低用戶在客戶端設(shè)備12處對(duì)等待時(shí)間的感知。

在客戶端設(shè)備12的解碼器60處,編碼的繪制的繪制表面58被解碼,并且解碼的繪制的繪制表面61被發(fā)送到視圖插值模塊62。視圖插值模塊62另外接收來(lái)自預(yù)測(cè)模塊42的多個(gè)備選脈沖輸入序列46和來(lái)自繪制模塊48的多個(gè)深度圖51。

用戶輸入緩沖區(qū)38在來(lái)自用戶輸入設(shè)備24的用戶輸入流38中接收隨后的用戶導(dǎo)航輸入64和隨后的脈沖輸入序列66,并且向視圖插值模塊62發(fā)送隨后的用戶導(dǎo)航輸入64和隨后的脈沖輸入序列66。因此,應(yīng)當(dāng)理解,多個(gè)備選脈沖輸入序列46、編碼的繪制的繪制表面58、和從服務(wù)器設(shè)備14接收的深度圖51以量化時(shí)間步長(zhǎng)(例如,t=0)基于用戶輸入來(lái)計(jì)算和預(yù)測(cè),用戶輸入對(duì)于服務(wù)器設(shè)備是當(dāng)前的但是由于客戶端服務(wù)器通信中的時(shí)滯現(xiàn)在對(duì)于客戶端設(shè)備是過(guò)去的輸入。還應(yīng)當(dāng)理解,從用戶輸入緩沖區(qū)38接收的隨后的用戶導(dǎo)航輸入和隨后的脈沖輸入序列66表示來(lái)自稍后的量化的時(shí)間步長(zhǎng)(例如,t=1)的用戶輸入,其是在客戶端設(shè)備處接收的最當(dāng)前的用戶輸入。

視圖插值模塊62被配置為從基于隨后的脈沖輸入序列66(即,對(duì)應(yīng)于其)的多個(gè)備選脈沖輸入序列46中選擇備選脈沖輸入序列。在示例性實(shí)施例中,視圖插值模塊62被配置為將多個(gè)備選脈沖輸入序列46中的每個(gè)備選脈沖輸入序列與隨后的脈沖輸入序列66相比較,并且確定哪個(gè)備選脈沖輸入序列與隨后的脈沖輸入序列66相匹配。因此,例如,如果電流脈沖輸入序列66被輸入以連續(xù)地發(fā)射武器兩次,則選擇與連續(xù)地發(fā)射武器兩次相對(duì)應(yīng)的備選脈沖輸入序列66。

視圖插值模塊62還被配置為選擇與所選擇的備選脈沖輸入序列相對(duì)應(yīng)的繪制的繪制表面。視圖插值模塊62基于多個(gè)深度圖51和隨后的用戶導(dǎo)航輸入,通過(guò)從所選擇的繪制的繪制表面重新投影到客戶端應(yīng)用程序26的視口來(lái)重構(gòu)實(shí)際的用戶視點(diǎn)的視口。視圖插值模塊62發(fā)送重構(gòu)的視口68以在顯示設(shè)備70上顯示。

因此,客戶端應(yīng)用程序26被配置為與服務(wù)器應(yīng)用程序34通信,以將用戶輸入發(fā)送到服務(wù)器設(shè)備14并且響應(yīng)于來(lái)自服務(wù)器應(yīng)用程序34的下載預(yù)測(cè)性繪制內(nèi)容,并且對(duì)預(yù)測(cè)性繪制內(nèi)容進(jìn)行基于圖像的繪制技術(shù)以響應(yīng)于用戶當(dāng)前輸入來(lái)重構(gòu)和顯示繪制的視口。

現(xiàn)在轉(zhuǎn)到圖2a,示出了用于標(biāo)準(zhǔn)云游戲平臺(tái)的客戶端-服務(wù)器通信流程。在這樣的標(biāo)準(zhǔn)云游戲平臺(tái)中,作為從客戶端設(shè)備接收到用戶輸入的時(shí)刻到對(duì)應(yīng)于該用戶輸入的幀被繪制和顯示的時(shí)刻所經(jīng)過(guò)的時(shí)間的幀時(shí)間必須包括完整的rtt。這是由于以下固有事實(shí):在這樣的云游戲平臺(tái)中,服務(wù)器無(wú)法開始繪制幀,直到其接收到該幀的用戶輸入,這占據(jù)了一半的rtt。在繪制幀之后,然后客戶端設(shè)備將占用另一半rrt來(lái)通過(guò)網(wǎng)絡(luò)接收幀。因此,無(wú)論服務(wù)器繪制幀多快,從用戶輸入命令的時(shí)間到用戶可以看到該輸入的結(jié)果的時(shí)間的幀時(shí)間是至少一個(gè)rtt。如果網(wǎng)絡(luò)上的rtt長(zhǎng),則幀時(shí)間將變得不切實(shí)際,并且阻礙用戶對(duì)內(nèi)容的體驗(yàn)。

圖2b示出了圖1所示的配置的系統(tǒng)10的客戶端-服務(wù)器通信流程。利用該配置,用戶在時(shí)間t0類似地錄入輸入0。輸入0將占用一半的rtt在服務(wù)器設(shè)備處被接收。然而,在t2,并非繪制輸入0的幀,服務(wù)器設(shè)備基于用戶輸入0來(lái)預(yù)測(cè)用戶輸入1-5。服務(wù)器設(shè)備然后繪制與該輸入序列相對(duì)應(yīng)的幀,并且將該繪制的幀5發(fā)送到客戶端設(shè)備。幀5占用一半的rtt來(lái)通過(guò)網(wǎng)絡(luò)傳播并且在客戶端設(shè)備處被接收。應(yīng)當(dāng)理解,在用戶甚至錄入輸入5之前,客戶端設(shè)備已經(jīng)從服務(wù)器設(shè)備接收到與預(yù)測(cè)輸入5相對(duì)應(yīng)的繪制的幀。因此,在用戶輸入實(shí)際輸入5之后,客戶端設(shè)備通過(guò)從繪制的幀5重新投影到實(shí)際用戶輸入5的視口來(lái)重構(gòu)實(shí)際用戶輸入5的視口,以校正由服務(wù)器設(shè)備進(jìn)行的任何錯(cuò)誤預(yù)測(cè)。然后重構(gòu)的視口可以被顯示給用戶。從用戶的角度來(lái)看,從該用戶輸入實(shí)際輸入5到示出與實(shí)際輸入5相對(duì)應(yīng)的繪制視口的幀時(shí)間是可忽略的短時(shí)間。應(yīng)當(dāng)理解,圖2(b)描繪了用戶輸入流和所顯示的視口流,使得對(duì)應(yīng)于輸入0的視口與發(fā)送到服務(wù)器設(shè)備的輸入0一起也被顯示給用戶,其中輸入0的視口從基于從時(shí)間t-4、t-3、t-2和t-1的預(yù)測(cè)的用戶輸入繪制的繪制的幀來(lái)重構(gòu)。

可以由服務(wù)器設(shè)備進(jìn)行的一種類型的錯(cuò)誤預(yù)測(cè)是用戶取向的錯(cuò)誤預(yù)測(cè)。圖3(a)描繪了具有導(dǎo)致預(yù)測(cè)的查看區(qū)域300的預(yù)測(cè)的用戶視點(diǎn)的3d空間。如圖3(a)所示為了解決用戶取向錯(cuò)誤預(yù)測(cè)的可能性,而不是僅為客戶端設(shè)備上的客戶端應(yīng)用程序的視口繪制預(yù)測(cè)的查看區(qū)域300,更寬的視場(chǎng)302使用在預(yù)測(cè)的查看區(qū)域300之外的繪制的非顯示部分301來(lái)被繪制,并且因此將在以預(yù)測(cè)的查看區(qū)域300為中心的客戶端應(yīng)用程序的視口之外。在接收到隨后的用戶導(dǎo)航輸入之后,可以確定實(shí)際的用戶視點(diǎn)。如果實(shí)際的用戶視點(diǎn)與預(yù)測(cè)的用戶視點(diǎn)相同,則可以將預(yù)測(cè)的查看區(qū)域300安全地顯示給用戶,而不改變,并且不向用戶顯示繪制的未顯示區(qū)域301。然而,實(shí)際的用戶視點(diǎn)可能偏離預(yù)測(cè)的用戶視點(diǎn)。例如,如圖3(b)所示,與預(yù)測(cè)的用戶視點(diǎn)相比,用戶的頭部可以以略微不同的方式(在圖中略微向右)被定位和定向。這種偏差在本文中被稱為用戶取向中期預(yù)測(cè)。如圖3(b)所示,如果僅繪制預(yù)測(cè)的查看區(qū)域300,則客戶端設(shè)備將不具有足夠的可視數(shù)據(jù)來(lái)重構(gòu)實(shí)際查看區(qū)域304的視口。然而,如圖3(c)所示,由于根據(jù)上述技術(shù)來(lái)繪制更寬的視場(chǎng)302,所以在預(yù)測(cè)的查看區(qū)域之外的實(shí)際查看區(qū)域的部分303仍然被包含在繪制的更寬的視場(chǎng)302內(nèi)。因此,包括與實(shí)際查看區(qū)域304的部分303相對(duì)應(yīng)的繪制的非顯示區(qū)域301的部分在內(nèi)的繪制的更寬的視場(chǎng)302可以被重新投影到實(shí)際查看區(qū)域304的客戶端應(yīng)用的視口,并且被顯示給用戶,而不要求服務(wù)器設(shè)備重新繪制場(chǎng)景。應(yīng)當(dāng)理解,盡管查看區(qū)域被示意性地示出為圓形,但是查看區(qū)域可以是很多不同種類的形狀,諸如對(duì)應(yīng)于客戶端應(yīng)用程序的視口的矩形。另外,雖然繪制的更寬的視場(chǎng)也被示意性地描繪為圓形,但是它也可以具有很多不同種類的形狀,諸如立方體圖、剪切的立方體圖、邊緣、四面體等。

當(dāng)在3d空間中繪制到更寬的視場(chǎng)時(shí),可以使用諸如立方體圖、剪切的立方體圖、邊緣、四面體等繪制表面。通過(guò)關(guān)于在立方體圖定義的立方體之內(nèi)的視點(diǎn)的方向,圖4示出了立方體圖繪制表面的實(shí)施例,其具有前平面、左平面、右平面、上平面、下平面、和未示出的背平面。使用6個(gè)面的完整立方體圖,用戶視點(diǎn)完全被包括在立方體圖中,并且任何用戶取向的視口可以從繪制的立方體圖來(lái)重構(gòu)。

通常,繪制到立方體圖的所有6個(gè)面是不必要的,因?yàn)閷?shí)際的用戶視點(diǎn)不太可能偏離預(yù)測(cè)的用戶視點(diǎn),以明顯需要在當(dāng)前用戶視角的相反方向的繪制。剪切的立方體圖的實(shí)施例如圖5所示。在剪切的立方體圖的本實(shí)施例中,在預(yù)測(cè)的用戶視點(diǎn)的方向上的立方體的前平面被完全繪制。然而,僅繪制左平面、右平面、上平面和下平面的部分。圖5中的虛線標(biāo)記用于示例繪制的剪切區(qū)域,其中剪切區(qū)域之外的區(qū)域不被繪制?;陬A(yù)測(cè)誤差的預(yù)期方差來(lái)確定剪切的百分比,由服務(wù)器設(shè)備的預(yù)測(cè)模塊進(jìn)行錯(cuò)誤預(yù)測(cè)的期望幅度的量化。如果方差較高,則立方體圖的較大部分將被繪制。相反,如果方差較低,則可以安全地繪制立方體圖的較小部分,從而降低帶寬消耗。

圖6描繪了具有預(yù)測(cè)的用戶視點(diǎn)的繪制的透視圖,預(yù)測(cè)的用戶視點(diǎn)位于由立方體圖定義的立方體的中間,立方體圖在前平面上具有朝向預(yù)測(cè)的場(chǎng)景的預(yù)測(cè)的用戶取向。預(yù)測(cè)的查看區(qū)域600是立方體圖的整個(gè)繪制的前平面。

圖7示出了具有實(shí)際的用戶取向的實(shí)際的用戶視點(diǎn)。從實(shí)際的用戶視點(diǎn)來(lái)看,實(shí)際查看區(qū)域700不同于預(yù)測(cè)的查看區(qū)域600。然而,由于透視圖的右平面也被繪制為繪制的較寬視場(chǎng)的一部分,所以實(shí)際查看區(qū)域700的視口可以通過(guò)將繪制的前平面的相應(yīng)部分和繪制的右平面的相應(yīng)部分重新投影到實(shí)際的用戶視點(diǎn)的客戶端應(yīng)用程序的視口來(lái)重構(gòu)。

在繪制表面的另一實(shí)施例中,使用邊緣形狀。圖8示出了邊緣形狀,其中左平面和右平面被繪制并且成角度使得兩個(gè)平面在邊緣處相交。未來(lái)的場(chǎng)景被繪制到邊緣,使得具有預(yù)測(cè)的用戶取向的預(yù)測(cè)的用戶視點(diǎn)朝向兩個(gè)平面相交的邊緣的銳角側(cè),并且具有預(yù)測(cè)的查看區(qū)域900,如圖9所示。

圖10示出了具有實(shí)際的用戶取向的實(shí)際的用戶視點(diǎn)。從實(shí)際的用戶視點(diǎn)來(lái)看,實(shí)際的查看區(qū)域1000不同于預(yù)測(cè)的查看區(qū)域900。然而,由于邊緣的右平面被繪制超出了被包含在預(yù)測(cè)的查看區(qū)域900中的部分,所以實(shí)際的查看區(qū)域1000仍然被包含在繪制的邊緣繪制表面中。因此,實(shí)際的查看區(qū)域1000的視口可以通過(guò)從繪制的左平面的相應(yīng)部分和繪制的右平面的對(duì)應(yīng)部分重新投影到實(shí)際的用戶視點(diǎn)的客戶端應(yīng)用程序的視口來(lái)重構(gòu)。

應(yīng)當(dāng)理解,通常,實(shí)際的用戶視點(diǎn)將接近預(yù)測(cè)的用戶視點(diǎn)的可能性很高。因此,可以增加實(shí)際的用戶視點(diǎn)的繪制質(zhì)量,同時(shí)通過(guò)基于可能性的凹形(foveation)——一種將像素重新分配到更可能被查看的區(qū)域的技術(shù)——同時(shí)減少服務(wù)器、客戶端和網(wǎng)絡(luò)帶寬成本。通過(guò)基于可能性的凹形,繪制的繪制表面在實(shí)際被查看的可能性高的區(qū)域以高的分辨率被繪制并且在實(shí)際被查看的可能性低的區(qū)域以低的分辨率被繪制。

在使用剪切的立方體圖和基于可能性的凹形的實(shí)施例中,實(shí)際被查看的最可能的位置是立方體的前平面,其是預(yù)測(cè)的查看區(qū)域。因此,剪切的立方體圖的前平面以比剪切的立方體圖的上平面、下平面、左平面和右平面更高的分辨率被繪制。

現(xiàn)在轉(zhuǎn)到圖11,可能的備選脈沖輸入序列的數(shù)目取決于服務(wù)器設(shè)備與客戶端設(shè)備之間的通信滯后時(shí)間(例如,一個(gè)rtt)。在圖11所示的示例中,通信滯后時(shí)間(t0,t1,t2)足夠長(zhǎng),使得兩個(gè)脈沖輸入可以在通信滯后時(shí)間內(nèi)被激活。服務(wù)器應(yīng)用程序的實(shí)施例可以是游戲應(yīng)用。在本實(shí)施例中,應(yīng)用狀態(tài)可以包括游戲世界的當(dāng)前狀態(tài),包括用戶角色的當(dāng)前狀態(tài)。例如,在游戲應(yīng)用程序的當(dāng)前應(yīng)用狀態(tài)下,用戶可能只能解鎖單個(gè)武器并且沒(méi)有能力。因此,如圖11所示,服務(wù)器應(yīng)用程序的當(dāng)前應(yīng)用狀態(tài)僅允許一種類型的脈沖輸入,其可以是用戶發(fā)射其一個(gè)武器,并且因此在任何時(shí)間t,單個(gè)脈沖輸入被激活或脈沖輸入未被激活。因此,當(dāng)前應(yīng)用狀態(tài)允許單個(gè)脈沖輸入的四個(gè)排列:序列1103[無(wú)激活,無(wú)激活];序列1104[無(wú)激活,激活];序列1105[激活,無(wú)激活];和序列1106[激活,激活]。

在示例性實(shí)施例中,使用服務(wù)器應(yīng)用邏輯來(lái)執(zhí)行來(lái)自圖11的每個(gè)備選脈沖輸入序列,作為示例,服務(wù)器應(yīng)用邏輯可以是如上所述的游戲應(yīng)用,并且未來(lái)的場(chǎng)景基于預(yù)測(cè)的未來(lái)的導(dǎo)航輸入和每個(gè)備選脈沖輸入序列來(lái)繪制。圖12(a)至圖12(d)示出了要根據(jù)上述實(shí)施例來(lái)繪制的未來(lái)的場(chǎng)景的俯視圖。在圖12(a)至圖12(d)中,預(yù)測(cè)的用戶視點(diǎn)先前從預(yù)測(cè)的未來(lái)的導(dǎo)航輸入來(lái)獲得,并且對(duì)于圖12(a)至圖12(d)中的每個(gè)是相同的。圖12(a)是與圖11的序列1103相對(duì)應(yīng)的場(chǎng)景,其為[無(wú)激活,無(wú)激活]。圖12(b)、圖12(c)和圖12(d)分別對(duì)應(yīng)于序列1104、序列1105和序列1106。在本實(shí)施例中,脈沖輸入是發(fā)射武器。因?yàn)閳D12(a)對(duì)應(yīng)于無(wú)脈沖輸入激活的序列,并且因此武器從不被發(fā)射,所以沒(méi)有子彈被繪制。圖12(b)對(duì)應(yīng)于序列[無(wú)激活,激活],因此武器將緊在場(chǎng)景被繪制之前被觸發(fā),并且子彈仍將靠近用戶。另一方面,圖12(c)對(duì)應(yīng)于序列[激活,無(wú)激活],這意味著子彈在t1被發(fā)射,并且沒(méi)有子彈在t2被發(fā)射,因此,單個(gè)子彈將被繪制遠(yuǎn)離用戶,因?yàn)榈谝蛔訌椩趖2期間已經(jīng)行進(jìn)。圖12(d)對(duì)應(yīng)于序列[激活,激活],其中子彈在t1和t2被發(fā)射。因此,場(chǎng)景使用兩個(gè)子彈被繪制,一個(gè)遠(yuǎn)離用戶,一個(gè)靠近用戶。

在一些實(shí)施例中,服務(wù)器設(shè)備與滯后設(shè)備之間的通信滯后時(shí)間可能很高。在圖13所示的實(shí)施例中,通信滯后時(shí)間是8個(gè)時(shí)鐘刻度的rtt。如果在每個(gè)時(shí)鐘刻度考慮脈沖輸入激活,即使只有一個(gè)脈沖輸入類型,狀態(tài)空間將是2^8或256個(gè)可能的備選脈沖輸入序列。在圖13所示的示例中,通過(guò)只允許以大于服務(wù)器應(yīng)用程序和客戶端應(yīng)用程序的一個(gè)時(shí)鐘刻度的子采樣周期發(fā)生脈沖輸入激活來(lái)減小狀態(tài)空間。在圖13中,僅允許脈沖輸入激活在t3和t7發(fā)生,導(dǎo)致2^2或4個(gè)可能的備選脈沖輸入序列的狀態(tài)空間。

僅允許脈沖輸入激活以比服務(wù)器應(yīng)用程序和客戶端應(yīng)用程序大一個(gè)時(shí)鐘刻度的子采樣周期發(fā)生,可能導(dǎo)致在客戶端設(shè)備處從用戶輸入設(shè)備接收到的隨后的脈沖輸入激活,其沒(méi)有落在要丟失的子采樣的刻度上。圖13所示的量化邏輯通過(guò)在時(shí)間上向前或向后時(shí)移脈沖輸入以與最近的子采樣刻度對(duì)準(zhǔn)來(lái)緩解脈沖輸入數(shù)據(jù)的這種潛在損失。時(shí)移是可能的,因?yàn)閭溥x脈沖輸入序列用于尚未向用戶顯示的未來(lái)的事件。因此,來(lái)自用戶的實(shí)際脈沖輸入可以被時(shí)移以與最近的子采樣刻度對(duì)準(zhǔn),只要該刻度的場(chǎng)景尚未被顯示給用戶。在圖13所示的實(shí)施例中,客戶端設(shè)備接收對(duì)應(yīng)于備選脈沖輸入序列1104、序列1105、序列1106和序列1106的四個(gè)繪制場(chǎng)景。例如,實(shí)際的脈沖輸入序列是t1處的脈沖輸入激活和t8處的脈沖輸入激活,則t1處的脈沖輸入激活可以被向前時(shí)移以在子采樣刻度t3處發(fā)生,并且t8處的脈沖輸入激活可以被向后時(shí)移以在子采樣刻度t7處發(fā)生。因此,對(duì)應(yīng)于在t3和t7兩者處具有脈沖輸入激活的備選脈沖輸入序列1106的繪制的場(chǎng)景可以用于重構(gòu)要顯示給用戶的視口。

圖14示出了根據(jù)本公開的實(shí)施例的用于預(yù)測(cè)用戶輸入并且繪制應(yīng)用的未來(lái)的場(chǎng)景的方法1400的流程圖。參考以上在圖1中描述和所示服務(wù)器設(shè)備14和客戶端設(shè)備12的軟件和硬件部件來(lái)提供方法1400的以下描述。應(yīng)當(dāng)理解,方法1400也可以在其他上下文中使用其他合適的硬件和軟件部件來(lái)執(zhí)行。

方法1400開始于1402,并且包括在服務(wù)器設(shè)備上執(zhí)行的服務(wù)器應(yīng)用程序處通過(guò)網(wǎng)絡(luò)從來(lái)自客戶端設(shè)備的用戶導(dǎo)航輸入流中接收當(dāng)前用戶導(dǎo)航輸入。方法1400前進(jìn)到1404,并且包括基于當(dāng)前用戶導(dǎo)航輸入和服務(wù)器應(yīng)用程序的當(dāng)前應(yīng)用狀態(tài)來(lái)計(jì)算預(yù)測(cè)的未來(lái)導(dǎo)的航輸入,如上所述。

方法1400前進(jìn)到1406,包括確定是否可以在服務(wù)器應(yīng)用程序中激活脈沖輸入。在僅考慮導(dǎo)航輸入并且不具有脈沖輸入的服務(wù)器應(yīng)用程序的實(shí)施例中,方法1400前進(jìn)到1408,并且包括基于預(yù)測(cè)的未來(lái)的導(dǎo)航輸入來(lái)向繪制表面繪制未來(lái)的場(chǎng)景。服務(wù)器設(shè)備可以使用比在客戶端設(shè)備上執(zhí)行的客戶端應(yīng)用程序的視口更寬的視場(chǎng)來(lái)繪制未來(lái)的場(chǎng)景。如上所述,作為幾個(gè)非限制性示例,繪制表面可以是立方體圖、剪切的立方體圖、邊緣或四面體。方法1400前進(jìn)到1410,并且包括通過(guò)網(wǎng)絡(luò)將繪制的繪制表面發(fā)送到客戶端設(shè)備。

在考慮導(dǎo)航輸入和脈沖輸入二者的服務(wù)器應(yīng)用程序的另一實(shí)施例中,方法1400從1404前進(jìn)到1406到1412,并且包括基于服務(wù)器應(yīng)用程序的當(dāng)前應(yīng)用狀態(tài)來(lái)確定可以在服務(wù)器設(shè)備與客戶端設(shè)備之間的通信滯后時(shí)間內(nèi)發(fā)生的不同排列的脈沖輸入的多個(gè)備選脈沖輸入序列。為了減少在通信滯后時(shí)間內(nèi)可能出現(xiàn)的可能的脈沖輸入序列的狀態(tài)空間,服務(wù)器設(shè)備可以確定脈沖輸入僅在大于服務(wù)器應(yīng)用程序的一個(gè)時(shí)鐘刻度的子采樣周期上發(fā)生。

方法1400前進(jìn)到1414,并且包括基于備選脈沖輸入序列中的每個(gè)以及預(yù)測(cè)的未來(lái)的導(dǎo)航輸入來(lái)向多個(gè)繪制表面繪制多個(gè)未來(lái)的場(chǎng)景。服務(wù)器設(shè)備可以使用比在客戶端設(shè)備上執(zhí)行的客戶端應(yīng)用程序的視口更寬的視場(chǎng)來(lái)繪制多個(gè)未來(lái)的場(chǎng)景。作為若干非限制性示例,繪制表面可以是立方體圖、剪切的立方體圖、邊緣或四面體。方法1400前進(jìn)到1416,并且包括通過(guò)網(wǎng)絡(luò)將多個(gè)備選脈沖輸入序列和多個(gè)繪制的繪制表面發(fā)送到客戶端設(shè)備。

現(xiàn)在轉(zhuǎn)到圖15,示出了具有預(yù)測(cè)的用戶視點(diǎn)的預(yù)測(cè)的場(chǎng)景的俯視圖。在本實(shí)施例中,預(yù)測(cè)的場(chǎng)景、以及包含繪制的繪制表面中的每個(gè)像素的深度信息的深度圖由服務(wù)器設(shè)備繪制給繪制表面,并且被發(fā)送給客戶端設(shè)備。當(dāng)在服務(wù)器設(shè)備處被繪制時(shí),場(chǎng)景是未來(lái)的場(chǎng)景,這是因?yàn)樗陬A(yù)測(cè)的未來(lái)的導(dǎo)航輸入被繪制。當(dāng)繪制的表面到達(dá)客戶端設(shè)備時(shí),在通過(guò)網(wǎng)絡(luò)運(yùn)行半個(gè)rtt之后,由服務(wù)器設(shè)備繪制的場(chǎng)景不再是未來(lái)的場(chǎng)景,而是預(yù)測(cè)的場(chǎng)景。

圖16描繪了可用于客戶端設(shè)備的繪制的繪制表面和深度圖的組合視覺(jué)。在本實(shí)施例中,從預(yù)測(cè)的用戶視點(diǎn)來(lái)看,視覺(jué)信息(例如,像素?cái)?shù)據(jù)項(xiàng))僅可用于對(duì)象的前表面。在接收到隨后的用戶導(dǎo)航輸入之后,客戶端設(shè)備基于隨后的用戶導(dǎo)航輸入來(lái)確定實(shí)際的用戶視點(diǎn)。然后,客戶端設(shè)備可以基于預(yù)測(cè)的用戶視點(diǎn)和實(shí)際的用戶視點(diǎn)來(lái)確定圖16所示的用戶視點(diǎn)錯(cuò)誤預(yù)測(cè)。

接下來(lái),客戶端設(shè)備通過(guò)從繪制的繪制表面重新投影到重構(gòu)的視口,從繪制的繪制表面來(lái)重構(gòu)用于實(shí)際的用戶視點(diǎn)的視口。在客戶端設(shè)備的示例性實(shí)施例中,為了從繪制的繪制表面重新投影到實(shí)際的用戶視點(diǎn)的視口,客戶端使用繪制的繪制表面和深度圖的rgbd(epth)數(shù)據(jù)從實(shí)際的用戶視點(diǎn)的角度重畫場(chǎng)景。為了重畫場(chǎng)景,客戶端設(shè)備將從實(shí)際的用戶視點(diǎn)射出的射線投射到由繪制表面和相應(yīng)的深度圖定義的場(chǎng)景中。例如,射線1600從實(shí)際的用戶視點(diǎn)被投射,并且與預(yù)測(cè)的場(chǎng)景中的正方形的一部分相交。在確定了射線1600和正方形的相交之后,可以將與射線1600相交的正方形的該部分的像素信息復(fù)制到與投影射線1600的發(fā)起點(diǎn)相對(duì)應(yīng)的重構(gòu)的視口中的位置。類似地,射線1602還與對(duì)象相交,六邊形和與射線1602相交的六邊形部分的像素?cái)?shù)據(jù)項(xiàng)可以被復(fù)制到與射線1602的發(fā)起點(diǎn)相對(duì)應(yīng)的位置中的重構(gòu)的視口。應(yīng)當(dāng)理解,在上述實(shí)施例中,可以使用射線投射、射線追蹤、射線跟蹤和其他技術(shù)來(lái)投射射線。

圖16所示的用戶視點(diǎn)錯(cuò)誤預(yù)測(cè)包括用戶位置錯(cuò)誤預(yù)測(cè)。因此,在本示例中,實(shí)際的用戶視點(diǎn)從與預(yù)測(cè)的用戶視點(diǎn)查看場(chǎng)景不同的角度來(lái)查看場(chǎng)景。這可能導(dǎo)致實(shí)際的用戶視點(diǎn)查看未被預(yù)測(cè)的用戶視點(diǎn)查看的場(chǎng)景的部分,并且因此不會(huì)在繪制模塊的初始實(shí)現(xiàn)中被繪制到繪制的繪制表面。例如,從實(shí)際的用戶視點(diǎn)投射的射線1604和射線1606不與繪制的繪制表面和深度圖中的任何位置相交,并且繪制的繪制表面不包含射線1604和射線1606指向的位置的視覺(jué)數(shù)據(jù),因?yàn)樗鼈冎赶蛭幢活A(yù)測(cè)的用戶視點(diǎn)查看的區(qū)域。

在未來(lái)的場(chǎng)景被繪制到如圖3(a)至圖3(c)和圖4至圖10所示的更寬視場(chǎng)的實(shí)施例中,射線1606與預(yù)測(cè)的用戶視點(diǎn)查看的區(qū)域之外的繪制的非顯示數(shù)據(jù)相交、以及與客戶端設(shè)備上的客戶端應(yīng)用程序的視圖插值模塊相交,以將繪制的繪制表面的未顯示部分重新投影到實(shí)際的用戶視點(diǎn)的重構(gòu)的視口。

然而,甚至在包括繪制到比客戶端應(yīng)用程序的視口更寬的視場(chǎng)的實(shí)施例中,將不存在圖16所示的射線1604的視覺(jué)信息,這是因?yàn)樗榭礇](méi)有被預(yù)測(cè)的用戶視點(diǎn)查看的在正方形之后的區(qū)域,因此不會(huì)在服務(wù)器設(shè)備的繪制模塊的天真(naive)更寬的視場(chǎng)實(shí)施例中被繪制。因此,射線1604指向被包含在繪制的繪制表面內(nèi)的視覺(jué)信息中的空白,并且從具有預(yù)測(cè)的用戶視點(diǎn)的繪制的繪制表面重新投影將在對(duì)應(yīng)于射線1604的發(fā)起點(diǎn)的重構(gòu)的視口上導(dǎo)致視覺(jué)孔。

為了填充在從繪制的繪制表面到實(shí)際的用戶視點(diǎn)的重構(gòu)的視口的重新投影之后留下的任何視覺(jué)孔,客戶端設(shè)備上的客戶端應(yīng)用程序的視圖插值模塊插值一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng)以使用基于圖像的繪制方法填充重構(gòu)的視口中的一個(gè)或更多視覺(jué)孔。應(yīng)當(dāng)理解,可以使用多個(gè)基于圖像的繪制方法,例如,空間視圖插值、時(shí)間視圖插值、深度剝離等。在一個(gè)實(shí)施例中,使用空間視圖插值方法,其中屏幕間隔網(wǎng)格被投影到與具有預(yù)測(cè)的用戶視點(diǎn)的預(yù)測(cè)的場(chǎng)景的繪制的繪制表面相對(duì)應(yīng)的深度圖的深度緩沖區(qū)上。

圖17示出了由繪制的繪制表面與深度圖組合定義的預(yù)測(cè)的場(chǎng)景的俯視圖、以及被投影到深度圖的深度緩沖區(qū)上的屏幕空間網(wǎng)格。在圖17所示的示例中,投影屏幕空間網(wǎng)格將產(chǎn)生邊緣1700、邊緣1702、邊緣1704和邊緣1706。這些邊緣出現(xiàn)在其中例如存在前景對(duì)象和背景對(duì)象的深度緩沖區(qū)中的深度差異處。在邊緣1700的情況下,三角形是前景對(duì)象,在三角形后面的左壁部分是背景對(duì)象,并且空間屏幕網(wǎng)狀網(wǎng)格的邊緣1700在兩個(gè)對(duì)象之間延伸。類似地,邊緣1702在正方形與左壁部分之間延伸,邊緣1704在正方形與右壁部分之間延伸,并且邊緣1706在右壁部分與六邊形之間延伸。

在示例性實(shí)施例中,視圖插值模塊將來(lái)自實(shí)際的用戶視點(diǎn)的射線投射到屏幕空間網(wǎng)狀網(wǎng)格。如圖17所示,射線1604從實(shí)際的用戶視點(diǎn)投射到空間網(wǎng)狀網(wǎng)格并且與邊緣1704相交。在確定射線1604與邊緣1704相交之后,視圖插值模塊計(jì)算在與射線1604的發(fā)起位置相對(duì)應(yīng)的重構(gòu)的視口上像素位置的像素顏色。應(yīng)當(dāng)理解,可以使用不同的方法來(lái)計(jì)算像素顏色。例如,可以從邊緣在其間延伸的前景對(duì)象的像素顏色和背景對(duì)象的像素顏色的混合來(lái)計(jì)算像素顏色,或者可以從用于邊緣的默認(rèn)顏色中選擇像素顏色。在一個(gè)實(shí)施例中,僅基于背景對(duì)象的顏色來(lái)計(jì)算像素顏色。應(yīng)當(dāng)理解,在上述實(shí)施例中,可以使用射線投射、射線追蹤、射線跟蹤和其他技術(shù)來(lái)投射射線。

在一些實(shí)施例中,通過(guò)在小窗口尺寸(例如,5×5)上施加最小過(guò)濾器,被投影到深度圖的深度緩沖區(qū)上的屏幕空間網(wǎng)狀網(wǎng)格的邊緣在寬度方面被擴(kuò)展一個(gè)或多個(gè)像素,使得前景對(duì)象顯得更大。擴(kuò)展邊緣可以幫助保留前景對(duì)象的形狀,并且減少所產(chǎn)生的視覺(jué)偽影的影響。

在另一實(shí)施例中,視圖插值模塊通過(guò)從先前繪制的視口的一部分重新投影使用時(shí)間視圖插值方法來(lái)插值一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng)。本實(shí)施例的示例在圖18中示出,其中中心壁部分從預(yù)測(cè)用戶視點(diǎn)查看被正方形阻擋,并且不會(huì)被繪制模塊的天真(naive)實(shí)施例繪制。在本示例中,用戶正從右到左移動(dòng),并且服務(wù)器設(shè)備預(yù)測(cè)直接向左移動(dòng)到預(yù)測(cè)的用戶視點(diǎn)。在接收到預(yù)測(cè)的用戶視點(diǎn)的繪制的繪制表面和深度圖之后,客戶端設(shè)備接收隨后的用戶導(dǎo)航輸入,并且確定用戶實(shí)際上比預(yù)測(cè)更遠(yuǎn)地向左移動(dòng),并且實(shí)際上在當(dāng)前的實(shí)際的用戶視點(diǎn)處。當(dāng)重構(gòu)當(dāng)前的實(shí)際的用戶視點(diǎn)的視口時(shí),視圖插值模塊需要插值其中存在視覺(jué)孔的射線1802的像素?cái)?shù)據(jù)。雖然與射線1802相交的中心壁部分沒(méi)有被包含在預(yù)測(cè)的用戶視點(diǎn)的繪制的繪制表面內(nèi),但是中心壁部分通過(guò)射線1804從過(guò)去的實(shí)際的用戶視點(diǎn)被查看,并且將被包含在過(guò)去的實(shí)際的用戶視點(diǎn)的先前繪制的視口中。為了插值射線1802的像素?cái)?shù)據(jù),視圖插值模塊從包含與射線1802相交的中心壁部分的像素?cái)?shù)據(jù)項(xiàng)的過(guò)去的實(shí)際的用戶視點(diǎn)的先前繪制的視口的一部分重新投影。

圖19描繪了使用深度剝離來(lái)繪制多個(gè)深度層的組合的實(shí)施例。在圖19所示的示例中,三個(gè)深層被繪制成組合繪制表面。第一深度層包含用于背景壁的像素?cái)?shù)據(jù)項(xiàng),第二深度層包含三角形和六邊形的前表面的像素?cái)?shù)據(jù)項(xiàng),第三深度層包含正方形的前表面的像素?cái)?shù)據(jù)項(xiàng)。在確定用戶視點(diǎn)錯(cuò)誤預(yù)測(cè)之后,客戶端設(shè)備的視圖插值模塊的實(shí)施例從組合深度層繪制表面重新投影到實(shí)際的用戶視點(diǎn)的視口。當(dāng)重新投影時(shí),視圖插值模塊可以將來(lái)自實(shí)際的用戶視點(diǎn)的射線投射到作為多個(gè)深度層的組合的繪制表面。例如,從實(shí)際的用戶視點(diǎn)投射的射線1904與深度層2中的六邊形和深度層3中的壁相交。由于像素?cái)?shù)據(jù)項(xiàng)可用于壁和六邊形,視圖插值模塊確定六邊形從實(shí)際用戶視點(diǎn)來(lái)看在壁前方,并且將六邊形的像素?cái)?shù)據(jù)項(xiàng)重新投影到實(shí)際的用戶視點(diǎn)的視口,并且丟棄在六邊形后面的壁部分的像素?cái)?shù)據(jù)項(xiàng)。從實(shí)際的用戶視點(diǎn)投射的射線1902與深度層1或深度層2中的任何對(duì)象不相交,僅與深度層3中的壁相交。因此,視圖插值模塊可以僅將與射線1902相交的壁的部分的像素?cái)?shù)據(jù)項(xiàng)重新投影到實(shí)際的用戶視點(diǎn)的視口。應(yīng)當(dāng)理解,與射線1902相交的壁部分從預(yù)測(cè)的用戶視點(diǎn)沒(méi)有被查看到,但是在被繪制到被發(fā)送到客戶端設(shè)備的繪制表面的多個(gè)深度層的組合中的深度層3中在服務(wù)器設(shè)備處被繪制。

在上述配置的一個(gè)實(shí)施例中,被繪制到繪制表面的多個(gè)深度層中的深度層的數(shù)目不超過(guò)可調(diào)節(jié)的閾值。一些對(duì)象或場(chǎng)景可以具有復(fù)雜的深度剖面,并且具有潛在的大量深度層(例如,葉子或粒子系統(tǒng))。大量的深層可能導(dǎo)致潛在的無(wú)限制的存儲(chǔ)器需求。通過(guò)將潛在的深度層的數(shù)目限制為閾值,可以防止?jié)撛诘臒o(wú)限制的存儲(chǔ)器需求這一問(wèn)題。

圖20示出了根據(jù)本公開的實(shí)施例的用于重構(gòu)實(shí)際的用戶視點(diǎn)的視口的方法2000的流程圖。參考以上在圖1中描述和示出的服務(wù)器設(shè)備14和客戶端設(shè)備12的軟件和硬件部件來(lái)提供方法2000的以下描述。應(yīng)當(dāng)理解,方法2000也可以在其他上下文中使用其他合適的硬件和軟件部件來(lái)執(zhí)行。

方法2000開始于2002,并且包括確定在客戶端設(shè)備上執(zhí)行的客戶端應(yīng)用程序是否包括脈沖輸入。如果客戶端應(yīng)用程序僅允許輸入導(dǎo)航輸入,而不允許輸入脈沖輸入,則方法2000前進(jìn)到2004,并且包括通過(guò)網(wǎng)絡(luò)從服務(wù)器設(shè)備接收具有預(yù)測(cè)的用戶視點(diǎn)的預(yù)測(cè)的場(chǎng)景的繪制的繪制表面,其中繪制的繪制表面具有比客戶端應(yīng)用程序的視口更寬的視場(chǎng),并且在以預(yù)測(cè)的用戶視點(diǎn)為中心的客戶端應(yīng)用程序的視口中未顯示的區(qū)域中包括多個(gè)未顯示的繪制的像素?cái)?shù)據(jù)項(xiàng)。

方法2000前進(jìn)到2006,并且包括在用戶輸入流中接收隨后的用戶導(dǎo)航輸入。在接收到隨后的用戶導(dǎo)航輸入之后,方法200前進(jìn)到2014,并且包括基于隨后的用戶導(dǎo)航輸入來(lái)確定實(shí)際的用戶視點(diǎn)。接下來(lái),方法2000前進(jìn)到2016,并且包括基于預(yù)測(cè)的用戶視點(diǎn)和實(shí)際的用戶視點(diǎn)來(lái)確定用戶視點(diǎn)錯(cuò)誤預(yù)測(cè)。

在確定存在用戶視點(diǎn)錯(cuò)誤預(yù)測(cè)時(shí),方法2000前進(jìn)到2018,并且包括從繪制的繪制表面重構(gòu)實(shí)際的用戶視點(diǎn)的視口,其中實(shí)際的用戶視點(diǎn)的視口包括多個(gè)未顯示的繪制的像素?cái)?shù)據(jù)項(xiàng)的一部分。應(yīng)當(dāng)理解,將向用戶顯示被包括在實(shí)際的用戶視點(diǎn)的視口中的多個(gè)未顯示的繪制的像素?cái)?shù)據(jù)項(xiàng)的一部分,而沒(méi)有被包括在實(shí)際的用戶視點(diǎn)的視口中的多個(gè)未顯示的繪制的像素?cái)?shù)據(jù)項(xiàng)的剩余部分將保持不被顯示。

在重構(gòu)步驟2018期間,方法2000前進(jìn)到子步驟2020和2022。步驟2020包括從繪制的繪制表面的一部分重新投影到實(shí)際的用戶視點(diǎn)的視口。應(yīng)當(dāng)理解,在重新投影之后,由于用戶視點(diǎn)錯(cuò)誤預(yù)測(cè),視覺(jué)孔可能保留在實(shí)際的用戶視點(diǎn)的視口中,如上所述。為了填補(bǔ)這些視覺(jué)孔,方法2000前進(jìn)到步驟2022,并且包括插值一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng)以填充重構(gòu)的視口中的一個(gè)或多個(gè)視覺(jué)孔。應(yīng)當(dāng)理解,一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng)可以通過(guò)多種不同的方法來(lái)插值,例如,通過(guò)空間插值、時(shí)間插值或深度剝離。

完成步驟2022的一個(gè)示例方式使用空間插值,如子步驟2022a所示。在子步驟2022a,方法可以包括將屏幕空間網(wǎng)狀網(wǎng)格投影到與預(yù)測(cè)的場(chǎng)景的繪制的繪制表面相對(duì)應(yīng)的深度圖的深度緩沖區(qū)上。屏幕空間網(wǎng)狀網(wǎng)格可以包括在預(yù)測(cè)的場(chǎng)景中在前景對(duì)象與背景對(duì)象之間延伸的邊緣。接下來(lái),子步驟2022a可以包括將屏幕空間網(wǎng)狀網(wǎng)格中的邊緣在寬度方面擴(kuò)展一個(gè)或多個(gè)像素。然后,子步驟2022a可以包括將來(lái)自實(shí)際的用戶視點(diǎn)的射線投射到屏幕空間網(wǎng)狀網(wǎng)格。接下來(lái),子步驟2022a確定射線與屏幕空間網(wǎng)狀網(wǎng)格中的邊緣相交。最后,子步驟2022a可以包括基于預(yù)測(cè)的場(chǎng)景中的背景對(duì)象的顏色來(lái)計(jì)算插值的一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng)的像素顏色。應(yīng)當(dāng)理解,當(dāng)投射射線時(shí),可以使用射線投射、射線追蹤、射線跟蹤和其他射線技術(shù)。

使用時(shí)間插值的步驟2022的另一子步驟在子步驟2022b處示出,并且包括從先前繪制的視口的一部分重新投影。使用深度剝離的步驟2022的子步驟在2022c處示出,并且包括從繪制的繪制表面重新投影。根據(jù)子步驟2022c,繪制的繪制表面可以是多個(gè)深度層的組合,并且多個(gè)深度層中的多個(gè)深度層通常不超過(guò)可調(diào)節(jié)的閾值。

在重構(gòu)實(shí)際的用戶視點(diǎn)的視口之后,方法2000前進(jìn)到步驟2024,包括在顯示設(shè)備上顯示實(shí)際的用戶視點(diǎn)的視口。

返回到步驟2002,如果客戶端應(yīng)用程序包括脈沖輸入,則方法2000前進(jìn)到步驟2008,并且包括通過(guò)網(wǎng)絡(luò)從服務(wù)器設(shè)備接收多個(gè)備選脈沖輸入序列和與多個(gè)備選脈沖輸入序列相對(duì)應(yīng)的多個(gè)繪制的繪制表面。應(yīng)當(dāng)理解,多個(gè)繪制的繪制表面每個(gè)可以使用預(yù)測(cè)的用戶視點(diǎn)并且使用比客戶端應(yīng)用程序的視口更寬的視場(chǎng)來(lái)繪制,并且在沒(méi)有被顯示在以預(yù)測(cè)的用戶視點(diǎn)為中心的客戶端應(yīng)用程序的視口中的區(qū)域中包括多個(gè)未顯示的繪制的像素?cái)?shù)據(jù)項(xiàng)。

方法2000前進(jìn)到步驟2010,并且包括在用戶輸入流中接收隨后的用戶導(dǎo)航輸入和隨后的脈沖輸入序列。接下來(lái),方法2000前進(jìn)到2012,并且包括基于隨后的脈沖輸入序列從多個(gè)備選脈沖輸入序列中選擇備選脈沖輸入序列,并且從與所選擇的備選脈沖輸入序列相對(duì)應(yīng)的多個(gè)繪制的繪制表面中選擇繪制的繪制表面。應(yīng)當(dāng)理解,可以使用各種標(biāo)準(zhǔn)來(lái)進(jìn)行該選擇。在一個(gè)實(shí)施例中,選擇與隨后的脈沖輸入序列相匹配的備選脈沖輸入序列。在其他實(shí)施例中,選擇最接近隨后的脈沖輸入序列的備選脈沖輸入序列。還應(yīng)當(dāng)理解,可以相應(yīng)地以大于客戶端應(yīng)用程序的一個(gè)時(shí)鐘刻度的子采樣周期確定備選脈沖輸入序列。在這樣的實(shí)施例中,方法2012可以包括在選擇備選脈沖輸入序列之前將隨后脈沖輸入序列的每個(gè)脈沖輸入時(shí)移到多個(gè)備選脈沖輸入序列的最近的子采樣刻度。

在選擇備選脈沖輸入序列和相應(yīng)的繪制的繪制表面之后,方法2000以與上述相同的方式進(jìn)行步驟2014、2016、2018、2020、2022和2024。

如圖21所示,上述客戶端設(shè)備12可以包括立體顯示器70a。在示例性實(shí)施例中,立體顯示器70a可以以頭戴顯示器(hmd)的形式被包括在客戶端設(shè)備12a中。hmd客戶端設(shè)備12a的立體顯示器70a具有左顯示器l和右顯示器r,每個(gè)顯示器都向穿戴hmd的用戶的相應(yīng)的左眼投影圖像和右眼投影圖像。hmd客戶端設(shè)備12a可以通過(guò)諸如安裝在設(shè)備上的傳感器(例如,陀螺儀、加速度計(jì)、rgb相機(jī)、深度相機(jī)等)等用戶輸入設(shè)備24a來(lái)接收用戶輸入。hmd客戶端設(shè)備可以通過(guò)網(wǎng)絡(luò)將從安裝的傳感器接收到的數(shù)據(jù)發(fā)送到服務(wù)器設(shè)備。在一個(gè)實(shí)施例中,hmd客戶端設(shè)備從針對(duì)預(yù)測(cè)的用戶左眼視點(diǎn)和預(yù)測(cè)的用戶右眼視點(diǎn)實(shí)現(xiàn)方法1400的服務(wù)器設(shè)備接收預(yù)測(cè)性內(nèi)容。預(yù)測(cè)性內(nèi)容可以是繪制的繪制表面和深度圖、或者多個(gè)繪制的繪制表面和深度圖以及多個(gè)備選脈沖輸入序列。在本實(shí)施例中,hmd客戶端設(shè)備執(zhí)行方法2000兩次,以從與用戶左眼相對(duì)應(yīng)的預(yù)測(cè)性內(nèi)容來(lái)重構(gòu)用戶左眼的實(shí)際的用戶視點(diǎn)的視口,并且從與用戶右眼相對(duì)應(yīng)的預(yù)測(cè)性內(nèi)容來(lái)重構(gòu)用戶右眼的實(shí)際的用戶視點(diǎn)的視口。

在另一實(shí)施例中,為了減少帶寬消耗,服務(wù)器設(shè)備僅針對(duì)用戶第一眼睛的預(yù)測(cè)的用戶視點(diǎn)來(lái)執(zhí)行方法1400。服務(wù)器設(shè)備可以在每次繪制通過(guò)時(shí)在用戶的左眼與用戶的右眼之間交替第一眼睛,使得hmd客戶端設(shè)備接收在用戶的左眼的預(yù)測(cè)的用戶視點(diǎn)與用戶的右眼的預(yù)測(cè)的用戶視點(diǎn)之間交替的預(yù)測(cè)性內(nèi)容。在本實(shí)施例中,hmd客戶端設(shè)備執(zhí)行方法2500,以基于剛剛從服務(wù)器設(shè)備接收到的當(dāng)前預(yù)測(cè)性內(nèi)容以及先前從服務(wù)器設(shè)備接收到的先前預(yù)測(cè)性內(nèi)容來(lái)重構(gòu)用戶的第一眼睛的實(shí)際的用戶視點(diǎn)的視口和用戶的第二眼睛的實(shí)際的用戶視點(diǎn)的第二視口。應(yīng)當(dāng)理解,在本實(shí)施例中,當(dāng)前預(yù)測(cè)性內(nèi)容從第一眼睛的預(yù)測(cè)的用戶視點(diǎn)來(lái)繪制,并且先前的預(yù)測(cè)性內(nèi)容從第二眼睛的預(yù)測(cè)的用戶視點(diǎn)來(lái)繪制。還應(yīng)當(dāng)理解,根據(jù)方法1400,預(yù)測(cè)性內(nèi)容可以是由服務(wù)器設(shè)備產(chǎn)生的繪制的繪制表面、或者多個(gè)繪制的繪制表面和多個(gè)備選脈沖輸入序列。

現(xiàn)在轉(zhuǎn)到圖22,立體顯示器利用兩個(gè)繪制的視口用于顯示,一個(gè)用于用戶的左眼,一個(gè)用于用戶的右眼。在圖22所示的示例中,服務(wù)器設(shè)備發(fā)送具有用于第一眼睛的用戶視點(diǎn)的場(chǎng)景的繪制的繪制表面和深度圖。在本示例中,第一眼睛是用戶的左眼,并且沒(méi)有用戶視點(diǎn)錯(cuò)誤預(yù)測(cè),使得左眼的實(shí)際的用戶視點(diǎn)與左眼的預(yù)測(cè)的用戶視點(diǎn)相匹配。因此,通過(guò)將繪制的繪制表面所表示的場(chǎng)景簡(jiǎn)單地投影到左眼的視口,可以構(gòu)成左眼的視點(diǎn)。然而,作為用戶的右眼的第二眼睛的視點(diǎn)以瞳孔間距離——即穿戴hmd客戶端設(shè)備的用戶的瞳孔之間的距離——被轉(zhuǎn)變到第一眼睛的右側(cè)。因?yàn)?,在本示例中,hmd客戶端設(shè)備僅具有用于左眼的當(dāng)前繪制的繪制表面,所以hmd客戶端設(shè)備需要基于具有用于第一眼睛的用戶視點(diǎn)的繪制的繪制表面來(lái)插值第二眼睛的視口。因此,hmd客戶端設(shè)備的視圖插值模塊使用具有用于第一眼睛的用戶視點(diǎn)的繪制的繪制表面的繪制的內(nèi)容將場(chǎng)景重新投影到第二眼睛的視口。

在圖22所示的示例中,視圖插值模塊將來(lái)自第二眼睛的用戶視點(diǎn)的射線投射到由具有用于第一眼睛的用戶視點(diǎn)的繪制的繪制表面所表示的場(chǎng)景。射線2500和射線2502與被包含在繪制的繪制表面的繪制的內(nèi)容中的場(chǎng)景中的位置相交。因此,可以將與和射線2500和射線2502相交的位置相對(duì)應(yīng)的繪制的繪制表面的像素?cái)?shù)據(jù)項(xiàng)添加到與射線2500和射線2502的發(fā)起點(diǎn)相對(duì)應(yīng)的位置處的第二眼睛的視口。應(yīng)當(dāng)理解,在上述實(shí)施例中,可以使用射線投射、射線追蹤、射線跟蹤和其他技術(shù)來(lái)投射射線。

然而,射線2504和射線2506指向沒(méi)有被包含在具有用于第一眼睛的用戶視點(diǎn)的繪制的繪制表面的繪制的內(nèi)容中的位置。在一個(gè)實(shí)施例中,hmd客戶端設(shè)備的視圖插值模塊插值像素?cái)?shù)據(jù)項(xiàng)以填充由沒(méi)有與繪制的繪制表面中的繪制的內(nèi)容相交的射線留下的這些視覺(jué)孔。應(yīng)當(dāng)理解,可以使用圖17所示的空間視圖插值方法使用射線1604,使用圖18所示的時(shí)間視圖插值方法使用射線1804,以及使用圖19所示的深度剝離方法使用射線1902,來(lái)插值射線2504的視覺(jué)孔的像素?cái)?shù)據(jù)項(xiàng)。在接收具有比hmd客戶端設(shè)備的視口更寬的視場(chǎng)的繪制的繪制表面的hmd客戶端設(shè)備的實(shí)施例中,可以插值與射線2506相對(duì)應(yīng)的視覺(jué)孔,如圖3a、圖3b和圖3c所示。

在服務(wù)器設(shè)備在繪制場(chǎng)景時(shí)在左眼的用戶視點(diǎn)與右眼的用戶視點(diǎn)之間交替的實(shí)施例中,hmd客戶端設(shè)備不僅基于表示用戶的第一眼睛的場(chǎng)景的當(dāng)前視圖的當(dāng)前繪制的繪制而且基于表示用戶的第二眼睛的場(chǎng)景的過(guò)去的視圖的先前繪制的繪制表面來(lái)合成用于第二眼睛的視口。應(yīng)當(dāng)理解,由于在本實(shí)施例中服務(wù)器設(shè)備在每個(gè)繪制通過(guò)之后在眼睛之間交替,所以先前繪制的繪制表面所表示的場(chǎng)景的過(guò)去的視圖在過(guò)去將僅在30-100ms的量級(jí)。還應(yīng)當(dāng)理解,服務(wù)器設(shè)備可以根據(jù)其他周期性(諸如,每?jī)蓚€(gè)或三個(gè)繪制通過(guò))在左眼與右眼之間交替。

在圖23所示的示例中,服務(wù)器從第一眼睛的用戶視點(diǎn)來(lái)繪制場(chǎng)景,并且將當(dāng)前繪制的第一眼睛繪制表面發(fā)送到hmd客戶端設(shè)備。在hmd客戶端設(shè)備處,視圖插值模塊從當(dāng)前繪制的第一眼睛繪制表面重新投影到當(dāng)前的合成的第二眼睛視口。在第一重新投影之后,在當(dāng)前的合成的第二眼睛視口中可能存在視覺(jué)孔,如圖22中的示例中所述。這些視覺(jué)孔通過(guò)從先前繪制的第二眼睛繪制表面重新投影到當(dāng)前的合成的第二眼睛視口來(lái)被填充。應(yīng)當(dāng)理解,在本實(shí)施例中,當(dāng)前繪制的第一眼睛繪制表面和先前繪制的第二眼睛繪制表面在服務(wù)器設(shè)備處被繪制,并且不包含可能具有視覺(jué)偽影的插值或重構(gòu)的數(shù)據(jù)。還應(yīng)當(dāng)理解,作為若干非限制性示例,繪制表面可以是很多種形狀,諸如立方體圖、剪切的立方體圖、邊緣、四面體或矩形。

如圖22所示,如圖22所示由于深度差異和瞳孔間距離而導(dǎo)致的從當(dāng)前繪制的第一眼睛繪制表面重新投影后產(chǎn)生的視覺(jué)孔與由于用戶視點(diǎn)隨時(shí)間的變化而導(dǎo)致的從先前繪制的第二眼睛繪制表面重新投影之后產(chǎn)生的視覺(jué)孔不相關(guān)。來(lái)自當(dāng)前繪制的第一眼睛繪制表面的重新投影將傾向于在當(dāng)前的合成的第二眼睛視口中引起視覺(jué)孔,其中場(chǎng)景中存在大的深度差異,如圖22所示。在一些實(shí)施例中,服務(wù)器設(shè)備擠出每個(gè)繪制的繪制表面的深度圖。在這些實(shí)施例中,場(chǎng)景中的深度差異可以由hmd客戶端設(shè)備基于深度圖來(lái)檢測(cè)。應(yīng)當(dāng)理解,深度圖可以作為深度緩沖區(qū)或用于深度圖的任何其它合適的數(shù)據(jù)結(jié)構(gòu)被傳輸?shù)絟md客戶端設(shè)備。

回到圖22,深度圖中的大的深度差異的示例是正方形與壁之間的深度差異。這種深度差異與第一眼睛與第二眼睛之間的瞳孔間距離相結(jié)合導(dǎo)致當(dāng)從當(dāng)前繪制的第一眼睛繪制表面重新投影到與射線2504的發(fā)起點(diǎn)相對(duì)應(yīng)的當(dāng)前的合成的第二眼睛視口上的位置的當(dāng)前的合成的第二眼睛視口時(shí)存在視覺(jué)孔。因此,可能在具有較大深度差異的位置處出現(xiàn)視覺(jué)孔,并且可以基于大的深度差異的位置來(lái)有效地檢測(cè)這些視覺(jué)孔。在一些實(shí)施例中,當(dāng)在被重新投影的繪制表面中確定射線不與繪制的內(nèi)容相交時(shí),在重新投影過(guò)程期間記錄視覺(jué)孔。

當(dāng)用戶視點(diǎn)的變化速率高時(shí),從先前繪制的第二眼睛繪制表面重新投影將在當(dāng)前的合成的第二眼睛視口中導(dǎo)致視覺(jué)孔。在一些實(shí)施例中,基于從用戶接收的用戶輸入流(例如,通過(guò)一個(gè)rtt的總的頭部旋轉(zhuǎn)距離)來(lái)計(jì)算用戶視點(diǎn)的變化速率。應(yīng)當(dāng)理解,如果用戶視點(diǎn)的變化速率低或?yàn)榱?例如,用戶最近沒(méi)有輸入導(dǎo)航輸入),則先前繪制的第二眼睛繪制表面將具有與當(dāng)前的合成的第二眼睛視口相同的用于第二眼睛的用戶視點(diǎn)。因此,如果用戶視點(diǎn)的變化速率低或?yàn)榱?,則從先前繪制的第二眼睛繪制表面到當(dāng)前的合成的第二眼睛視口的重新投影將導(dǎo)致最小限度的視覺(jué)孔。

圖24示出了用戶視點(diǎn)的變化速率高的示例。在本示例中,用戶已經(jīng)快速地向右移動(dòng)。因此,當(dāng)前用戶視點(diǎn)遠(yuǎn)在過(guò)去的用戶視點(diǎn)的右側(cè)。在本示例中,先前繪制的第二眼睛繪制表面是與在hmd客戶端設(shè)備上執(zhí)行的客戶端應(yīng)用程序的視口相同大小的矩形。從先前繪制的第二眼睛繪制表面重新投影到當(dāng)前的合成的第二眼睛視口將導(dǎo)致與包含六邊形的合成的第二眼睛視口的部分相對(duì)應(yīng)的視覺(jué)孔,因?yàn)椋捎谟脩粢朁c(diǎn)的高變化速率,在與包含六邊形的合成的第二眼睛視口的部分相對(duì)應(yīng)的先前繪制的繪制表面中沒(méi)有繪制的內(nèi)容。

在從先前繪制的第二眼睛繪制表面重新投影到當(dāng)前的合成的第二眼睛視口之后,在當(dāng)前的合成的第二眼睛視口中仍然可能存在視覺(jué)孔。在一些實(shí)施例中,使用從先前繪制的第二眼睛繪制表面的屏幕空間顏色拾取來(lái)填充這些剩余的視覺(jué)孔。在這些實(shí)施例中,hmd客戶端設(shè)備的視圖插值模塊可以確定作為視覺(jué)孔的當(dāng)前的合成的第二眼睛視口中的位置,并且從先前繪制的第二眼睛繪制表面中的相應(yīng)位置復(fù)制像素?cái)?shù)據(jù)。

圖25示出了根據(jù)本公開的實(shí)施例的用于對(duì)用于立體視覺(jué)的當(dāng)前第二眼睛視口插值的方法2500的流程圖。參考以上在圖1中描述和所示服務(wù)器設(shè)備14和客戶端設(shè)備12的軟件和硬件部件來(lái)提供方法2500的以下描述。應(yīng)當(dāng)理解,方法2500也可以在其他上下文中使用其他合適的硬件和軟件部件來(lái)執(zhí)行。

方法2500開始于2502,并且包括在客戶端應(yīng)用程序的視圖插值模塊處獲取表示用于用戶的第一眼睛的場(chǎng)景的當(dāng)前視圖的當(dāng)前繪制的繪制表面和表示用于用戶的第二眼睛的場(chǎng)景的過(guò)去的視圖的先前繪制的繪制表面。應(yīng)當(dāng)理解,當(dāng)前繪制的繪制表面和先前繪制的繪制表面可以使用比客戶端設(shè)備的視口更寬的視場(chǎng)來(lái)繪制。此外,作為若干示例,繪制表面可以是很多種形狀,自然立方體圖、剪切的立方體圖、邊緣或四面體。還應(yīng)當(dāng)理解,在每個(gè)繪制通過(guò)時(shí)繪制的第一眼睛可以在用戶的左眼與用戶的右眼之間交替。在一個(gè)實(shí)施例中,該繪制過(guò)程可以在將繪制的繪制表面發(fā)送到執(zhí)行方法2500的客戶端設(shè)備的服務(wù)器設(shè)備上來(lái)完成。在另一實(shí)施例中,服務(wù)器設(shè)備可以根據(jù)方法1400來(lái)繪制預(yù)測(cè)的場(chǎng)景,并且通過(guò)網(wǎng)絡(luò)將用戶的左眼或右眼的預(yù)測(cè)的視點(diǎn)的預(yù)測(cè)的場(chǎng)景的繪制的繪制表面發(fā)送到用戶設(shè)備。

接下來(lái),視圖插值模塊基于當(dāng)前繪制的繪制表面和先前繪制的繪制表面來(lái)合成表示用戶的第二眼睛的場(chǎng)景的當(dāng)前視圖的當(dāng)前第二眼睛視口。該合成在方法2500的剩余的步驟中完成。方法2500前進(jìn)到2504,并且包括從當(dāng)前繪制的繪制表面重新投影到當(dāng)前第二眼睛視口。

方法2500前進(jìn)到2506,并且包括檢測(cè)當(dāng)前第二眼睛視口中的一個(gè)或多個(gè)視覺(jué)孔。在一個(gè)實(shí)施例中,檢測(cè)當(dāng)前第二眼睛視口中的一個(gè)或多個(gè)視覺(jué)孔基于當(dāng)前繪制的繪制表面的深度圖中的檢測(cè)到的深度差異,深度圖在客戶端應(yīng)用程序的視圖插值模塊處獲得。接下來(lái),方法2500基于先前繪制的繪制表面來(lái)插值一個(gè)或多個(gè)視覺(jué)孔的一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng)。

方法2500通過(guò)前進(jìn)到2508來(lái)插值一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng),并且包括從先前繪制的繪制表面重新投影到當(dāng)前第二眼睛視口。方法2500前進(jìn)到2510,并且包括在從先前繪制的繪制表面重新投影之后檢測(cè)當(dāng)前第二眼睛視口中的一個(gè)或多個(gè)剩余的視覺(jué)孔。在一個(gè)實(shí)施例中,檢測(cè)一個(gè)或多個(gè)剩余的視覺(jué)孔基于根據(jù)從用戶接收的用戶輸入流計(jì)算的用戶視點(diǎn)的計(jì)算的變化率。接下來(lái),方法2500基于先前繪制的繪制表面來(lái)填充一個(gè)或多個(gè)剩余的視覺(jué)孔。

方法2500通過(guò)前進(jìn)到2512來(lái)填充一個(gè)或多個(gè)剩余的視覺(jué)孔,并且包括針對(duì)一個(gè)或多個(gè)剩余的視覺(jué)孔中的每個(gè)確定當(dāng)前第二眼睛視口中的像素位置。方法2500前進(jìn)到2514,并且包括從與一個(gè)或多個(gè)剩余的視覺(jué)孔中的每個(gè)的當(dāng)前第二眼睛視口中的像素位置相對(duì)應(yīng)的先前繪制的繪制表面中的像素位置復(fù)制像素?cái)?shù)據(jù)。在一個(gè)實(shí)施例中,將像素?cái)?shù)據(jù)從先前繪制的繪制表面直接復(fù)制到當(dāng)前第二眼睛視口中的相應(yīng)位置。

在一些實(shí)施例中,方法2500與用于從服務(wù)器設(shè)備接收預(yù)測(cè)性繪制內(nèi)容的hmd客戶端設(shè)備的實(shí)施例的方法2000組合。在這些實(shí)施例中,服務(wù)器設(shè)備根據(jù)方法1400繪制內(nèi)容,以在用戶的左眼與右眼之間交替。hmd客戶端設(shè)備接收具有用戶的第一眼睛的預(yù)測(cè)的用戶視點(diǎn)的預(yù)測(cè)的場(chǎng)景的當(dāng)前繪制的繪制表面,并且在客戶端應(yīng)用程序的視圖插值模塊處獲取具有用戶的第二眼睛的先前預(yù)測(cè)的用戶視點(diǎn)的先前預(yù)測(cè)的場(chǎng)景的先前繪制的繪制表面。在一些實(shí)施例中,先前繪制的繪制表面從存儲(chǔ)器hmd客戶端設(shè)備來(lái)獲取。

接下來(lái),hmd客戶端設(shè)備從用戶輸入設(shè)備在用戶輸入流中接收隨后的用戶導(dǎo)航輸入。然后,基于隨后的用戶導(dǎo)航輸入,確定第一眼睛的實(shí)際的用戶視點(diǎn)和第二眼睛的實(shí)際的用戶視點(diǎn)。然后,hmd客戶端設(shè)備繼續(xù)進(jìn)行基于第一眼睛的預(yù)測(cè)的用戶視點(diǎn)和第一眼睛的實(shí)際的用戶視點(diǎn)來(lái)確定用戶視點(diǎn)錯(cuò)誤預(yù)測(cè)。應(yīng)當(dāng)理解,本實(shí)施例中的第一眼睛是服務(wù)器設(shè)備繪制到繪制表面并且被hmd客戶端設(shè)備接收作為當(dāng)前繪制的繪制表面的眼睛。如果存在用戶視點(diǎn)錯(cuò)誤預(yù)測(cè),則hmd客戶端設(shè)備不能簡(jiǎn)單地將繪制的繪制表面投影到第一眼睛的視口,而是需要使用視圖插值來(lái)從當(dāng)前繪制的繪制表面為用戶的第一眼睛重構(gòu)實(shí)際的用戶視點(diǎn)的第一視口。為了重構(gòu)實(shí)際的用戶視點(diǎn)的第一視口,hmd客戶端設(shè)備可以使用方法2000、或方法2000中包含的步驟的組合。

接下來(lái),hmd客戶端設(shè)備繼續(xù)進(jìn)行以基于當(dāng)前繪制的繪制表面和先前繪制的繪制表面來(lái)針對(duì)用戶的第二眼睛合成實(shí)際的用戶視點(diǎn)的第二視口。為了合成實(shí)際的用戶視點(diǎn)的第二視口,hmd客戶端設(shè)備可以使用方法2500、或方法2500中包含的步驟的組合。應(yīng)當(dāng)理解,用戶的第二眼睛的實(shí)際的用戶視點(diǎn)將以瞳孔間距離被轉(zhuǎn)變到第一眼睛的實(shí)際的用戶視點(diǎn)的左側(cè)或右側(cè)。還應(yīng)當(dāng)理解,對(duì)于第二眼睛的過(guò)去的用戶視點(diǎn)而不是對(duì)于第二眼睛的當(dāng)前用戶視點(diǎn)來(lái)預(yù)測(cè)先前繪制的繪制表面的用戶的第二眼睛的先前預(yù)測(cè)的視點(diǎn)。然而,仍然可以使用先前繪制的繪制表面和當(dāng)前繪制的繪制表面來(lái)應(yīng)用方法2500。

在重構(gòu)第一眼睛的第一視口并且合成第二眼睛的第二視口之后,hmd客戶端設(shè)備繼續(xù)進(jìn)行以在立體顯示設(shè)備上顯示第一視口和第二視口。應(yīng)當(dāng)理解,組合方法2000和方法2500的上述實(shí)施例不限于hmd客戶端設(shè)備。作為另一非限制性示例,上述實(shí)施例也可以應(yīng)用于具有立體屏幕的臺(tái)式計(jì)算機(jī)。

在一些實(shí)施例中,本文中描述的方法和過(guò)程可以與一個(gè)或多個(gè)計(jì)算設(shè)備的計(jì)算系統(tǒng)相關(guān)聯(lián)。特別地,這樣的方法和過(guò)程可以被實(shí)現(xiàn)為計(jì)算機(jī)應(yīng)用程序或服務(wù)、應(yīng)用程序接口(api)、庫(kù)和/或其他計(jì)算機(jī)程序產(chǎn)品。

圖1示意性地示出了可以實(shí)現(xiàn)上述方法和過(guò)程中的一個(gè)或多個(gè)的計(jì)算系統(tǒng)10的非限制性實(shí)施例。計(jì)算系統(tǒng)10以簡(jiǎn)化的形式示出。計(jì)算系統(tǒng)10可以采用一個(gè)或多個(gè)個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、平板計(jì)算機(jī)、家庭娛樂(lè)計(jì)算機(jī)、網(wǎng)絡(luò)計(jì)算設(shè)備、游戲設(shè)備、移動(dòng)計(jì)算設(shè)備、移動(dòng)通信設(shè)備(例如,智能電話)和/或其他計(jì)算設(shè)備的形式。

計(jì)算系統(tǒng)10包括客戶端設(shè)備12上的邏輯機(jī)器18和服務(wù)器設(shè)備14上的邏輯機(jī)器28。計(jì)算系統(tǒng)10還包括客戶端設(shè)備12上的存儲(chǔ)機(jī)器22和服務(wù)器設(shè)備14上的存儲(chǔ)機(jī)器32。計(jì)算系統(tǒng)10可以可選地包括顯示子系統(tǒng)70、輸入子系統(tǒng)24和/或圖1中未示出的其它部件。

邏輯機(jī)器18和邏輯機(jī)器28包括被配置為執(zhí)行指令的一個(gè)或多個(gè)物理設(shè)備。例如,邏輯機(jī)器可以被配置為執(zhí)行作為一個(gè)或多個(gè)應(yīng)用、服務(wù)、程序、例程、庫(kù)、對(duì)象、部件、數(shù)據(jù)結(jié)構(gòu)或其他邏輯構(gòu)造的一部分的指令??梢詫?shí)現(xiàn)這樣的指令以執(zhí)行任務(wù),實(shí)現(xiàn)數(shù)據(jù)類型,變換一個(gè)或多個(gè)部件的狀態(tài),實(shí)現(xiàn)技術(shù)效果,或以其他方式獲得期望的結(jié)果。

邏輯機(jī)器可以包括被配置為執(zhí)行軟件指令的一個(gè)或多個(gè)處理器。附加地或備選地,邏輯機(jī)器可以包括被配置為執(zhí)行硬件或固件指令的一個(gè)或多個(gè)硬件或固件邏輯機(jī)器。邏輯機(jī)器的處理器可以是單核或多核的,并且在其上執(zhí)行的指令可以被配置為順序、并行和/或分布式處理。邏輯機(jī)器的各個(gè)部件可選地分布在兩個(gè)或更多個(gè)單獨(dú)的設(shè)備之間,其可以遠(yuǎn)程地定位和/或被配置用于協(xié)處理。邏輯機(jī)器的各方面可以由以云計(jì)算配置來(lái)配置的可遠(yuǎn)程訪問(wèn)的聯(lián)網(wǎng)計(jì)算設(shè)備來(lái)虛擬化和執(zhí)行。

存儲(chǔ)機(jī)器22和存儲(chǔ)機(jī)器32包括被配置為保持由邏輯機(jī)器可執(zhí)行以實(shí)現(xiàn)本文中描述的方法和過(guò)程的指令的一個(gè)或多個(gè)物理設(shè)備。當(dāng)實(shí)現(xiàn)這種方法和過(guò)程時(shí),可以變換存儲(chǔ)機(jī)器22和存儲(chǔ)機(jī)器32的狀態(tài),例如,以保持不同的數(shù)據(jù)。

存儲(chǔ)機(jī)器22和存儲(chǔ)機(jī)器32可以包括可移除和/或內(nèi)置設(shè)備。存儲(chǔ)機(jī)器22和存儲(chǔ)機(jī)器32可以包括光學(xué)存儲(chǔ)器(例如,cd、dvd、hd-dvd、藍(lán)光盤等)、半導(dǎo)體存儲(chǔ)器(例如,ram、eprom、eeprom等)和/或磁存儲(chǔ)器(例如,硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、mram等)等。存儲(chǔ)機(jī)器22和存儲(chǔ)機(jī)器32可以包括易失性、非易失性、動(dòng)態(tài)、靜態(tài)、讀/寫、只讀、隨機(jī)存取、順序存取、位置可尋址、文件可尋址和/或內(nèi)容可尋址設(shè)備。

應(yīng)當(dāng)理解,存儲(chǔ)機(jī)器22和存儲(chǔ)機(jī)器32包括一個(gè)或多個(gè)物理設(shè)備。然而,本文中描述的指令的各方面可以由沒(méi)有被物理設(shè)備在有限的持續(xù)時(shí)間內(nèi)保持的通信介質(zhì)(例如,電磁信號(hào)、光信號(hào)等)來(lái)傳播。

邏輯機(jī)器18和邏輯機(jī)器28以及存儲(chǔ)機(jī)器22和存儲(chǔ)機(jī)器32的各方面可以一起集成為一個(gè)或多個(gè)硬件邏輯部件。這樣的硬件邏輯部件可以包括現(xiàn)場(chǎng)可編程門陣列(fpga)、程序和應(yīng)用特定的集成電路(pasic/asic)、程序和應(yīng)用特定的標(biāo)準(zhǔn)產(chǎn)品(pssp/assp)、系統(tǒng)級(jí)芯片(soc)和復(fù)雜可編程邏輯器件(cpld)。

術(shù)語(yǔ)“模塊”、“程序”和“引擎”可以用于描述被實(shí)現(xiàn)為執(zhí)行特定功能的計(jì)算系統(tǒng)10的方面。在一些情況下,模塊、程序或引擎可以經(jīng)由執(zhí)行由存儲(chǔ)機(jī)器22和存儲(chǔ)機(jī)器32保持的指令的邏輯機(jī)器18和邏輯機(jī)器28來(lái)實(shí)例化。應(yīng)當(dāng)理解,不同的模塊、程序和/或引擎可以從相同的應(yīng)用、服務(wù)、代碼塊、對(duì)象、庫(kù)、例程、api、函數(shù)等來(lái)實(shí)例化。同樣,相同的模塊、程序和/或引擎可以由不同的應(yīng)用、服務(wù)、代碼塊、對(duì)象、例程、api、函數(shù)等來(lái)實(shí)例化。術(shù)語(yǔ)“模塊”、“程序”和“引擎”可以包括單個(gè)或多組可執(zhí)行文件、數(shù)據(jù)文件、庫(kù)、驅(qū)動(dòng)程序、腳本、數(shù)據(jù)庫(kù)記錄等。

應(yīng)當(dāng)理解,本文中使用的“服務(wù)”是跨多個(gè)用戶會(huì)話可執(zhí)行的應(yīng)用程序。服務(wù)可以可用于一個(gè)或多個(gè)系統(tǒng)部件、程序和/或其他服務(wù)。在一些實(shí)現(xiàn)中,服務(wù)可以在一個(gè)或多個(gè)服務(wù)器計(jì)算設(shè)備上運(yùn)行。

當(dāng)被包括時(shí),顯示子系統(tǒng)70可以用于呈現(xiàn)由存儲(chǔ)機(jī)器22和存儲(chǔ)機(jī)器32保持的數(shù)據(jù)的視覺(jué)表示。該視覺(jué)表示可以采用圖形用戶界面(gui)的形式。由于本文中描述的方法和過(guò)程改變了由存儲(chǔ)機(jī)器保持的數(shù)據(jù),并且因此變換了存儲(chǔ)機(jī)器的狀態(tài),所以顯示子系統(tǒng)70的狀態(tài)同樣可以被變換以便在視覺(jué)上表示底層數(shù)據(jù)的變化。顯示子系統(tǒng)70可以包括實(shí)際上利用任何類型的技術(shù)的一個(gè)或多個(gè)顯示設(shè)備。這樣的顯示設(shè)備可以與共享外殼中的邏輯機(jī)器18和邏輯機(jī)器28和/或存儲(chǔ)機(jī)器22和存儲(chǔ)機(jī)器32組合,或者這樣的顯示設(shè)備可以是外圍顯示設(shè)備。

當(dāng)被包括時(shí),輸入子系統(tǒng)24可以包括或與一個(gè)或多個(gè)用戶輸入設(shè)備(諸如鍵盤、鼠標(biāo)、觸摸屏或游戲控制器)接口。在一些實(shí)施例中,輸入子系統(tǒng)可以包括或與所選擇的自然用戶輸入(nui)部件接口。這種部件可以是集成的或外圍的,并且輸入動(dòng)作的轉(zhuǎn)導(dǎo)和/或處理可以在板上或板外處理。示例nui部件可以包括用于語(yǔ)音和/或聲音識(shí)別的麥克風(fēng);用于機(jī)器視覺(jué)和/或手勢(shì)識(shí)別的紅外、彩色、立體和/或深度相機(jī);用于運(yùn)動(dòng)檢測(cè)和/或意圖識(shí)別的頭部跟蹤器、眼動(dòng)儀、加速度計(jì)和/或陀螺儀;以及用于評(píng)估腦活動(dòng)的電場(chǎng)感測(cè)部件。

應(yīng)當(dāng)理解,本文中描述的配置和/或方法本質(zhì)上是示例性的,并且這些具體實(shí)施例或示例不應(yīng)當(dāng)在限制意義上來(lái)理解,因?yàn)楹芏嘧兓强赡艿摹1疚闹忻枋龅奶囟ɡ袒蚍椒梢员硎救魏螖?shù)目的處理策略中的一個(gè)或多個(gè)。因此,所示出和/或描述的各種動(dòng)作可以以示出和/或描述的順序,以其他順序,并行地執(zhí)行,或被省略。同樣,上述處理的順序可以改變。

本公開的主題包括本文中公開的各種過(guò)程、系統(tǒng)和配置以及其他特征、功能、動(dòng)作和/或?qū)傩缘乃行路f和非顯而易見(jiàn)的組合和子組合、以及其任何和所有等同物。

權(quán)利要求支持部分

本公開的主題在以下段落中進(jìn)一步描述。一個(gè)方面是一種用于使用交織來(lái)合成第二眼睛視口的客戶端設(shè)備,其包括:接收用戶輸入流的用戶輸入設(shè)備、立體顯示設(shè)備、處理器、以及保持用于客戶端應(yīng)用程序的指令的存儲(chǔ)設(shè)備,這些指令由處理器可執(zhí)行以在客戶端應(yīng)用程序的視圖插值模塊處獲取表示用于用戶的第一眼睛的場(chǎng)景的當(dāng)前視圖的當(dāng)前繪制的繪制表面以及表示用于用戶的第二眼睛的場(chǎng)景的過(guò)去的視圖的先前繪制的繪制表面,基于當(dāng)前繪制的繪制表面和先前繪制的繪制表面來(lái)合成表示用于用戶的所述第二眼睛的場(chǎng)景的當(dāng)前視圖的當(dāng)前第二眼睛視口,并且在立體顯示設(shè)備上顯示合成的當(dāng)前第二眼睛視口??蛻舳嗽O(shè)備可以附加地或備選地包括其中第一眼睛在左眼與右眼之間交替??蛻舳嗽O(shè)備可以附加地或備選地包括其中用以基于當(dāng)前繪制的繪制表面和先前繪制的繪制表面來(lái)合成當(dāng)前第二眼睛視口的指令包括用以進(jìn)行以下操作的指令:從當(dāng)前繪制的繪制表面向當(dāng)前第二眼睛視口重新投影,檢測(cè)當(dāng)前第二眼睛視口中的一個(gè)或多個(gè)視覺(jué)孔,并且基于先前繪制的繪制表面來(lái)插值用于一個(gè)或多個(gè)視覺(jué)孔的一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng)。客戶端設(shè)備可以附加地或備選地包括用以進(jìn)行以下操作的指令:在客戶端應(yīng)用程序的視圖插值模塊處獲取用于當(dāng)前繪制的繪制表面的深度圖,檢測(cè)用于當(dāng)前繪制的繪制表面的深度圖中的深度差異,以及其中客戶端應(yīng)用程序被配置為基于所檢測(cè)的深度差異來(lái)檢測(cè)一個(gè)或多個(gè)視覺(jué)孔??蛻舳嗽O(shè)備可以附加地或備選地包括其中用以基于先前繪制的繪制表面來(lái)插值用于一個(gè)或多個(gè)視覺(jué)孔的一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng)的指令包括用以進(jìn)行以下操作的指令:從先前繪制的繪制表面向當(dāng)前第二眼睛視口重新投影。客戶端設(shè)備可以附加地或備選地包括其中用以基于先前繪制的繪制表面來(lái)填充一個(gè)或多個(gè)視覺(jué)孔的指令還包括用以進(jìn)行以下操作的指令:在從先前繪制的繪制表面的重新投影之后,檢測(cè)當(dāng)前第二眼睛視口中的一個(gè)或多個(gè)剩余的視覺(jué)孔,并且基于先前繪制的繪制表面來(lái)填充一個(gè)或多個(gè)剩余的視覺(jué)孔??蛻舳嗽O(shè)備可以附加地或備選地包括保持用以進(jìn)行以下操作的另外的指令:基于用戶輸入流來(lái)計(jì)算用戶視點(diǎn)的變化速率,并且其中客戶端應(yīng)用程序被配置為基于所計(jì)算的用戶視點(diǎn)的變化速率來(lái)檢測(cè)一個(gè)或多個(gè)剩余的視覺(jué)孔。客戶端設(shè)備可以附加地或備選地包括其中用以填充一個(gè)或多個(gè)剩余的視覺(jué)孔的指令包括用以進(jìn)行以下操作的指令:對(duì)于一個(gè)或多個(gè)剩余的視覺(jué)孔中的每個(gè)剩余的視覺(jué)孔,確定當(dāng)前第二眼睛視口中的像素位置,以及從與一個(gè)或多個(gè)剩余的視覺(jué)孔中的每個(gè)剩余的視覺(jué)孔的當(dāng)前第二眼睛視口中的像素位置相對(duì)應(yīng)的先前繪制的繪制表面中的像素位置來(lái)復(fù)制像素?cái)?shù)據(jù)。客戶端設(shè)備可以附加地或備選地包括其中當(dāng)前繪制的繪制表面和先前繪制的繪制表面具有比客戶端應(yīng)用程序的視口更寬的視場(chǎng)。

另一方面提供了一種用于使用交織來(lái)合成第二眼睛視口的方法,其包括在執(zhí)行客戶端應(yīng)用程序的客戶端設(shè)備處:在客戶端應(yīng)用程序的視圖插值模塊處獲取表示用于用戶的第一眼睛的場(chǎng)景的當(dāng)前視圖的當(dāng)前繪制的繪制表面以及表示用于用戶的第二眼睛的場(chǎng)景的過(guò)去的視圖的先前繪制的繪制表面,并且基于當(dāng)前繪制的繪制表面和先前繪制的繪制表面來(lái)合成表示用于用戶的所述第二眼睛的場(chǎng)景的當(dāng)前視圖的當(dāng)前第二眼睛視口。該方法可以另外地或備選地包括其中第一眼睛在左眼與右眼之間交替。該方法可以另外地或備選地包括其中基于當(dāng)前繪制的繪制表面和先前繪制的繪制表面來(lái)合成當(dāng)前第二眼睛視口還包括:從當(dāng)前繪制的繪制表面向當(dāng)前第二眼睛視口重新投影,檢測(cè)當(dāng)前第二眼睛視口中的一個(gè)或多個(gè)視覺(jué)孔,以及基于先前繪制的繪制表面來(lái)插值用于一個(gè)或多個(gè)視覺(jué)孔的一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng)。該方法可以另外地或備選地包括在客戶端應(yīng)用程序的視圖插值模塊處獲取用于當(dāng)前繪制的繪制表面的深度圖,檢測(cè)用于當(dāng)前繪制的繪制表面的深度圖中的深度差異,并且其中客戶端應(yīng)用程序被配置為基于所檢測(cè)的深度差異來(lái)檢測(cè)一個(gè)或多個(gè)視覺(jué)孔。該方法可以另外地或備選地包括其中基于先前繪制的繪制表面來(lái)插值用于一個(gè)或多個(gè)視覺(jué)孔的一個(gè)或多個(gè)像素?cái)?shù)據(jù)項(xiàng)包括:從先前繪制的繪制表面向當(dāng)前第二眼睛視口重新投影。該方法可以另外地或備選地包括其中用以基于先前繪制的繪制表面來(lái)填充一個(gè)或多個(gè)視覺(jué)孔的指令還包括:在從先前繪制的繪制表面的重新投影之后,檢測(cè)當(dāng)前第二眼睛視口中的一個(gè)或多個(gè)剩余的視覺(jué)孔,并且基于先前繪制的繪制表面來(lái)填充一個(gè)或多個(gè)剩余的視覺(jué)孔。該方法可以另外地或備選地包括基于用戶輸入流來(lái)計(jì)算用戶視點(diǎn)的變化速率,并且其中客戶端應(yīng)用程序被配置為基于所計(jì)算的用戶視點(diǎn)的變化速率來(lái)檢測(cè)一個(gè)或多個(gè)剩余的視覺(jué)孔。該方法可以另外地或可選地包括其中用以基于先前繪制的繪制表面來(lái)填充一個(gè)或多個(gè)剩余的視覺(jué)孔包括:對(duì)于一個(gè)或多個(gè)剩余的視覺(jué)孔中的每個(gè)剩余的視覺(jué)孔,確定當(dāng)前第二眼睛視口中的像素位置,以及從與一個(gè)或多個(gè)剩余的視覺(jué)孔中的每個(gè)剩余的視覺(jué)孔的當(dāng)前第二眼睛視口中的像素位置相對(duì)應(yīng)的先前繪制的繪制表面中的像素位置來(lái)復(fù)制像素?cái)?shù)據(jù)。該方法可以附加地或備選地包括其中當(dāng)前繪制的繪制表面和先前繪制的繪制表面具有比客戶端應(yīng)用程序的視口更寬的視場(chǎng)。

另一方面提供了一種用于使用交織來(lái)合成第二眼睛視口的客戶端設(shè)備,其包括接收用戶輸入流的用戶輸入設(shè)備、立體顯示設(shè)備、處理器、和保持用于客戶端應(yīng)用程序的指令的存儲(chǔ)設(shè)備,這些指令由處理器執(zhí)行可執(zhí)行以進(jìn)行以下操作:通過(guò)網(wǎng)絡(luò)從服務(wù)器設(shè)備接收具有用戶的第一眼睛的預(yù)測(cè)的用戶視點(diǎn)的預(yù)測(cè)的場(chǎng)景的當(dāng)前繪制的繪制表面,在客戶端應(yīng)用程序的視圖插值模塊處獲取具有用戶的第二眼睛的預(yù)先預(yù)測(cè)的用戶視點(diǎn)的先前預(yù)測(cè)的場(chǎng)景的先前繪制的繪制表面,從用戶輸入設(shè)備在用戶輸入流中接收隨后的用戶導(dǎo)航輸入,基于隨后的用戶導(dǎo)航輸入來(lái)確定第一眼睛的實(shí)際的用戶視點(diǎn)和第二眼睛的實(shí)際的用戶視點(diǎn),基于第一眼睛的預(yù)測(cè)的用戶視點(diǎn)和第一眼睛的實(shí)際的用戶視點(diǎn)來(lái)確定用戶視點(diǎn)錯(cuò)誤預(yù)測(cè),從當(dāng)前繪制的繪制表面重構(gòu)用戶的第一眼睛的實(shí)際的用戶視點(diǎn)的第一視口;基于當(dāng)前繪制的繪制表面和先前繪制的繪制表面來(lái)合成用戶的第二眼睛的實(shí)際的用戶視點(diǎn)的第二視口,并且在立體顯示設(shè)備上顯示第一視口和第二視口??蛻舳嗽O(shè)備可以附加地或備選地包括其中第一眼睛的視圖在左眼的視圖與右眼的視圖之間交替。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1