摘要:利用Flash 進(jìn)行Web3D 內(nèi)容展示時(shí),場景文件的大小直接影響著瀏覽場景的速度,當(dāng)用戶瀏覽場景時(shí)才臨時(shí)去下載場景,將大大增加用戶的等待時(shí)間,降低用戶體驗(yàn)。本文提出了一種預(yù)下載策略,對場景進(jìn)行預(yù)先下載,當(dāng)瀏覽場景時(shí),不必臨時(shí)去服務(wù)器獲取相關(guān)數(shù)據(jù),直接加載預(yù)先下載好的場景,這樣可以顯著減少等待下載時(shí)間,使瀏覽更加流暢,增強(qiáng)用戶體驗(yàn)。
關(guān)鍵詞:Flash;Web3D;預(yù)下載
中圖分類號:TP391.9 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號:1007-9599 (2012) 09-0000-02
Web3D是Web技術(shù)和3D技術(shù)相結(jié)合的產(chǎn)物,是互聯(lián)網(wǎng)上實(shí)現(xiàn)3D圖形技術(shù)的總稱。Web3D技術(shù)源于虛擬現(xiàn)實(shí)技術(shù)中的VRML分支,1997年,VRML(VRML Consortium)協(xié)會(huì)正式更名為Web3D(Web 3D Consortium)協(xié)會(huì),并制定了VRML97新的國際標(biāo)準(zhǔn)。至此,Web3D的專用縮寫被人們所認(rèn)識(shí)。也正是因?yàn)檫@個(gè)原因,Web3D經(jīng)常被放在與虛擬現(xiàn)實(shí)(VR)一起討論和研究。
Web3D技術(shù)具有強(qiáng)大的交互性、強(qiáng)烈的真實(shí)感及在網(wǎng)絡(luò)上易于傳輸?shù)忍攸c(diǎn),因此,在網(wǎng)絡(luò)越來越普及、多媒體應(yīng)用越來越廣泛、虛擬現(xiàn)實(shí)技術(shù)發(fā)揮越來越多作用的今天,Web3D技術(shù)在網(wǎng)絡(luò)遠(yuǎn)程教育、虛擬展會(huì)、廣告展示、網(wǎng)頁游戲等Web和3D緊密結(jié)合的應(yīng)用領(lǐng)域扮演著重要的角色,為虛擬現(xiàn)實(shí)技術(shù)的網(wǎng)絡(luò)化、輕量化趨勢打下了鋪墊。
多媒體領(lǐng)域用戶體驗(yàn)的好壞最為直觀強(qiáng)烈,Web3D也不例外。加載模型的緩慢或者失敗、模型運(yùn)動(dòng)的不連貫流暢等不佳用戶體驗(yàn)在目前較為常見。因此目前在實(shí)際應(yīng)用中,占用帶寬低的多媒體軟件工具對Web3D的實(shí)現(xiàn)較為普遍,其中又以Flash最為常見。本文就是以利用Flash 進(jìn)行Web3D 內(nèi)容展示時(shí),進(jìn)一步優(yōu)化模型的預(yù)下載,使得在有限的網(wǎng)絡(luò)資源和本地資源的條件下,獲得盡量好的用戶體驗(yàn)。
一、Web3D的實(shí)現(xiàn)技術(shù)
目前常見的Web3D的實(shí)現(xiàn)技術(shù)有如下幾種:
(一)基于編程的實(shí)現(xiàn)技術(shù)
開發(fā)Web3D最直接的方法是編程,常見語言有VRML,Java,Java3D等,并且需要基層軟件或者驅(qū)動(dòng)庫的支持,如ActiveX,COM和DCOM等?;诰幊痰腤eb3D實(shí)現(xiàn)技術(shù),普遍存在編程工作量大、較難掌握的缺點(diǎn)。
(二)基于開發(fā)工具的實(shí)現(xiàn)技術(shù)
Web3D可視化開發(fā)工具有Cult3D,Viewpoint,Pulse3D,Shout3D,Blaxunn3D等,從而為不熟悉編程的人員開發(fā)Web3D對象提供了方便的實(shí)現(xiàn)途徑。通過開發(fā)工具實(shí)現(xiàn)Web3D的開發(fā),流程簡單、觀并易掌握。
(三)基于多媒體工具軟件的實(shí)現(xiàn)技術(shù)
利用Flash、TVR等多媒體工具軟件,不通過編程就很方便進(jìn)行Web3D的開發(fā)。
在交互式矢量動(dòng)畫軟件Flash中,對導(dǎo)入的序列圖像或已拼接的360度的全景圖像,通過ActionScript設(shè)置交互而形成的3D對象或全景虛擬環(huán)境,能實(shí)現(xiàn)360度視角可見的圖像的控制。由于該技術(shù)具有矢量性,所以,具有畫面清晰度不因縮放而降低、文件小等優(yōu)點(diǎn)。另外,由于采用micromedia的Shockwave技術(shù),從服務(wù)器端向?yàn)g覽器端傳輸只是一些繪圖指令,所以能夠?qū)崿F(xiàn)在低帶寬上的高質(zhì)量瀏覽。
(四)基于Web開發(fā)平臺(tái)的SDK的實(shí)現(xiàn)技術(shù)
通過Web的SDK實(shí)現(xiàn)Web3D的技術(shù)近來受到關(guān)注,其中WildTangent和EON技術(shù)成熟,應(yīng)用廣泛。
WildTangent的應(yīng)用范圍非常廣泛,但要用WildTangent創(chuàng)造出交互效果,用戶必須具備一定的腳本語言基礎(chǔ)。
通過對以上技術(shù)的比較,基于多媒體工具軟件的實(shí)現(xiàn)在實(shí)現(xiàn)難度和資源占用上有一定優(yōu)勢,這使得其成為目前應(yīng)用最為廣泛的Web3D實(shí)現(xiàn)技術(shù)(尤其是Flash)。因此下文將對Flash實(shí)現(xiàn)的Web3D進(jìn)行場景模型預(yù)下載策略的研究,從而進(jìn)一步減少資源消耗、提升用戶體驗(yàn)。
二、預(yù)下載策略
(一)預(yù)下載策略常見問題
當(dāng)瀏覽者空閑時(shí),根據(jù)瀏覽者的可見范圍,預(yù)下載可見范圍外圍的場景數(shù)據(jù)。當(dāng)瀏覽模型時(shí),先識(shí)別瀏覽模型,跟據(jù)相關(guān)特征信息先在本地緩存中查找,如果找到,直接從緩存中加載模型,如果未找到,訪問服務(wù)器,從服務(wù)器獲取模型文件,加入緩存并加載渲染。
下圖是一種預(yù)下載方式結(jié)構(gòu)圖:
圖 1 圖2
這種策略在C/ S模式下是比較容易實(shí)現(xiàn)的,但是要在網(wǎng)頁上實(shí)現(xiàn),還有一些問題需要探討研究。
1.緩存位置的選擇問題,是本地磁盤還是內(nèi)存;
2.Flash安全機(jī)制問題;
3.緩存中模型的查找識(shí)別問題;
4.緩存中模型的替換策略。
第一個(gè)問題其實(shí)與第二項(xiàng)是密切相關(guān)的,基于Flash的3D必須遵循flash的安全機(jī)制,也就間接決定了緩存位置的選擇。
(二)Flash player安全機(jī)制
安全機(jī)制與SWF(shock wave flash)文件緊密相關(guān),而SWF文件的運(yùn)行環(huán)境有兩種:本機(jī)瀏覽和網(wǎng)頁瀏覽,這兩種情況下的安全機(jī)制不盡相同。一般情況下,網(wǎng)頁的SWF文件危險(xiǎn)性更高。因?yàn)橛脩魧@些SWF文件一無所知,在界面的后面可能隱藏了破壞性的腳本,用戶無法得知這一情況。
未防止惡意的SWF文件破壞用戶的系統(tǒng),安全機(jī)制從源頭著手,他確保Flash內(nèi)容在未經(jīng)用戶知曉的情況下,無法訪問本地計(jì)算機(jī)上的信息。當(dāng)Flash Player運(yùn)行時(shí),它會(huì)在播放內(nèi)容前進(jìn)行兩項(xiàng)主要的檢查。一是確定SWF文件的來源,二是檢查存儲(chǔ)在計(jì)算機(jī)上的受信任內(nèi)容列表,確認(rèn)本地系統(tǒng)是否信任該內(nèi)容。如果內(nèi)容未通過這些檢查,則停止該內(nèi)容,并且不能再執(zhí)行任何操作。
要想加載外部內(nèi)容,解除訪問限制,只有在數(shù)據(jù)源上進(jìn)行許可設(shè)置,給予特定域的訪問權(quán)限,而這個(gè)設(shè)置只能由管理員(用戶)來手動(dòng)設(shè)置。經(jīng)過管理員審核的域才能進(jìn)入受信任的列表。但是這種方式必須通過人工方式進(jìn)行,在Web上部署Flash時(shí),大多數(shù)用戶是不會(huì)進(jìn)行設(shè)置的,原因有二:
1.用戶擔(dān)心安全及隱私,把本地域開放給不了解Flash訪問,大多心有余悸,可能出于安全考慮而放棄瀏覽。
2.設(shè)置比較繁瑣,大多人嫌麻煩。
首先考慮將緩存放置于本地磁盤空間,這種方式的優(yōu)點(diǎn)是空間相對較大,能夠長時(shí)間保存,下載后的模型數(shù)據(jù)不會(huì)因?yàn)榈綦姸鴣G失,能夠重復(fù)多次利用,在C/S模式下是十分合適的,但是在B/S模式下,從上述的Flash的安全機(jī)制可以看出,要利用Flash Player 訪問本地空間是比較困難的,但是Flash提供了一個(gè)可以存儲(chǔ)訪問的本地Cache的緩存空間,可以利用此空間存放預(yù)下載的場景模型數(shù)據(jù)。
再來考慮將緩存放置于內(nèi)存中,這種方式的優(yōu)點(diǎn)在于訪問速度快,不受安全機(jī)制的限制,缺點(diǎn)也是很明顯的,內(nèi)存空間有限,緩存容量受限制,而且只要退出瀏覽器相關(guān)頁面緩存中的內(nèi)容就丟失,當(dāng)下一次重新打開頁面瀏覽三維模型時(shí)又需要重新從服務(wù)器下載。這種方式的預(yù)下載緩存還必須與實(shí)際應(yīng)用相結(jié)合,因緩存容量有限,如果預(yù)下載的內(nèi)容不是用戶緊急需要的資源,那么會(huì)占據(jù)大量緩存空間,頻繁造成緩存中模型的替換,降低緩存的使用效率,給瀏覽提速的效果也就不太明顯。這就需要提供一個(gè)理想的預(yù)下載策略來配合。
根據(jù)以上分析,可以利用兩種方式的優(yōu)點(diǎn),結(jié)合內(nèi)存以及cache組建一個(gè)大的緩存空間,根據(jù)模型的訪問頻度來調(diào)整預(yù)下載的模型位置。
(三)緩存中模型的查找識(shí)別
放在緩存中的模型怎樣才能被正確識(shí)別并被正確加載這是一個(gè)需要解決的問題,一種解決的方案是建立一張緩存中存在的模型表,建立按名存儲(chǔ)的機(jī)制,當(dāng)需要加載模型文件時(shí),先查找模型表,在表中找到模型記錄即從緩存中加載相應(yīng)模型文件,若未查找到,從服務(wù)器下載模型顯示并加入緩存,將模型文件名等信息加入模型表,如圖2所示。
對應(yīng)的模型表可以建立起一種映射關(guān)系:
文件名稱訪問頻率存在位置
(四)模型替換策略
模型的替換策略可以根據(jù)訪問頻率選擇最近最少使用方式進(jìn)行替換,當(dāng)然也可以根據(jù)其他一些因素來選擇替換策略,這里僅供參考。模型表中記錄數(shù)可以根據(jù)下列方式獲?。?/p>
表中記錄數(shù)=(緩存空間大小/單個(gè)模型平均大?。?1
訪問頻率可以按升序排列,每被加載一次頻率+1,在構(gòu)建表時(shí)就開始進(jìn)行升序排序,每次頻率變動(dòng)的同時(shí)調(diào)整排序,替換時(shí)直接找到表末尾項(xiàng)即可。
參考文獻(xiàn):
[1]劉運(yùn)增.互聯(lián)網(wǎng)上的三維技術(shù):Web3D[J].計(jì)算機(jī)與網(wǎng)絡(luò),2003(10)
[2]鄧文新.Web3D技術(shù)的教學(xué)應(yīng)用研究[J].現(xiàn)代教育技術(shù),2002(4)
[3]高永惠.3種Web三維交互技術(shù)的分析和比較[J].廣東醫(yī)學(xué)院學(xué)報(bào),2004(6)
[4]朱春華,葉建華,詹友基,蘇發(fā).產(chǎn)品三維展示網(wǎng)絡(luò)平臺(tái)的研究[J].重慶科技學(xué)院學(xué)報(bào)(自然科學(xué)版),2009(6)
[5]何苗.Web3D技術(shù)初探[J].電腦知識(shí)與技術(shù),2011(21)