本發(fā)明涉及一種虛擬環(huán)境預加載方法,特別涉及一種基于社交推薦和推拉策略的漸進DVE預下載方法及系統(tǒng)。
背景技術:
預加載是指對用戶節(jié)點即將加載的場景數(shù)據(jù)進行提前拾取,以減少場景渲染的等待時間,提高用戶漫游的流暢度。節(jié)點在虛擬場景中漫游時,節(jié)點化身為保證最基本的視覺需求,首先要加載其興趣區(qū)域(area of interest,AOI)內的場景數(shù)據(jù),在網(wǎng)絡帶寬充分的情況下,可以對未來可能加載的場景數(shù)據(jù)進行預測并提前加載,為化身漫游的流暢性提供保障。而數(shù)據(jù)分發(fā)策略是調度預加載場景數(shù)據(jù)的實現(xiàn)過程,是研究在所構建的覆蓋網(wǎng)上,節(jié)點之間如何進行調度從而實現(xiàn)場景數(shù)據(jù)的高效實時傳輸。目前,基本的分發(fā)策略有兩種:推(Push)策略和拉(Pull)策略。Pull/Push策略是根據(jù)客戶端主動或被動的獲取數(shù)據(jù)而劃分出的兩種傳輸策略,在Push模式中,客戶端不斷地將自身的視點信息發(fā)送給服務器,服務器根據(jù)這些信息對數(shù)據(jù)請求者的所需場景進行判斷,并將場景模型數(shù)據(jù)發(fā)送給該客戶端。在Pull模式中,每一個客戶端都已載入了整個虛擬場景的描述文件,客戶端可以根據(jù)自身的視點信息,來判斷還要下載哪些場景文件,并向服務器或者其他節(jié)點發(fā)出請求。
已有的預下載策略都是通過預判化身的運動趨勢并進行場景的預下載,主要方法有基于歷史運動軌跡的預下載和基于領域擴張的預下載,這些預下載方式主要有以下不足:
1)節(jié)點協(xié)作性低,現(xiàn)有的DVE預下載機制主要是針對C/S架構的DVE,皆為根據(jù)化身各自的歷史運動軌跡或趨勢孤立來判斷每個節(jié)點的預加載場景,沒有考慮到用戶節(jié)點之間的協(xié)作性,也給服務器帶來了巨大壓力。
2)數(shù)據(jù)分發(fā)效率低,當前針對場景數(shù)據(jù)的分發(fā)只是單一的采用pull和push機制,沒有和DVE數(shù)據(jù)加載需求特征結合起來,導致了數(shù)據(jù)分發(fā)效率低,加重了系統(tǒng)的網(wǎng)絡負載。
因此,現(xiàn)有技術還有待于改進和發(fā)展。
技術實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于社交推薦和推拉策略的漸進DVE預下載方法及系統(tǒng),解決了現(xiàn)有技術存在的預下載策略的節(jié)點協(xié)作性低和數(shù)據(jù)分發(fā)效率低,給服務器帶來巨大壓力和加重系統(tǒng)網(wǎng)絡負載的問題。
本發(fā)明的上述目的通過以下技術方案實現(xiàn):
基于社交推薦和推拉策略的漸進DVE預下載方法及系統(tǒng),包括以下步驟:
步驟A00:基于泰森多邊形圖對化身的當前潛在可視場景集進行判斷,對化身當前興趣區(qū)域的場景數(shù)據(jù)進行拉取下載;
步驟B00:基于社交推薦對化身的未來潛在可視場景集進行預測,通過拉-推混合預下載機制對化身未來興趣區(qū)域內及外圍的場景數(shù)據(jù)進行預下載,并將相應的場景數(shù)據(jù)分發(fā)至對應的化身。
所述的步驟A00中,通過基于泰森多邊形圖的鄰居發(fā)現(xiàn)機制、場景拾取機制來保障化身當前興趣區(qū)域的場景數(shù)據(jù)進行拉取下載。
所述的步驟B00包括以下步驟:
步驟b10:不同化身間進行狀態(tài)信息的周期性交互;
步驟b20:根據(jù)不同化身的狀態(tài)信息計算不同化身間的興趣相似度;
步驟b30:根據(jù)計算出的不同化身間的興趣相似度構建鄰居集合;
步驟b40:根據(jù)鄰居集合得出不同化身預推薦的場景集,按照化身的興趣度對這些場景集進行排序,并將化身興趣度高的場景集數(shù)據(jù)推薦給化身;
步驟b50:通過拉-推混合預下載機制對不同化身未來興趣區(qū)域內及外圍的場景數(shù)據(jù)進行預下載,并將不同的場景數(shù)據(jù)分發(fā)至對應的化身。
所述的步驟b20至步驟b40通過以下過程實現(xiàn):
設化身u對其場景興趣集中虛擬物體的興趣度向量為Du={Du1,Du2,…,Dun},其中,n=|mt|為場景興趣集的大小,采用修正的余弦相似度來計算不同化身間的相似度Ssim(u,v),
其中,Su,Sv,Suv分別為化身u和化身v的場景興趣集及其它們的交集,Dui和Dvi分別為化身u和化身v對虛擬物體i的興趣度,和分別為u和v的平均興趣度;
給定閾值ε,當Ssim(u,v)>ε時,v將成為u的興趣集鄰居,建立鄰居集合N={v1,v2,…,vk},反之,v和u不會互為興趣集鄰居;根據(jù)當前化身u和所有鄰居v的場景集,生成u的預推薦場景集S=Sv1∪Sv2∪…∪Svk-Su,對于S中的任意虛擬物體,使用加權平均算法預測化身u對它們的興趣度
最后,將預推薦場景集S中的虛擬物體按照興趣度進行大小排序,將排名靠前的虛擬物體推薦給化身u,完成場景集數(shù)據(jù)推薦。
所述的場景集數(shù)據(jù)分為預拉取區(qū)域數(shù)據(jù)和預推送區(qū)域數(shù)據(jù)。
在當前化身節(jié)點下行帶寬能力和處理能力均滿足要求時,所述的步驟b50包括以下步驟:
步驟b511:對于當前化身節(jié)點興趣區(qū)域的預拉取區(qū)域數(shù)據(jù)采用拉取機制從鄰居節(jié)點直接獲取資源;
步驟b512:對于當前化身節(jié)點興趣區(qū)域的預推送區(qū)域數(shù)據(jù)采用推送機制,通過超級節(jié)點將當前化身節(jié)點的興趣集鄰居中興趣度高的場景數(shù)據(jù)直接推薦給當前化身節(jié)點。
在當前化身節(jié)點下行帶寬能力和處理能力不足時,所述的步驟b50包括以下步驟:
步驟b521:首先通過超級節(jié)點將當前節(jié)點興趣區(qū)域的預拉取區(qū)域的數(shù)據(jù)信息更新至鄰居節(jié)點,鄰居節(jié)點將當前節(jié)點興趣區(qū)域的預拉取區(qū)域的數(shù)據(jù)通過拉取機制從自身鄰居節(jié)點獲取資源,再將獲取的當前節(jié)點興趣區(qū)域的預拉取區(qū)域的數(shù)據(jù)通過推送機制推薦給當前節(jié)點;
步驟b522:對于當前化身節(jié)點興趣區(qū)域的預推送區(qū)域數(shù)據(jù)采用推送機制通過超級節(jié)點從當前化身節(jié)點的興趣集鄰居中將當前化身節(jié)點興趣度高的場景數(shù)據(jù)直接推薦給當前化身節(jié)點。
本發(fā)明的另一目的在于提供一種基于社交推薦和推拉策略的漸進DVE預下載系統(tǒng),包括當前化身節(jié)點和超級節(jié)點,當前化身節(jié)點通過基于泰森多邊形圖的鄰居發(fā)現(xiàn)機制、場景拾取機制對當前興趣區(qū)域的場景數(shù)據(jù)進行拉取下載;當前化身節(jié)點將自身的狀態(tài)信息提交至超級節(jié)點,同時接收超級節(jié)點發(fā)送的其他節(jié)點的狀態(tài)信息,超級節(jié)點根據(jù)當前化身節(jié)點和其他節(jié)點的狀態(tài)信息計算當前化身節(jié)點和其他節(jié)點的興趣相似度,根據(jù)計算結果為當前化身節(jié)點構建鄰居集合,并根據(jù)鄰居集合得出當前化身節(jié)點預推薦的場景集,按照當前化身節(jié)點的興趣度對這些場景集進行排序,并將當前化身節(jié)點興趣度高的場景集數(shù)據(jù)推薦給當前化身節(jié)點;通過拉-推混合預下載機制,當前化身節(jié)點將自身需要的預推薦場景集數(shù)據(jù)向鄰居集合中的節(jié)點或超級節(jié)點發(fā)送請求進行預下載。
本發(fā)明的有益效果在于:本發(fā)明通過提供一種基于社交推薦和推拉策略的漸進DVE預下載方法及系統(tǒng),首次將社交概念引入到了場景預下載機制中,量化了節(jié)點化身興趣,給出了化身相似度計算算法和預推薦場景的預測算法;基于節(jié)點場景拾取區(qū)域的特征,提出了針對不同區(qū)域的Pull-Push策略,充分利用了對等網(wǎng)絡中節(jié)點的協(xié)作特性,減少了數(shù)據(jù)傳輸延遲,從整體上提升了DVE的數(shù)據(jù)傳輸效率。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,本發(fā)明的示意性實例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。
圖1為本發(fā)明的基于社交推薦和推拉策略的漸進DVE預下載方法的步驟流程圖。
圖2為本發(fā)明的不同化身的場景興趣集相似性度量示意圖。
圖3為本發(fā)明的節(jié)點自身Pull和Push場景數(shù)據(jù)示意。
圖4為本發(fā)明的鄰居節(jié)點Push場景數(shù)據(jù)示意圖。
圖5為本發(fā)明的Pull-AOP和Push-AOP示意圖。
具體實施方式
下面結合附圖進一步說明本發(fā)明的詳細內容及其具體實施方式。
參見圖1所示,本發(fā)明的基于社交推薦和推拉策略的漸進DVE(distributed virtual environments,分布式虛擬環(huán)境)預下載方法及系統(tǒng),包括以下步驟:
步驟A00:基于Voronoi(泰森多邊形圖,由一組由連接兩鄰點直線的垂直平分線組成的連續(xù)多邊形組成)對化身的CPVS(當前潛在可視場景集)進行判斷,對化身當前AOI(area of interest,興趣區(qū)域)的場景數(shù)據(jù)進行Pull下載(拉取下載);
步驟B00:基于社交推薦對化身的FPVS(未來潛在可視場景集)進行預測,通過Pull-Push混合預下載機制對化身未來AOI內及外圍的場景數(shù)據(jù)進行預下載,并將相應的場景數(shù)據(jù)分發(fā)至對應的化身。
具體地,所述步驟A00中,通過基于Voronoi的鄰居發(fā)現(xiàn)機制、場景拾取機制來保障化身當前AOI的場景數(shù)據(jù)進行Pull下載。
具體地,所述步驟B00包括以下步驟:
步驟b10:不同化身間進行狀態(tài)信息的周期性交互;
步驟b20:根據(jù)不同化身的狀態(tài)信息計算不同化身間的興趣相似度;
步驟b30:根據(jù)計算出的不同化身間的興趣相似度構建鄰居集合;
步驟b40:根據(jù)鄰居集合得出不同化身預推薦的場景集,按照化身的興趣度對這些場景集進行排序,并將化身興趣度高的場景集數(shù)據(jù)推薦給化身;
步驟b50:通過Pull-Push混合預下載機制對不同化身未來AOI內及外圍的場景數(shù)據(jù)進行預下載,并將不同的場景數(shù)據(jù)分發(fā)至對應的化身。
所述步驟b10-b40中,通過化身(節(jié)點與超級節(jié)點)之間周期性的交互其他節(jié)點的狀態(tài)信息(不同的節(jié)點向超級節(jié)點提交狀態(tài)更新信息,通過超級節(jié)點交互各自的狀態(tài)信息),基于各節(jié)點的興趣,超級節(jié)點采用協(xié)同過濾算法來計算化身(節(jié)點)興趣的相似度,并將興趣相似度高的節(jié)點構建為一個鄰居集合,鄰居集合內節(jié)點可通過超級節(jié)點互相推薦場景數(shù)據(jù);然后根據(jù)Pull-Push混合機制來進行場景數(shù)據(jù)預下載。
虛擬世界是現(xiàn)實世界的仿真和延伸,其中的化身(節(jié)點)同樣具有社會性?;砜赡茉谕粎^(qū)域逗留或者有相似的漫游行為,則這些化身的場景興趣集存在一致的元素,因此可以按照興趣集的相似性將化身劃分為不同的興趣群組。同一興趣群組中的化身擁有相似的場景數(shù)據(jù),它們的興趣也較為相關,而且行為趨勢也較相似,那么它們可以互為興趣集鄰居,對彼此的預下載場景進行推薦和預測。
如圖2所示,為不同化身的場景興趣集相似性度量示意圖。假設在一場景區(qū)域中有3個節(jié)點化身a,b和c,分別用Sa,Sb和Sc來表示它們的場景興趣集,從圖2中可以看出,Sa和Sb之間有較大的交集,而Sa和Sc,Sb和Sc幾乎沒有交集,所以只有a和b為強關聯(lián),興趣較為相似,它們構成了一個興趣群組,并可互為興趣集鄰居。
本實施例中,引入基于用戶的協(xié)同過濾推薦算法來進行興趣群組間的預下載場景的推薦。該算法基于這樣一個現(xiàn)象:有相似興趣的用戶可能對相同的項目感興趣,這和虛擬世界中興趣群組的預下載場景預測思路是一致的。首先根據(jù)虛擬場景中各個節(jié)點化身對虛擬物體的興趣度(評分),為當前化身尋找興趣相似的興趣集鄰居;然后,基于鄰居的場景興趣集為當前化身進行場景推薦。
設化身u對其場景興趣集中虛擬物體的興趣度向量為Du={Du1,Du2,…,Dun},其中,n=|mt|為場景興趣集的大小。本技術方案采用修正的余弦相似度來計算化身間的相似度Ssim(u,v),
其中,Su,Sv,Suv分別為化身u和化身v的場景興趣集及其它們的交集,Dui和Dvi分別為化身u和v對虛擬物體i的興趣度,和分別為u和v的平均興趣度。
給定閾值ε,當Ssim(u,v)>ε時,v將成為u的興趣集鄰居,建立鄰居集合N={v1,v2,…,vk};反之,v和u不會互為興趣集鄰居。根據(jù)當前化身u和所有鄰居v的場景集,生成u的預推薦場景集S=Sv1∪Sv2∪…∪Svk-Su,對于S中的任意虛擬物體,使用加權平均算法預測化身u對它們的興趣度
最后,將預推薦場景集S中的虛擬物體按照興趣度進行大小排序,將排名靠前的虛擬物體推薦給化身u,完成場景推薦。
而在完成對化身(節(jié)點)的場景推薦后,需要對這些場景數(shù)據(jù)進行預下載。在DVE中,各個節(jié)點的處理能力各異,存在計算資源閑置的情況。已有的預下載機制只是從節(jié)點自身的角度來加載數(shù)據(jù),未能從整體上充分調配計算資源。本技術方案提出了基于Pull-Push的DVE預下載機制,來充分體現(xiàn)P2P-DVE的“協(xié)作”理念。并且DVE中的場景數(shù)據(jù)加載有其特有的需求,我們將節(jié)點的場景拾取區(qū)域分為兩部分,一、預拉取區(qū)域(pull area of prefetching,Pull-AOP),化身AOI外圍的場景是首要預下載的數(shù)據(jù),具有最高的預加載優(yōu)先級,所以需要采用Pull機制對這些數(shù)據(jù)進行精確的請求;二、預推送區(qū)域(push area of prefetching,Push-AOP),預拉取區(qū)域的外圍是更大范圍的預加載區(qū)域,但加載哪些場景的不確定性較大,所以采用Push機制為當前化身推送加載概率較大的數(shù)據(jù),在減少信息交互和網(wǎng)絡延遲的同時,提高預下載數(shù)據(jù)的精度?;鞟OI及其外圍的預加載區(qū)域對數(shù)據(jù)的實時性要求較高,所以采用Pull機制最為合理;對于更大范圍的預加載區(qū)域,由于化身移動的隨機性,則宜采用Push機制由興趣集鄰居推薦興趣度最高的場景給當前化身,使整體代價最小。
本發(fā)明的預下載機制基于混合式P2P架構,場景中化身狀態(tài)的更新和預下載場景預測算法由超級節(jié)點統(tǒng)一計算和管理。所述步驟b50具體包括以下兩種情況:
(一)在當前化身(節(jié)點)下行帶寬能力和處理能力均滿足要求時,步驟b50包括以下步驟:
步驟b511:對于當前化身節(jié)點興趣區(qū)域的預拉取區(qū)域數(shù)據(jù)采用拉取機制從鄰居節(jié)點直接獲取資源;
步驟b512:對于當前化身節(jié)點興趣區(qū)域的預推送區(qū)域數(shù)據(jù)采用推送機制,通過超級節(jié)點將當前化身節(jié)點的興趣集鄰居中興趣度高的場景數(shù)據(jù)直接推薦給當前化身節(jié)點。
如圖3所示,(1)p1向p2請求下載o1,并向S提交狀態(tài)更新信息;(2)p2將請求數(shù)據(jù)o1發(fā)送至p1;(3)S根據(jù)p1的狀態(tài)并通過興趣集預測算法,告知p3應將o2推動給p1;(4)p3將o2發(fā)送給p1。其中,S為超級節(jié)點,o1為預拉取場景,o2為預推送場景,p1為當前節(jié)點化身,p2為鄰居節(jié)點,p3為鄰居節(jié)點。
(二)在當前化身(節(jié)點)下行帶寬能力和處理能力不足時,步驟b50包括以下步驟:
步驟b521:首先通過超級節(jié)點將當前節(jié)點興趣區(qū)域的預拉取區(qū)域的數(shù)據(jù)信息更新至鄰居節(jié)點,鄰居節(jié)點將當前節(jié)點興趣區(qū)域的預拉取區(qū)域的數(shù)據(jù)通過拉取機制從自身鄰居節(jié)點獲取資源,再將獲取的當前節(jié)點興趣區(qū)域的預拉取區(qū)域的數(shù)據(jù)通過推送機制推薦給當前節(jié)點;
步驟b522:對于當前化身節(jié)點興趣區(qū)域的預推送區(qū)域數(shù)據(jù)采用推送機制通過超級節(jié)點從當前化身節(jié)點的興趣集鄰居中將當前化身節(jié)點興趣度高的場景數(shù)據(jù)直接推薦給當前化身節(jié)點。
如圖4所示,(1)p1和p2分別從S處獲取彼此的狀態(tài)信息;(2)p1首先從p3處將自身所需數(shù)據(jù)o1拉取到本地;(3)p1再從p4處將p2所需數(shù)據(jù)o2預先拉取到本地;(4)p1將數(shù)據(jù)o2推送給p2。其中,S為超級節(jié)點,o1和o2均為預拉取場景,p1和p2為請求節(jié)點,p3和p4為供應節(jié)點。
如圖5所示,圓心O為化身視點所在位置,那么記預拉取區(qū)域RPull={R|Cr<R<CR},預推送區(qū)域RPush={R|CR<R<CR′};其中r為AOI的半徑,Cr為半徑為r的圓形區(qū)域,CR為半徑為R的圓形區(qū)域,其中CR′為半徑為R’的圓形區(qū)域。
一種采用如上述所述的基于社交推薦和推拉策略的漸進DVE預下載方法的系統(tǒng),包括當前化身節(jié)點和超級節(jié)點,當前化身節(jié)點通過基于泰森多邊形圖的鄰居發(fā)現(xiàn)機制、場景拾取機制對當前興趣區(qū)域的場景數(shù)據(jù)進行拉取下載;當前化身節(jié)點將自身的狀態(tài)信息提交至超級節(jié)點,同時接收超級節(jié)點發(fā)送的其他節(jié)點的狀態(tài)信息,超級節(jié)點根據(jù)當前化身節(jié)點和其他節(jié)點的狀態(tài)信息計算當前化身節(jié)點和其他節(jié)點的興趣相似度,根據(jù)計算結果為當前化身節(jié)點構建鄰居集合,并根據(jù)鄰居集合得出當前化身節(jié)點預推薦的場景集,按照當前化身節(jié)點的興趣度對這些場景集進行排序,并將當前化身節(jié)點興趣度高的場景集數(shù)據(jù)推薦給當前化身節(jié)點;通過拉-推混合預下載機制,當前化身節(jié)點將自身需要的預推薦場景集數(shù)據(jù)向鄰居集合中的節(jié)點或超級節(jié)點發(fā)送請求進行預下載。
本發(fā)明首次將社交概念引入到了場景預下載機制中,量化了節(jié)點化身興趣,給出了化身相似度計算算法和預推薦場景的預測算法;基于節(jié)點場景拾取區(qū)域的特征,提出了針對不同區(qū)域的Pull-Push策略,充分利用了對等網(wǎng)絡中節(jié)點的協(xié)作特性,減少了數(shù)據(jù)傳輸延遲,從整體上提升了DVE的數(shù)據(jù)傳輸效率。
以上所述僅為本發(fā)明的優(yōu)選實例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡對本發(fā)明所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。