[摘 要]本文對基于VRML的虛擬場景的設(shè)計與實現(xiàn)進(jìn)行了研究,并從減少文件長度,提高渲染速度兩方面提出了優(yōu)化場景的方法。
[關(guān)鍵詞]虛擬現(xiàn)實 虛擬場景 優(yōu)化
[中圖分類號]TP39[文獻(xiàn)標(biāo)識碼]A[文章編號]1007-9416(2009)11-0036-02
The Construction and Optimization of a Three-Dimensional Virtual Scene Based on VRML
LUO Wei-Qun
(Information engineering college, Tibet Nationalities Institute, Shanxi 712082)
[Abstract] There has conducted the research of the design and implementation of a virtual scene based on VRML, and proposed some optimizations which reduced file length and improved the rendering speed.
[Keywords] virtual reality; virtual scene; optimization
隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,越來越多基于VRML的虛擬作品出現(xiàn)在互聯(lián)網(wǎng)絡(luò)中。對于規(guī)則場景利用VRML的對象建模較為容易,且定義虛擬場景的對象文件短小精悍,易于閱讀。但隨著虛擬場景復(fù)雜性的提高和應(yīng)用的日漸深入,VRML在展現(xiàn)虛擬場景方面的不足也逐漸暴露出來,諸如程序代碼龐大,視點位置不理想,交互性不足,穩(wěn)定性和一致性不能滿足某些特殊應(yīng)用需求等問題。所以,開展基于VRML的虛擬場景的優(yōu)化分析非常必要。
1 VRML技術(shù)
VRML(Virtual Reality Modeling Language 虛擬現(xiàn)實建模語言)是一種用來描述交互或3D對象和境界的文件格式。從VRML的定義可以看出,VRML設(shè)計初衷是想成為集成3D圖形和多媒體的通用交換格式,而這一點已經(jīng)成為現(xiàn)實。VRML文件格式成為在AUTO CAD等三維工業(yè)標(biāo)準(zhǔn)進(jìn)行共享的唯一通用文件格式而得到了廣泛的應(yīng)用。
VRML可以作為一種形式化描述語言,對于采用模糊自然語言表達(dá)的系統(tǒng)通過建模,從而實現(xiàn)對系統(tǒng)確切的、通用的形式化描述。經(jīng)過形式化后的系統(tǒng)模型即可直接用于計算機(jī)程序設(shè)計和編程。VRML同時可以作為一種編程工具,實現(xiàn)包括場景圖、用戶交互以及后臺計算的程序,構(gòu)造一個具有完整功能的虛擬現(xiàn)實系統(tǒng)。
VRML的應(yīng)用平臺是Internet和本地客戶系統(tǒng)。這種應(yīng)用極大地擴(kuò)張了VRML的應(yīng)用,如工程與科學(xué)、可視化計算、多媒體、共享式VR系統(tǒng)以及教育等。
2 三維虛擬場景的設(shè)計
本文以數(shù)字電路虛擬實驗室為原型,通過建立一個虛擬場景對整個結(jié)構(gòu)進(jìn)行分析。
2.1 大型場景的樹形結(jié)構(gòu)組織
對象的幾何建模就是用來描述對象內(nèi)部固有的幾何性質(zhì)的抽象模型,因此場景中對象模型的組織結(jié)構(gòu)對虛擬實驗系統(tǒng)的運行質(zhì)量起著關(guān)鍵性的作用,合理的模型組織結(jié)構(gòu)是必須的,并且實驗者需要與虛擬儀器進(jìn)行交互操作,因此應(yīng)該根據(jù)虛擬實驗室中每個實體的幾何空間位置,以及模型間的結(jié)構(gòu)關(guān)系,確定虛擬場景中實體模型的樹狀層次結(jié)構(gòu)。這種層次結(jié)構(gòu)使我們可以使用自頂向下的方法將一個模型對象分解,也可以使用自底向上的構(gòu)造方法重構(gòu)一個模型對象,把所有對象用雙親、孩子和兄弟劃分成最有效的樹結(jié)構(gòu)。這種樹形結(jié)構(gòu)不僅提供了一種簡便的自然的分割復(fù)雜物體的方法,而且對模型的修改也十分有利。下圖為虛擬場景的層次模型(簡要描述了虛擬場景的層次結(jié)構(gòu))。
如圖1所示。
對場景進(jìn)行層次結(jié)構(gòu)劃分后,可以方便地進(jìn)行實體模型的組織和管理,而實體模型內(nèi)部的層次結(jié)構(gòu)劃分能將復(fù)雜模型自頂向下分解成若干基本單元,明確模型構(gòu)建目標(biāo),大大減輕建模的工作量。
2.2 子場景建模
所謂幾何建模,是指虛擬環(huán)境中可見的3D物體空間形狀以及各種附屬性質(zhì)的描述。一般有兩種方法可以建造虛擬環(huán)境中各種場景與對象的三維模型。
(1)采用三維建模軟件手工繪制三維模型。這需要精通各種繪畫技法和熟練掌握三維建模軟件的使用方法與技巧。好萊塢電影特技往往采用這種方法實現(xiàn)的。這種方法需要用戶承擔(dān)高額的人工費用。三維建模軟件一般選擇3DS MAX,優(yōu)點就是省時省力,大量的坐標(biāo)計算交由建模軟件完成,設(shè)計者只需按照自己的意愿進(jìn)行設(shè)計即可。對于不規(guī)則對象模型,可考慮使用該方法進(jìn)行。缺點就是對物體描述的精度較高,使得轉(zhuǎn)換后的VRML文件中存在大量的垃圾代碼,需要優(yōu)化處理。對于虛擬實驗室中的面包板、數(shù)字電路芯片等我們采用該方法。
(2)使用建模軟件實現(xiàn)自動三維。一般直接利用VRML定義虛擬實驗室場景中的對象,包括三維模型、紋理、材質(zhì)、色彩,以及對象幾何體的平移、旋轉(zhuǎn)、縮放等。這種方法的優(yōu)點是對于規(guī)則場景對象建模較為容易,且定義虛擬場景的對象文件短小精悍,易于閱讀。缺點就是定義的虛擬場景對象較為復(fù)雜時, 要書寫大量的代碼,并且要進(jìn)行大量的坐標(biāo)運算,非常繁瑣。對于虛擬實驗室場景中的實驗臺、地板、天花板、墻等采用該方法建立。
3 優(yōu)化設(shè)計
在創(chuàng)建復(fù)雜的VRML場景時,除了創(chuàng)建大量的模型外,還必須考慮兩件事,VRML文件的長度和場景的渲染速度。VRML文件的大小在兩方面影響到場景,一方面是服務(wù)器與瀏覽器之間的傳輸時間;另一方面是將場景載入瀏覽器的時間。如果這些時間過長,瀏覽者將無法忍受。渲染的速度則直接影響瀏覽者瀏覽的速度,速度過低將使場景失去真實感。所以在創(chuàng)建場景的同時必須要考慮對場景的優(yōu)化。
3.1 減少文件傳輸數(shù)據(jù)量
由3DS MAX輸出的VRML文件有很多代碼都是重復(fù)的,從而導(dǎo)致文件過大。比如面包板對應(yīng)的VRML文件有近4萬多行,達(dá)到2MB,如果直接將其加到實驗室場景中將使得程序運行速度極其緩慢,所以必需對于建立的三維模型進(jìn)行優(yōu)化。
以下是一些精簡文件大小的常用方法:
(1)利用DEF、USE和PROTO對實例進(jìn)行重用
在場景中經(jīng)常有部分節(jié)點有著相同或相近的特點,它們的外形相同,僅是位置上有差別,我們可以通過使用DEF/USE結(jié)構(gòu),先用DEF定義一個節(jié)點副本,然后多次利用USE引用,這種引用的效果就是產(chǎn)生該節(jié)點的多個副本。與DEF、USE相比,PROTO節(jié)點(原型結(jié)點)的使用更需要對場景進(jìn)行組織,在場景中存在一些節(jié)點,它們有相同的功能,但有一些屬性上的區(qū)別,如顏色、紋理等,這時便可通過原型設(shè)計來優(yōu)化。利用DEF、USE和PROTO對實例進(jìn)行重用可以達(dá)到減小文件長度,節(jié)約內(nèi)存資源的效果。
例如,在面包板模型中,輸入輸出引線插口有128個,它們具有相同的造型,只是位置不同而已,3DS MAX在輸出VRML文件時,對于這128個插口分別使用索引面集(IndexedFaceSet)辦法生成模型,造成大量代碼重復(fù),可先將基本造型定義成原型節(jié)點Tube,然后通過在適當(dāng)位置采用實例化Tube的辦法可將大量的重復(fù)代碼優(yōu)化。
對于14腳芯片插座、16腳芯片插座、20腳芯片插座中的管腳重復(fù)代碼也可進(jìn)行優(yōu)化,先對一個管腳節(jié)點用DEF定義成Tube節(jié)點,對于其它重復(fù)的代碼用USE引用Tube節(jié)點即可。
(2)消除空白間隔
由于VRML文件是按文本方式保存的,也就是說所有的空行、空格都被保存下來,這樣便增加了文件的長度,但瀏覽器在解釋VRML程序時,并不需要這些空行、空格,所以這些不必要的空格應(yīng)該刪除。但并不是所有的空格都應(yīng)刪除,空格能保證文件的可讀性。另外,必要的注釋也應(yīng)保留。
(3)數(shù)據(jù)的優(yōu)化
當(dāng)場景達(dá)到一定的規(guī)模,其間的數(shù)據(jù)量是相當(dāng)可觀的,數(shù)據(jù)的存儲與運算也變得十分繁重,因此有必要對數(shù)據(jù)進(jìn)行優(yōu)化。一種方法是對數(shù)據(jù)取整??梢哉J(rèn)為一個數(shù)據(jù)在取整后誤差小于1%,那么它不會影響到場景的效果。另一種方法是對數(shù)據(jù)固定精度,多余的部分將被刪除。精度的確定取決于場景與模型的本身,以不影響效果為準(zhǔn)。數(shù)據(jù)的優(yōu)化在使用導(dǎo)入模型時顯得非常重要,一般的導(dǎo)入工具經(jīng)常產(chǎn)生過高的精度,使數(shù)據(jù)過于龐大,像0.0000000000435這種數(shù)據(jù)許多時候都可以用0來代替。
(4)利用VRMLPAD壓縮VRML文件
由于VRML文件是以文本的方式保存,它的壓縮潛力是比較大的,目前大多數(shù)瀏覽器都支持直接壓縮的VRML文件。通過VRMLPAD編輯環(huán)境主菜單File下的Publish命令,就可以把一般的VRML文件進(jìn)行壓縮至原來1/10左右,這將極大地減少網(wǎng)絡(luò)傳輸時間。
3.2 提高渲染速度
當(dāng)你進(jìn)入一個復(fù)雜的3D場景時,隨著里面的景物的增多,會明顯地感到瀏覽的速度減慢,太慢時會嚴(yán)重影響場景的真實性與交互性。一般來說,如果瀏覽器者通過瀏覽器每秒看到的幀數(shù)少于10幀,就會覺得不自然。所以必須保證場景的渲染速度??梢酝ㄟ^以下技巧的使用,在不損失效果的同時,提高渲染的速度。
(1)減少多邊形的數(shù)目
增加模型的多邊形數(shù)目可以使幾何體更具真實感,但不能無限制地增加多邊形的數(shù)目,一旦多邊形數(shù)目超過機(jī)器的運算能力,瀏覽器的畫面將停滯。所以在創(chuàng)建模型時,必須減少模型的多邊形數(shù)目。選擇模型的構(gòu)成節(jié)點時,盡量用Box、Sphere、Cone、Cyclinder這些規(guī)則幾何節(jié)點。使用IndexedFaceSet、IndexedLineSet、Extrusion這些復(fù)雜節(jié)點時,應(yīng)盡量減少頂點個數(shù)。
一般來說,模型的細(xì)節(jié)程度是影響其逼真性的重要因素之一。細(xì)節(jié)程度越高,模型越逼真。但是,建立模型的目的是為了給虛擬現(xiàn)實系統(tǒng)創(chuàng)造一個虛擬環(huán)境,并在其中實現(xiàn)交互等特定任務(wù)。因此建立模型時還需要考慮到整個系統(tǒng)的綜合性能。如果在建模時過分強(qiáng)調(diào)細(xì)節(jié),對于所有結(jié)構(gòu)和表面特征都加以實現(xiàn),而忽略了場景整體結(jié)構(gòu)的優(yōu)化設(shè)計,不僅會使工作量驟然增大,而且可能導(dǎo)致整個系統(tǒng)的運行速度下降,性能降低。因此,在建模過程中一定要有整體觀念,意識到模型細(xì)節(jié)和系統(tǒng)性能之間的相互制約性,不可盲目追求真實而無限細(xì)化模型。在虛擬實驗室系統(tǒng)中,可只將一些重要實驗儀器進(jìn)行細(xì)致建模,通過采用紋理映射技術(shù)來盡量避免細(xì)節(jié)模型的大量產(chǎn)生。
(2)光源的使用
光源對增強(qiáng)明暗效果有很大幫助,但過多使用光源將帶來大量的運算量。光源的運算量各不相同,DirectionLight、PointLight、SpotLight運算量依次增加。在同一個場景中,不應(yīng)使用過多的光源。一般來說,DirectionLight不要超過8個,PointLignt、SpotLight不要多于3個。光源的作用范圍也要進(jìn)行控制,如在Transform內(nèi)部的光源就只對內(nèi)部的幾何節(jié)點產(chǎn)生效果。如果只對個別物體產(chǎn)生光照,盡量使用局部光源,避免使用全局光源。對于PointLight和SpotLight來說,可以減少光源的作用范圍(radium)來減少運算。
(3)充分利用紋理
幾何體要產(chǎn)生逼真的效果,很大程度上依賴于紋理的使用,因此在一個場景中通常會用到多處紋理。但如果紋理使用不當(dāng),也會給系統(tǒng)帶來很大的負(fù)擔(dān)。
在使用紋理時盡量使用簡單紋理。首先考慮使用單元素紋理,單元素紋理只有亮度的影響,0xFF表示亮度最大,0x00表示全黑。通過單元素紋理與Material中的diffuseColor配合使用,能產(chǎn)生很好的效果,同時因為是單元素紋理,瀏覽器處理起來十分快。然后考慮使用小塊的紋理。紋理是可以不斷延伸與重復(fù)的,所以盡量使用小一點的紋理圖,例如構(gòu)成實驗室場景中的地板,只要很小一塊紋理圖,再通過在各個方向上的重復(fù)便可鋪滿整個地面,這與使用大紋理圖產(chǎn)生的效果是一樣的。
4 結(jié)語
虛擬現(xiàn)實作為一門新興的、發(fā)展中的技術(shù),潛力是巨大的。本文介紹了構(gòu)建虛擬場景的方法,并針對虛擬現(xiàn)實系統(tǒng)具有的數(shù)據(jù)量大問題,提出了一些優(yōu)化方法。應(yīng)用這些方法建立的電子虛擬實驗室取到了較好的效果。對于建立其他場景構(gòu)建,有一定的示范作用。
[參考文獻(xiàn)]
[1] 雒偉群.基于VRML的交互式虛擬實驗室的研究與實現(xiàn)[D].天津大學(xué)碩士論文,2004.
[2] 衣李娜,何丕廉,雒偉群.基于VRML的虛擬實驗室設(shè)計方法 [J].曲阜師范大學(xué)學(xué)報,2005年10月第31卷第4期,P74-76.
[3] 衣李娜,雒偉群.基于VRML的虛擬實驗室交互控制方法研究[J].微處理機(jī),2006年8月第四期,P109-114.
[4] 韓定定.電子線路虛擬實驗室的Java實現(xiàn)[J]計算機(jī)工程,2006年11月第32卷第21期,P264 -266.
[5] 李曉霞.基于VRML的交互式虛擬場景設(shè)計及其優(yōu)化.[J]太原師范學(xué)院學(xué)報,2007年6月第6卷第2期,P61-66.