摘 要: 利用虛擬現(xiàn)實技術(shù)實現(xiàn)化工場景,,討論了三維場景優(yōu)化的技術(shù),深入研究了場景優(yōu)化技術(shù)中的LOD技術(shù)和多邊形網(wǎng)格的簡化方法,,并將其作為離散LOD模型的生成方式,。對于建模過程中出現(xiàn)的面數(shù)過多、場景巨大等問題,,使用了可見性裁剪,、模型簡化與多分辨率造型等方法進(jìn)行實驗,利用EON軟件對虛擬化工場景進(jìn)行優(yōu)化與漫游功能的實現(xiàn),,并提出了一種基于EON軟件在視景系統(tǒng)中進(jìn)行三維場景優(yōu)化的方法,。
關(guān)鍵詞: 虛擬現(xiàn)實;三維場景建模,;優(yōu)化技術(shù)
虛擬現(xiàn)實VR(Virtual Reality)是一種可以創(chuàng)建和體驗虛擬世界的計算機系統(tǒng),,其本質(zhì)特征要求能夠生成實時且真實的虛擬環(huán)境。虛擬環(huán)境生成從本質(zhì)上是一種限時的計算機圖形繪制技術(shù),,這與傳統(tǒng)的單一強調(diào)逼真性的真實感圖形繪制技術(shù)有著根本的不同,。虛擬現(xiàn)實系統(tǒng)所要求的是實時圖形生成,,一方面渲染出來的虛擬場景要能滿足一定的視覺效果,,否則就違背了模擬真實的初衷;另一方面由于實時性的限制,,有時不得不降低虛擬環(huán)境的幾何復(fù)雜度,、降低生成圖像質(zhì)量,或采用優(yōu)化技術(shù)來提高虛擬環(huán)境的速度,。本文應(yīng)用虛擬現(xiàn)實軟件EON,,以某化工企業(yè)的生產(chǎn)現(xiàn)場為模型,建立了多處虛擬化工場景,,制作過程中結(jié)合多種優(yōu)化理論及技術(shù)的具體應(yīng)用,,實現(xiàn)了具有工藝流程培訓(xùn)、漫游交互等功能的漫游系統(tǒng),可使用戶有身臨其境的真實模擬操作的感覺,,同時讓用戶對實際化工生產(chǎn)中的管路設(shè)計,、生產(chǎn)設(shè)備和車間布置有更加感性的認(rèn)識。
1 開發(fā)平臺概述
EON Studio是美國EON Reality公司開發(fā)的一套模塊化多用途的三維交互式仿真軟件開發(fā)工具,,它能夠讓用戶自定義行為及交互方式,,也能夠進(jìn)行仿真測試及實時更改測試的參數(shù),可應(yīng)用在設(shè)計,、研究,、制造、生產(chǎn),、教育,、訓(xùn)練與維護(hù)等領(lǐng)域。EON Studio基于最新的PC技術(shù),,是在OpenGL圖形標(biāo)準(zhǔn)和微軟的DirectX多媒體功能的基礎(chǔ)上建立起來的,。通過與OpenGL和DirectX的聯(lián)系,使得利用EON所開發(fā)的應(yīng)用程序在將來圖形卡渲染能力加強的同時其渲染效果也會得到提高,。EON強調(diào)資源(軟件/硬件)的集成與延展,、基于Web的交互式三維文件的安全維護(hù)、逼真度及后臺數(shù)據(jù)庫的結(jié)合,。EON Studio技術(shù)和VRML技術(shù)在結(jié)構(gòu)上十分相似,,可以認(rèn)為,EON Studio技術(shù)是VRML技術(shù)基礎(chǔ)上的延伸和擴充,,其系統(tǒng)組成如圖1所示,。
EON Studio應(yīng)用了面向?qū)ο蠹夹g(shù),不僅使得對三維世界的描述變得清晰,,還通過封裝屬性和建立模擬場景內(nèi)部消息路由,,很方便地實現(xiàn)虛擬實體的交互和行為動作等功能。虛擬場景的基本元素為節(jié)點(node),,節(jié)點是EON Studio為多媒體和交互對象定義的一個對象集,。節(jié)點[1]的屬性包含在域(field)和事件(event)中。EON Studio的節(jié)點類型很豐富,,具有超過100個預(yù)先設(shè)定好的功能節(jié)點,,按功能可以分為以下幾類:預(yù)設(shè)節(jié)點;代理節(jié)點,;組裝節(jié)點,;基礎(chǔ)節(jié)點;碰撞檢測節(jié)點,;可視化節(jié)點,;傳感器節(jié)點,。
另外,EON Studio在以上基礎(chǔ)上又增加了Script Nodes,,可以利用Java script或VB script進(jìn)行編程,,處理一些復(fù)雜的仿真,擴展了EON Studio中虛擬世界的動態(tài)行為,。利用EON Studio的功能節(jié)點,,能方便地建立滿足用戶要求的三維虛擬場景,完成用戶特定的交互過程,。
2 三維模型建立與優(yōu)化
2.1 三維模型建立
使用3DS MAX可以較方便地建立逼真度很高的三維模型,。圖2是建立某化工場景模型的軟件界面。
2.2 模型的優(yōu)化
模型的優(yōu)化對漫游場景的瀏覽很有幫助,,前期如果不對場景的模型進(jìn)行很好的優(yōu)化,,到了制作后期再對模型進(jìn)行優(yōu)化時就需要重新回到MAX里修改模型并進(jìn)行重新烘焙后再導(dǎo)入到當(dāng)前的EON場景里,這樣就出現(xiàn)了重復(fù)工作的情況,,大大降低了工作效率,。因此,模型的優(yōu)化需要在創(chuàng)建場景時就應(yīng)受到足夠的重視,。
在3DS MAX中建模的準(zhǔn)則基本上可以歸納為以下幾點:
(1)制作簡模
漫游場景中運行畫面每一幀都是靠顯卡和CPU實時計算出來的,,如果面數(shù)太多,會導(dǎo)致運行速度急劇下降,,甚至無法運行,;還會導(dǎo)致文件容量增大,在網(wǎng)絡(luò)上發(fā)布還會導(dǎo)致下載時間增加[2],。
(2)三角面盡量為等邊三角形
在調(diào)用模型或創(chuàng)建模型時,,盡量保證模型的三角面為等邊三角形,不要出現(xiàn)長條型,。這是因為長條形的面不利于實時渲染,,還會出現(xiàn)鋸齒、紋理模糊等現(xiàn)象,。
(3)合理分布模型的密度
模型的密度分布不合理對其后面的運行速度有影響,,如果模型密度不均勻,會導(dǎo)致運行速度時快時慢,,因此,,應(yīng)合理地分布場景模型的密度,。
在3DS MAX中完成模型烘焙和優(yōu)化后,,輸出的Eoz文件格式,可方便地導(dǎo)入EON Studio進(jìn)行開發(fā)設(shè)計,。
3 EON中場景的優(yōu)化
初步完成化工場景的建模后,,通過EON Viewer瀏覽的速度緩慢,,甚至發(fā)生停頓現(xiàn)象,如果不能解決瀏覽速度問題,,整個系統(tǒng)就沒有什么意義了,。為了解決這個問題,首先要對該問題的產(chǎn)生進(jìn)行分析,。三維場景的呈現(xiàn)是通過瀏覽器以默認(rèn)視點為參照對場景描述文件的解釋而完成的,,每當(dāng)用戶拖動鼠標(biāo)或按下箭頭鍵在場景中走動或旋轉(zhuǎn)時,視點就會發(fā)生變化,。在真實世界中,,人向前行,對面的事物會越來越近,,為了模仿這種效果,,每當(dāng)視點發(fā)生變化,瀏覽器就會重新計算場景中各對象的新位置并重新進(jìn)行渲染,,使得人能走近某個對象,。當(dāng)場景中對象較多時,瀏覽器渲染的速度就跟不上視點變化的速度,,從而產(chǎn)生停頓的現(xiàn)象,。
由于化工廠場景巨大、管線繁多,、工藝流程復(fù)雜等問題,,對三維場景的顯示與實現(xiàn)帶來一定的困難。筆者曾試著采用貼圖的方法,,即在一個方體上貼上相應(yīng)的紋理圖來表示裝置,,這種方法實現(xiàn)起來很簡單,瀏覽器解釋速度較快,,但最大的缺點是構(gòu)建的對象缺乏三維立體感和真實感,,因此貼圖的方法不適合化工場景。通過對三維場景實時繪制技術(shù)的分析與研究,,提出如下優(yōu)化方式,。
3.1 大量使用重用機制
不僅一個裝置內(nèi)部的對象可以重用,流程相同的裝置之間也可采用重用機制,。對于兩個不同的構(gòu)建模型,,有些泵和閥門是相同的,那么對相同的部分利用DEF與UES重用機制就可以極大地簡化描述文件,,最重要的是能夠減輕瀏覽器的負(fù)擔(dān),,從而提高渲染速度。重用機制的使用有個前提,,即只能在一個描述文件內(nèi)部使用[3],。因此,,需要進(jìn)行代碼重用的2個或多個對象,它們的描述應(yīng)放在同一個節(jié)點中,。
3.2 利用EON統(tǒng)計值改善模擬品質(zhì)
復(fù)雜三維場景的實時繪制要求包括:場景環(huán)境中的運動體的位置,、姿態(tài)的實時計算與動態(tài)繪制;用戶視點改變時,,畫面的刷新必須達(dá)到人眼覺察不到閃爍,,即相當(dāng)光滑的程度,通常為20~30幀/s,,至少不能少于10幀/s,;同時場景的環(huán)境也要求隨著人的活動及時產(chǎn)生相應(yīng)的畫面,圖形生成必須能立即做出反應(yīng)并產(chǎn)生相應(yīng)的環(huán)境和場景,。
可以利用模擬(Simulation)菜單中顯示模擬程式統(tǒng)計值(Show Simulation Statistics)選項,,或是點選工具列中顯示模擬程式統(tǒng)計值的按鈕,啟動模擬統(tǒng)計值的顯示[4],。HZ:每秒框架數(shù)目,。這是一個利用數(shù)個框架計算出來的平均速率,較小的值表示框架產(chǎn)生較慢,;Frm:準(zhǔn)備框架所需的時間(s),。這個值可用來確認(rèn)哪個框架耗費較多的時間;App:更新傳呼所需的時間(s),;Eve:事件處理所耗費的時間(s),。Drw:繪圖所耗費的時間(s),包含下載材質(zhì),、像素填充及頂點轉(zhuǎn)換,;#tri:繪制的三角形實際的數(shù)目(注意這個值會隨視角的改變而改變)。
隨著統(tǒng)計值的變化,,可實時判定具體場景的瀏覽速度,,同時利用EON中Mesh節(jié)點下的Polygon Reduction level子節(jié)點進(jìn)行Mesh網(wǎng)格的簡化,以達(dá)到適合的瀏覽效果,。
3.3 合理定義顯示比例
大部分的顯卡使用材質(zhì)的影像記憶體及框架緩沖來做動作,。框架緩沖可分為前緩沖,、后緩沖及Z緩沖,,在屏幕上根據(jù)所看到影像的不同而不同。如果在視窗中執(zhí)行EON模擬程式,,前緩沖會涵蓋整體事件屏幕,,但不影響模擬視窗的大小,在記憶體的數(shù)量上,前緩沖由Windows屏幕設(shè)定來決定,。而后緩沖及Z緩沖的大小則依據(jù)目前EON模擬視窗的大小來設(shè)定,。
在屏幕上繪制像素是需要時間的,,當(dāng)相對于視窗大小的框架速率很大時,,像素填充會設(shè)定模擬速度的極限。要降低像素填充所花費的時間,,可使用較小的模擬視窗,,點選大小/方位比例(Size/Aspect Ratio)標(biāo)簽,并輸入模擬視窗大小,,降低透支(Overdraw)的程度(例如空間內(nèi)部結(jié)構(gòu)的模擬),,合理地將場景進(jìn)行分割并保存為獨立的Edz文件,利用改變模擬(Change Simulation)功能節(jié)點來進(jìn)行切換,,也可利用在框架功能節(jié)點的特性視窗中選取隱藏(Hidden)選項,,讓漫游瀏覽中尚未看到的幾何物件暫時不顯示。
3.4 利用場景切換技術(shù)實現(xiàn)同一對象不同模型的自動切換
有針對性地為場景中面數(shù)復(fù)雜的裝置建立多個不同的模型,,使場景在顯示的時候以不同模型多方面顯示,,如圖3所示。最簡單的是建立簡單和細(xì)化兩種模型,,當(dāng)視點距對象較遠(yuǎn)時采用簡單模型,,視點接近時自動切換為該對象的細(xì)化模型。采用這種辦法,,需對某對象建立多個模型,,并利用Switch、LOD節(jié)點或觸發(fā)器實現(xiàn)模型的切換[5],。在切換過程中,,要對切換時間進(jìn)行設(shè)置,使切換時間小于人眼眨動頻率,,畫面看起來更加逼真,。這種方法既能夠減小面數(shù)、提高演示速度,,又能夠使人感覺不到明顯的切換痕跡,,是虛擬現(xiàn)實領(lǐng)域應(yīng)該繼續(xù)沿用并加以延伸的方法。
3.5 漫游系統(tǒng)優(yōu)化測試
虛擬現(xiàn)實漫游技術(shù)的一大困難在于漫游仿真速度與運行速度之間的矛盾,。在建立最佳仿真程度模型的同時又要保證速度的運行是要重點協(xié)調(diào)的問題,。本系統(tǒng)運行的硬件配置為:處理器Pentiu(R)4 3.0 GHz,內(nèi)存1 GB,,顯卡使用NVIDIA Geforce 7300GT(256 MB),,在臺式機上進(jìn)行了優(yōu)化測試,測試結(jié)果如表1所示,。
利用EON Studio建立的虛擬化工場景,,以某化工企業(yè)的生產(chǎn)場景為模型,,實現(xiàn)了該虛擬場景的漫游,如圖4所示,。使用者可以對場景進(jìn)行全方位瀏覽,,也可對局部進(jìn)行細(xì)致的觀察;并配合適當(dāng)?shù)闹v解,,最終對該生產(chǎn)過程產(chǎn)生一個清晰,、深刻的認(rèn)識。通過對模型部分優(yōu)化與在EON Studio中進(jìn)行的必要優(yōu)化,,符合實時交互頻率15幀/s以上的漫游要求,,加快了三維場景的實時繪制速度,提供了良好的漫游瀏覽速度,。該優(yōu)化方法具有一定的普遍性,,對后續(xù)漫游信息系統(tǒng)的完善和二次開發(fā)提供了必要的保證。
參考文獻(xiàn)
[1] 楊旭日,,王丹虹.基于EON的數(shù)控機床換刀系統(tǒng)運動仿真[J].實驗技術(shù)與管理,,2008,25(7):88-90.
[2] 王嵐.EON虛擬現(xiàn)實軟件應(yīng)用教程[M].天津:南開大學(xué)出版社,,2007.
[3] 于輝.EON入門與高級應(yīng)用技巧[M].北京:國防工業(yè)出版社,,2008.
[4] EON Reality Inc. EON user guide 5.5[Z]. USA, 2008.
[5] EON Reality Inc. EON SDK 5.5[Z]. USA,, 2008.