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