本發(fā)明涉及計算機軟件領域,特別涉及一種三維虛擬場景的渲染方法和裝置。
背景技術:
在虛擬現(xiàn)實應用中,渲染幀率是影響用戶體驗的關鍵性因素,因此如何提高渲染畫面的幀率成為亟待解決的問題。當渲染幀率較低時,常見的解決思路之一是從場景制作層面減少渲染的開銷,另一是從渲染流程上入手。
技術實現(xiàn)要素:
為此,需要提供一種能夠解決在虛擬現(xiàn)實場景中由于低幀率導致的幀間跳變的問題的技術方案。
為實現(xiàn)上述目的,發(fā)明人提供了一種三維虛擬場景的渲染方法,包括如下步驟:
啟動圖片幀插值渲染模式;
判斷當前畫面的渲染狀態(tài)是否已完成,如是則將渲染完成的該幀畫面直接輸出到顯示屏幕,否則:
生成中間幀并將中間幀輸出到顯示屏幕,所述生成中間幀具體包括:擴大上一幀渲染畫面的渲染尺寸并預測虛擬現(xiàn)實設備的當前偏移數(shù)據,根據預測的虛擬現(xiàn)實設備的當前偏移數(shù)據從擴大渲染尺寸的上一幀渲染畫面中截取生成中間幀。
進一步地,所述的三維虛擬場景的渲染方法中,所述步驟“預測虛擬現(xiàn)實設備的當前偏移數(shù)據”具體包括:
根據上一幀或上若干幀內虛擬現(xiàn)實設備在偏移方向上的加速度建立概率模型和誤差函數(shù)以預測虛擬現(xiàn)實設備的當前偏移方向;
根據上一幀或上若干幀內虛擬現(xiàn)實設備在偏移方向上的加速度建立概率模型和誤差函數(shù)以預測虛擬現(xiàn)實設備的當前偏移速度。
進一步地,所述的三維虛擬場景的渲染方法中,啟動圖片幀插值渲染模式之前還有一監(jiān)測和判斷的步驟:保持監(jiān)測渲染畫面的幀率,當畫面的幀率不小于一預設閾值時畫面保持以原分辨率進行渲染;當畫面幀率小于預設閾值時啟動圖片幀插值渲染模式。
進一步地,所述的三維虛擬場景的渲染方法中,啟動圖片幀插值渲染模式之前還有一監(jiān)測和判斷的步驟:保持監(jiān)測渲染畫面的幀率,當畫面的幀率變化幅度不大于一預設閾值時畫面保持以原分辨率進行渲染;當畫面的幀率變化幅度大于預設閾值時啟動圖片幀插值渲染模式。
進一步地,所述的三維虛擬場景的渲染方法中,所述步驟“擴大上一幀渲染畫面的渲染尺寸”具體包括:根據硬件刷新率和虛擬顯示設備的偏移速度確定對上一幀渲染畫面的渲染尺寸的擴大水平。
發(fā)明人同時還提供了一種三維虛擬場景的渲染裝置,包括啟動單元、渲染狀態(tài)判斷單元、中間幀生成單元和輸出單元;
所述啟動單元用于啟動圖片幀插值渲染模式;
所述渲染狀態(tài)判斷單元用于判斷當前畫面的渲染狀態(tài)是否已完成,當渲染狀態(tài)判斷單元判定當前畫面的渲染狀態(tài)已完成時輸出單元將渲染完成的該幀畫面直接輸出到顯示屏幕,否則:
中間幀生成單元生成中間幀,輸出單元將中間幀輸出到顯示屏幕;中間幀生成單元生成中間幀具體包括:擴大上一幀渲染畫面的渲染尺寸并預測虛擬現(xiàn)實設備的當前偏移數(shù)據,根據預測的虛擬現(xiàn)實設備的當前偏移數(shù)據從擴大渲染尺寸的上一幀渲染畫面中截取生成中間幀。
進一步地,所述的三維虛擬場景的渲染裝置中,中間幀生成單元包括偏移預測模塊;所述偏移預測模塊用于預測虛擬現(xiàn)實設備的當前偏移數(shù)據,具體包括:
根據上一幀或上若干幀內虛擬現(xiàn)實設備在偏移方向上的加速度建立概率模型和誤差函數(shù)以預測虛擬現(xiàn)實設備的當前偏移方向;
根據上一幀或上若干幀內虛擬現(xiàn)實設備在偏移方向上的加速度建立概率模型和誤差函數(shù)以預測虛擬現(xiàn)實設備的當前偏移速度。
進一步地,所述的三維虛擬場景的渲染裝置還包括監(jiān)控單元,用于控制啟動單元啟動圖片幀插值渲染模式;具體包括:監(jiān)控單元保持監(jiān)測渲染畫面的幀率,當畫面的幀率不小于一預設閾值時畫面保持以原分辨率進行渲染;當畫面幀率小于預設閾值時控制啟動單元啟動圖片幀插值渲染模式。
進一步地,所述的三維虛擬場景的渲染裝置還包括監(jiān)控單元,用于控制啟動單元啟動圖片幀插值渲染模式;具體包括:監(jiān)控單元保持監(jiān)測渲染畫面的幀率,當畫面的幀率變化幅度不大于一預設閾值時畫面保持以原分辨率進行渲染;當畫面的幀率變化幅度大于預設閾值時控制啟動單元啟動圖片幀插值渲染模式。
進一步地,所述的三維虛擬場景的渲染裝置中,中間幀生成單元包括渲染擴大模塊,用于擴大上一幀渲染畫面的渲染尺寸,具體包括:根據硬件刷新率和虛擬顯示設備的偏移速度確定對上一幀渲染畫面的渲染尺寸的擴大水平。
區(qū)別于現(xiàn)有技術,上述技術方案將三維虛擬場景中動態(tài)物件與靜態(tài)物件進行分離,利用靜態(tài)物件可見性運動差異較小的特點,預先渲染出較大的靜態(tài)畫面,根據偏移量從合適的區(qū)域截取出視口大小的圖片插入丟幀的渲染幀內,從而解決在虛擬現(xiàn)實場景中由于低幀率導致的幀間跳變的情況。
附圖說明
圖1為本發(fā)明一實施方式所述的三維虛擬場景的渲染方法的流程圖;
圖2為本發(fā)明一實施方式所述的三維虛擬場景的渲染裝置的結構示意圖。
附圖標記說明:
1-啟動單元
2-渲染狀態(tài)判斷單元
3-中間幀生成單元31-偏移預測模塊32-渲染擴大模塊
4-輸出單元
5-監(jiān)控單元
具體實施方式
為詳細說明技術方案的技術內容、構造特征、所實現(xiàn)目的及效果,以下結合具體實施例并配合附圖詳予說明。
請參閱圖1,為本發(fā)明一實施方式所述的方法的流程圖;所述方法包括如下步驟:
S1、啟動圖片幀插值渲染模式;
S2、判斷當前畫面的渲染狀態(tài)是否已完成,如是則進入S3,否則進入S4:
S3、將渲染完成的該幀畫面直接輸出到顯示屏幕;
S4、生成中間幀并將中間幀輸出到顯示屏幕。
具體而言,所述生成中間幀具體包括:擴大上一幀渲染畫面的渲染尺寸并預測虛擬現(xiàn)實設備的當前偏移數(shù)據,根據預測的虛擬現(xiàn)實設備的當前偏移數(shù)據從擴大渲染尺寸的上一幀渲染畫面中截取生成中間幀。
中間幀生成的意義主要在于,由于當前幀畫面尚未渲染完成,無法獲取到當前幀畫面的數(shù)據,因此只能從上一幀渲染畫面的數(shù)據入手。而在虛擬現(xiàn)實場景中,若保持虛擬現(xiàn)實設備不動,則對于用戶來說即使幀率較低,也不會帶來較大的不適感,但若是移動、旋轉虛擬現(xiàn)實設備時,需要對原視野外的畫面進行渲染,當幀率較低時,跳變的情況尤為明顯。本發(fā)明試圖通過擴大渲染畫面的大小來解決這個問題,當上一幀畫面渲染的視口較大時,即使當前幀需要移動、旋轉虛擬現(xiàn)實設備,也可以根據設備的偏移值,計算上一幀畫面上需要進行的偏移(包括旋轉和位移),也正因此上一幀渲染的畫面較大,所以有足夠的數(shù)據作為當前中間幀畫面生成的支撐。因此中間幀的生成同時需要預測虛擬現(xiàn)實設備的當前偏移數(shù)據以及擴大對上一幀的渲染范圍(尺寸)。
在實時渲染的環(huán)境中,只能獲取到上一幀及其之前虛擬現(xiàn)實設備所產生的偏移和速率,因此需要解決在當前幀的垂直同步發(fā)生前獲取偏移的方向和速率的問題。偏移的方向和數(shù)值都是必要的,因為若沒有偏移方向,而只有偏移值,那么需要對原渲染畫面的上下左右各擴大偏移值大小的渲染畫面,將造成巨大的性能開銷。若能夠對偏移方向進行預判,只擴大偏移方向上的渲染畫面大小,將減少許多不必要的性能消耗。這些也就是S4所述步驟“預測虛擬現(xiàn)實設備的當前偏移數(shù)據”的工作,本發(fā)明的思路是基于在先數(shù)據進行偏移方向與移動速率獲?。河捎诿繋g只間隔十幾毫秒到幾十毫秒,因此可以通過當前幀之前的若干幀內虛擬現(xiàn)實設備的偏移方向和加速度來預判其在當前幀的運動方向和速率,從而更加精確地獲取需要擴大渲染的區(qū)域的方向和大小。具體包括:
根據上一幀或上若干幀內虛擬現(xiàn)實設備在偏移方向上的加速度建立概率模型和誤差函數(shù)以預測虛擬現(xiàn)實設備的當前偏移方向:若虛擬現(xiàn)實設備在某方向上進行加速運動,那么當前幀其繼續(xù)沿著該方向運動的可能性極大;若在某方向上勻速運動時,那么當前幀其繼續(xù)沿著該方向運動的可能性較大;若在某方向上減速運動時,那么當前幀其仍有可能沿著該方向運動,但可能性較小,且其運動方向有較大可能性在后續(xù)幾幀時間內發(fā)生變化。通過當前幀前的數(shù)據建立概率模型和誤差函數(shù),當下一幀到來時統(tǒng)計當前幀的數(shù)據,與預估的值進行比較,并修改誤差函數(shù),當統(tǒng)計到的數(shù)據量較大時,便能夠更精確地預判其當前幀的運動方向。
以及根據上一幀或上若干幀內虛擬現(xiàn)實設備在偏移方向上的加速度建立概率模型和誤差函數(shù)以預測虛擬現(xiàn)實設備的當前偏移速度:原理類似于偏移方向的預測,通過當前幀前的加速度數(shù)據來預判其當前幀的移動速率,同樣當統(tǒng)計到的數(shù)據量較大時,便能夠更精確地預判當前幀的移動速率。
在一些實施方式中,S4所述步驟“擴大上一幀渲染畫面的渲染尺寸”具體包括:根據硬件刷新率和虛擬顯示設備的偏移速度確定對上一幀渲染畫面的渲染尺寸的擴大水平。由于在幀率較低的情況下,渲染的負荷較大,因此對上一幀畫面渲染的大小進行約束是必要的。擴大畫面的大小到何種程度則是通過硬件刷新率及用戶的偏移速率來確定,當硬件的刷新率為MHz時,其每幀所經歷的時間為1000/M,該時間乘以用戶的偏移速率可以得到其偏移值,以該偏移值為增加渲染區(qū)域的大小來擴大渲染的畫面。
在某些實施方式中,所述的三維虛擬場景的渲染方法在步驟S1的啟動圖片幀插值渲染模式之前還有一監(jiān)測和判斷的步驟S0:保持監(jiān)測渲染畫面的幀率,當畫面的幀率不小于一預設閾值時畫面保持以原分辨率進行渲染;當畫面幀率小于預設閾值時啟動圖片幀插值渲染模式。在另外一些實施方式中,監(jiān)測和判斷的標準有所差別,其步驟S0可以是:保持監(jiān)測渲染畫面的幀率,當畫面的幀率變化幅度不大于一預設閾值時畫面保持以原分辨率進行渲染;當畫面的幀率變化幅度大于預設閾值時啟動圖片幀插值渲染模式。這些監(jiān)控標準的意義主要在于,當畫面幀率低于某預設閾值時,說明畫面渲染幀率較低;當畫面幀率出現(xiàn)大幅跳變時,即使其值始終大于預設的閾值,也會令用戶出現(xiàn)眩暈等不適的感覺,意味著需要監(jiān)控以便在出現(xiàn)這些情況時進行改善。
請參閱圖2,為本發(fā)明一實施方式所述的三維虛擬場景的渲染裝置的結構示意圖;所述裝置包括啟動單元1、渲染狀態(tài)判斷單元2、中間幀生成單元3和輸出單元4;
所述啟動單元1用于啟動圖片幀插值渲染模式;
所述渲染狀態(tài)判斷單元2用于判斷當前畫面的渲染狀態(tài)是否已完成,當渲染狀態(tài)判斷單元2判定當前畫面的渲染狀態(tài)已完成時輸出單元4將渲染完成的該幀畫面直接輸出到顯示屏幕,否則:
中間幀生成單元3生成中間幀,輸出單元4將中間幀輸出到顯示屏幕;中間幀生成單元3生成中間幀具體包括:擴大上一幀渲染畫面的渲染尺寸并預測虛擬現(xiàn)實設備的當前偏移數(shù)據,根據預測的虛擬現(xiàn)實設備的當前偏移數(shù)據從擴大渲染尺寸的上一幀渲染畫面中截取生成中間幀。中間幀生成的意義主要在于,由于當前幀畫面尚未渲染完成,無法獲取到當前幀畫面的數(shù)據,因此只能從上一幀渲染畫面的數(shù)據入手。而在虛擬現(xiàn)實場景中,若保持虛擬現(xiàn)實設備不動,則對于用戶來說即使幀率較低,也不會帶來較大的不適感,但若是移動、旋轉虛擬現(xiàn)實設備時,需要對原視野外的畫面進行渲染,當幀率較低時,跳變的情況尤為明顯。本發(fā)明試圖通過擴大渲染畫面的大小來解決這個問題,當上一幀畫面渲染的視口較大時,即使當前幀需要移動、旋轉虛擬現(xiàn)實設備,也可以根據設備的偏移值,計算上一幀畫面上需要進行的偏移(包括旋轉和位移),也正因此上一幀渲染的畫面較大,所以有足夠的數(shù)據作為當前中間幀畫面生成的支撐。因此中間幀的生成同時需要預測虛擬現(xiàn)實設備的當前偏移數(shù)據以及擴大對上一幀的渲染范圍(尺寸)。
在實時渲染的環(huán)境中,只能獲取到上一幀及其之前虛擬現(xiàn)實設備所產生的偏移和速率,因此需要解決在當前幀的垂直同步發(fā)生前獲取偏移的方向和速率的問題。偏移的方向和數(shù)值都是必要的,因為若沒有偏移方向,而只有偏移值,那么需要對原渲染畫面的上下左右各擴大偏移值大小的渲染畫面,將造成巨大的性能開銷。若能夠對偏移方向進行預判,只擴大偏移方向上的渲染畫面大小,將減少許多不必要的性能消耗。本發(fā)明的思路是基于在先數(shù)據進行偏移方向與移動速率獲取:由于每幀之間只間隔十幾毫秒到幾十毫秒,因此可以通過當前幀之前的若干幀內虛擬現(xiàn)實設備的偏移方向和加速度來預判其在當前幀的運動方向和速率,從而更加精確地獲取需要擴大渲染的區(qū)域的方向和大小。因此,某些實施方式中,中間幀生成單元3包括偏移預測模塊31;所述偏移預測模塊31用于預測虛擬現(xiàn)實設備的當前偏移數(shù)據,具體包括:
根據上一幀或上若干幀內虛擬現(xiàn)實設備在偏移方向上的加速度建立概率模型和誤差函數(shù)以預測虛擬現(xiàn)實設備的當前偏移方向;若虛擬現(xiàn)實設備在某方向上進行加速運動,那么當前幀其繼續(xù)沿著該方向運動的可能性極大;若在某方向上勻速運動時,那么當前幀其繼續(xù)沿著該方向運動的可能性較大;若在某方向上減速運動時,那么當前幀其仍有可能沿著該方向運動,但可能性較小,且其運動方向有較大可能性在后續(xù)幾幀時間內發(fā)生變化。通過當前幀前的數(shù)據建立概率模型和誤差函數(shù),當下一幀到來時統(tǒng)計當前幀的數(shù)據,與預估的值進行比較,并修改誤差函數(shù),當統(tǒng)計到的數(shù)據量較大時,便能夠更精確地預判其當前幀的運動方向。
偏移預測模塊31還將根據上一幀或上若干幀內虛擬現(xiàn)實設備在偏移方向上的加速度建立概率模型和誤差函數(shù)以預測虛擬現(xiàn)實設備的當前偏移速度。原理類似于偏移方向的預測,通過當前幀前的加速度數(shù)據來預判其當前幀的移動速率,同樣當統(tǒng)計到的數(shù)據量較大時,便能夠更精確地預判當前幀的移動速率。
進一步地,所述的三維虛擬場景的渲染裝置還包括監(jiān)控單元5,用于控制啟動單元1啟動圖片幀插值渲染模式;具體包括:監(jiān)控單元5保持監(jiān)測渲染畫面的幀率,當畫面的幀率不小于一預設閾值時畫面保持以原分辨率進行渲染;當畫面幀率小于預設閾值時控制啟動單元1啟動圖片幀插值渲染模式。
在另一些實施方式中,監(jiān)控單元5控制啟動單元1啟動圖片幀插值渲染模式的方式具體包括:監(jiān)控單元5保持監(jiān)測渲染畫面的幀率,當畫面的幀率變化幅度不大于一預設閾值時畫面保持以原分辨率進行渲染;當畫面的幀率變化幅度大于預設閾值時控制啟動單元1啟動圖片幀插值渲染模式。
上述兩種監(jiān)控標準的意義主要在于,當畫面幀率低于某預設閾值時,說明畫面渲染幀率較低;當畫面幀率出現(xiàn)大幅跳變時,即使其值始終大于預設的閾值,也會令用戶出現(xiàn)眩暈等不適的感覺,意味著需要監(jiān)控以便在出現(xiàn)這些情況時進行改善。
在一些實施方式中,中間幀生成單元3還包括渲染擴大模塊32,用于擴大上一幀渲染畫面的渲染尺寸,具體包括:根據硬件刷新率和虛擬顯示設備的偏移速度確定對上一幀渲染畫面的渲染尺寸的擴大水平。由于在幀率較低的情況下,渲染的負荷較大,因此對上一幀畫面渲染的大小進行約束是必要的。擴大畫面的大小到何種程度則是通過硬件刷新率及用戶的偏移速率來確定,當硬件的刷新率為MHz時,其每幀所經歷的時間為1000/M,該時間乘以用戶的偏移速率可以得到其偏移值,以該偏移值為增加渲染區(qū)域的大小來擴大渲染的畫面。
區(qū)別于現(xiàn)有技術,上述技術方案將三維虛擬場景中動態(tài)物件與靜態(tài)物件進行分離,利用靜態(tài)物件可見性運動差異較小的特點,預先渲染出較大的靜態(tài)畫面,根據偏移量從合適的區(qū)域截取出視口大小的圖片插入丟幀的渲染幀內,從而解決在虛擬現(xiàn)實場景中由于低幀率導致的幀間跳變的情況。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的要素。此外,在本文中,“大于”、“小于”、“超過”等理解為不包括本數(shù);“以上”、“以下”、“以內”等理解為包括本數(shù)。
本領域內的技術人員應明白,上述各實施例可提供為方法、裝置、或計算機程序產品。這些實施例可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。上述各實施例涉及的方法中的全部或部分步驟可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于計算機設備可讀取的存儲介質中,用于執(zhí)行上述各實施例方法所述的全部或部分步驟。所述計算機設備,包括但不限于:個人計算機、服務器、通用計算機、專用計算機、網絡設備、嵌入式設備、可編程設備、智能移動終端、智能家居設備、穿戴式智能設備、車載智能設備等;所述的存儲介質,包括但不限于:RAM、ROM、磁碟、磁帶、光盤、閃存、U盤、移動硬盤、存儲卡、記憶棒、網絡服務器存儲、網絡云存儲等。
上述各實施例是參照根據實施例所述的方法、設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到計算機設備的處理器以產生一個機器,使得通過計算機設備的處理器執(zhí)行的指令產生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機設備以特定方式工作的計算機設備可讀存儲器中,使得存儲在該計算機設備可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機設備上,使得在計算機設備上執(zhí)行一系列操作步驟以產生計算機實現(xiàn)的處理,從而在計算機設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已經對上述各實施例進行了描述,但本領域內的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改,所以以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利保護范圍,凡是利用本發(fā)明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發(fā)明的專利保護范圍之內。