摘要:VRML/X3D是新一代面向 Web 的交互式三維圖形規范,由本地機上VRML的瀏覽器解釋生成三維場景,也就是三維網頁的技術規范。作者根據經驗所得,從結構層次、文件壓縮、源碼優化和重復代碼的簡化等幾個方面對VRML/X3D場景進行優化,壓縮了VRML/X3D場景文件的大小,加快VRML/X3D三維網頁的瀏覽速度。
關鍵詞:VRML/X3D;節點;結構層次化;文件壓縮;源碼優化;重碼簡化
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)22-796-02
VRML/X3D Scene Optimization
XIE Wen-da
(Jianggmen Polytechnic,Department of Information Technology,jiangmen 529090,China)
Abstract:VRML/X3D is the next generation of Web-oriented interactive 3D graphics standard,explained the three-dimensional scene from the local VRML browser, which is three-dimensional web of technical specifications. According to the author experience, optimized the VRML/X3D scene from structure level, file compression, optimization of the source, such as the simplification of repeat code, compressed VRML/X3D scene file size, speed up the three-dimensional web browser of VRML/X3D.
Key words: VRML/X3D; Node; structure leveled; file compression; the optimization of code; the simplification of repeat code
1 引言
VRML/X3D是一種虛擬設計語言,其基本目標是建立Internet上的交互式三維多媒體,也就是說,它是用來描述三維物體及其行為的,可以構建虛擬境界(Virtual World)[1]。VRML/X3D的出現使虛擬現實像多媒體和Internet一樣逐漸走進人們的生活。簡單地說,以VRML為基礎的第二代WWW=多媒體+虛擬現實+Internet。VRML用文本信息描述三維場景,在Internet網上傳輸,在本地機上由VRML的瀏覽器解釋生成三維場景,解釋生成的標準規范即是VRML/X3D規范,也就是三維網頁的技術規范[2-3]。為了加快VRML/X3D三維網頁的瀏覽速度,作者根據自己經驗所得,總結了幾個對VRML/X3D場景進行優化的方法。
2 結構層次優化
2.1 LOD節點
為了減輕VRML瀏覽器的負擔,VRML/X3D提供LOD節點。LOD意為“細節層次”(Level Of Detail),是指允許瀏覽器在物體表示的不同層次細節間自動切換。用來描述同一造型不同細節層次的組織關系。由于遠處造型的細節可以遠遠少于近處造型的細節,可以利用一定的范圍設定,讓虛擬空間在不同的觀察距離上呈現出不同的細節,這樣不僅加快客戶端渲染場景的速度,同時也增加VRML/X3D世界的真實感。它的使用方法就是用一對花括號把需要切換的模型[3]。
2.2 Inline節點
Inline是一種虛擬空間構造技術,它允許在分離的VRML/X3D文件中創建VRML世界中的每一個造型,然后可以將這些造型組織起來構造出相當復雜的VRML/X3D世界。Inline類似于模塊化的設計思想,它使編程人員不必進行某些重復性的工作,從而極大地減輕了開發負擔。在模塊化的同時可以把一個大型的場景劃分為不同的VRML場景文件,并將它們的結構層次化。如圖1所示。
場景被層次化的同時也被劃分為若干個小場景文件,小場景文件的下載的先后順序便不同,所以它們的渲染的順序也不同;在第一層的場景被優先下載、渲染。這樣把優先要顯示的場景文件放在第一層,達到場景渲染的優化。這也就對場景“分而治之”的思想。
3 場景文件大小的優化
3.1 利用工具縮減文件體積
為了加快文件在網絡上的傳輸速度,方便瀏覽者對虛擬環境的瀏覽和交互,除了將模型的方位進行調整之外,還必須盡可能地優化模型的視覺效果,減小其文件體積[5]。通常采用壓縮和優化的方式。
1)文件壓縮
VRML的主流編輯平臺VRMLPad就提供對文件的壓縮優化。利用VRMLPad壓縮之后,通常文件的體積減小為原來的1/3以下,壓縮比高達66%以上,但文件的視覺效果基本沒有改變。
壓縮方法:點擊VRMLPad菜單欄中的“File”菜單,選擇其中的“Save As”命令。在彈出的對話框中選定“Save compressed”選項,即可完成VRML文件的壓縮。
2)源碼優化
VRMLPad除了對文件進行壓縮之外,還可以直接對源代碼進行優化點。點擊菜單欄的“工具”萊單下的“未使用過的標注符”命令,在彈出的對話框中有“所有未使用過的標注符”選項,指在文件中所有從來沒有使用過的標示符,可以優化刪除[6]。“未使用過的標注符” 命令對話框還提供“未使用過的原始聲明” 、“未使用過的節點名” 、“未使用過的區域聲明” 、“默認區域值” 、“多余的區域” 、“復制的路徑”等的優化刪除。
VRMLPad還可以利用其它插件工具對源代碼進行優化。在互聯網上下載Comments. rar解壓后將插件拷貝至VRMLPad的插件文件夾(…\\VRMLPad\\AddIns\\),啟動VRMLPad后,在菜單欄的“工具”菜單中會發現“命令”插件的菜單,即說明插件導人成功。“命令”菜單共有6個命令:“代碼格式化”命令可以以最佳閱讀方式顯示VRML源代碼之間的結構關系;“刪除注釋”命令用來刪除所有的注釋;“刪除默認區域”可以刪除那些默認定義值的節點內容;“優化代碼”命令可以自動地將一些空白的區域、中斷點、小數點之前的零加以優化刪除;“優化代碼,保留注釋”命令在優化操作時保留了源代碼注釋的內容;“減少代碼縮進”可以使源代碼前的每行空格都刪除。經過這些優化步驟之后,文件體積一般會被再次壓縮10%左右。
3.2 重復代碼的簡化
1) USE節點:一旦為一個節點定義了名稱,可以一次次地使用該節點于同一個文件中,在節點名稱前用“USE”。語法:USE節點名。
在文件中該節點能被設定的任何地方使用該節點。在通常需要完整的節點描述時,你甚至可以使用一個節點作為一個域值。在同一文件中,可以使用USE來引用原始節點任意次。所有的實例和原始節點共享相同的節點描述,所以,如果你改變原始節點,所有實例將隨之一同變化。在場景的建構過程中可能在一個場景多次重復使用某個模型。利用USE節點只需在文檔中定義一次該模型節點就多次使用[7],這樣就避免出現大量重復的代碼,達到重碼簡化的效果。
2) 原型(PROTO)封裝:用原型構造技術(PROTO和EXTERNPROTO)創建擴展節點。原型(PROTO)是一種類型封裝機制,利用它可以在已定義節點類型的基礎上定義新的節點類型;通過外部原型(EXTERNPROTO)還可以跨越因特網引用自定義的節點類型,一旦定義,原型節點類型就可以像內部節點類型一樣在場景圖中實例化。原型可以在當前文件中定義并使用,也可以在其它文件中定義,即外部原型,外部原型提供了一種使節點類型能夠跨越網絡的機制,這樣可大大減少相同代碼的重復編寫,為快速建模提供了強大支持。
4 結束語
作者通過對VRML/X3D場景文件的結構層次、節點、壓縮及重碼簡化等幾個方面進行優化,對加快VRML/X3D三維網頁的瀏覽速度有一定的影響。
參考文獻:
[1] Kotz D,Gray R S.Mobile Agent and the Future of the Internet.ACM Operating System Review 1999,33(3):7-13.
[2] 林冬梅.X3D:新一代WEB交互式三維圖形規范[J].計算機系統應用, 2004,(10):23-25.
[3] 劉華峰,黨崗,金士堯.X3D:新一代面向Web 的交互式三維圖形規范[J].系統仿真學報,2001,(13):199-203.
[4] 徐東輝.基于VRML多用戶環境的虛擬社區的研究和構造[D].南京理工大學,2004.
[5] 李欣.基于VRML技術的虛擬數字校園場景建模研究[J].浙江師范大學學報,2005,28(4):402-406.
[6] 朱群雄,李彥娜.基于VRML的三維虛擬仿真場景的構建[J].計算機與應用化學,2004,21(3):391-394.
[7] 來翔.面向電子商務的虛擬商品模型研究[D].浙江大學,2003.