摘要:針對目前教育信息資源庫中缺少三維仿真精品課件的問題,我校創(chuàng)造性地開發(fā)了遠程交互式三維仿真課件編輯平臺。本文首先介紹該平臺的總體功能結(jié)構(gòu),并詳細說明了各模塊的工作機制,最后結(jié)合實例說明使用該平臺開發(fā)的課件在實際教學中的具體運用。
關(guān)鍵詞:三維仿真課件;場景圖;OpenGL著色語言
中圖分類號:G642
文獻標識碼:B
文章編號:1672-5913(2008)02-0095-05
1引言
隨著計算機網(wǎng)絡和虛擬現(xiàn)實技術(shù)的發(fā)展,現(xiàn)代遠程教育引發(fā)了一場深刻的教育模式和教育觀念的變革。傳統(tǒng)的文字、幻燈、實物模型的教學方式已不能滿足教育變革的要求,如何把枯燥的學習對象構(gòu)造成三維可視化的、所見即所得的學習教具和學習培訓環(huán)境,成了教育信息領(lǐng)域努力追求的目標之一。
本文開發(fā)的遠程交互式三維仿真課件編輯平臺是在對OSG(Open Scene Graph)進行功能擴展與大幅度改造后的一個易于快速定做仿真課件的平臺。該平臺將三維仿真設計、實時渲染瀏覽和遠程網(wǎng)絡壓縮發(fā)布等功能融為一體,使用戶可以針對教學重點、難點,方便快捷地制作出三維仿真教具和實物模型,用于形象教學和交互式趣味教學。
該平臺通過標準化設計把一些知名的開源軟件和引擎融為一體,如Open Scene Graph(OSG)、Open Dynamics Engine(ODE)、Character Animation Library(CAL3D)、OpenGL等。通過對這些底層模塊進行隱藏封裝、模塊整合等技術(shù)開發(fā),繼承與發(fā)展了各類引擎所具有的先進特性。不但仿真效果的真實性大大提高,而且能直接處理大量模型數(shù)據(jù),使高質(zhì)量的三維畫面在遠程交互中能快速傳輸,為廣大師生展現(xiàn)了全方位的、真實的學習對象和學習環(huán)境。
2總體功能結(jié)構(gòu)
遠程交互式三維仿真課件編輯平臺由3dsmax建模及輸出模塊、場景編輯器模塊、仿真數(shù)據(jù)庫管理模塊、仿真算法模塊、VR仿真內(nèi)容發(fā)布系統(tǒng)模塊、流體動力學粒子系統(tǒng)仿真模塊、網(wǎng)絡仿真及通訊模塊、多通道視覺仿真模塊、各類仿真特效模塊、OCX控件二次開發(fā)包模塊等功能模塊組成,如圖1所示。
2.13dsmax建模及輸出模塊
在仿真項目的制作過程中,明確需求并確定計劃后,首先要面對的工作就是仿真場景的構(gòu)建。該模塊支持對Multigen openflight等多種文件格式的導入,且能對輸入的場景自動優(yōu)化。用戶不但可以在場景中建立新的幾何物體,而且能創(chuàng)建自己的實時圖庫,可以隨時入庫和調(diào)用。此外,模塊還支持MAX的視圖操作功能,用戶可對模型進行平移、旋轉(zhuǎn)、縮放等操作,建模模塊如圖2所示。
2.2VR場景編輯器模塊
仿真項目的場景構(gòu)建完畢后,可以通過這個模塊向原來內(nèi)容相對比較單一的幾何體賦予仿真需要的各種屬性,諸如LOD、switch節(jié)點、碰撞、物理屬性等。此外用戶還可以對各節(jié)點進行增加、刪除、重命名等操作,或者改變節(jié)點的Group關(guān)系。同時該模塊提供對形體、光源和相機的直接操作,以及真實感屬性的編輯,極大地提高了虛擬世界的真實度。如圖3所示。
2.3仿真核心工作模塊
這個模塊是仿真系統(tǒng)的工作核心,主要處理一些內(nèi)核的仿真任務的調(diào)度,各個任務之間的結(jié)構(gòu)是基于事件驅(qū)動的結(jié)構(gòu)關(guān)系。模塊初始化時會建立一個動態(tài)的事件列表,并按時間的先后順序確定任務的優(yōu)先級。當某個事件被觸發(fā)時,核心工作模塊就會通過消息機制激活所有的與該事件相關(guān)的過程或函數(shù),協(xié)調(diào)各仿真模塊共同工作。它主要調(diào)度以下幾個模塊:
Oslash;仿真數(shù)據(jù)庫管理模塊
數(shù)據(jù)庫是與仿真緊密聯(lián)系的一個部分,很多仿真數(shù)據(jù)的讀入及保存都必須通過數(shù)據(jù)庫進行。該模塊在內(nèi)核中保留了最基本但功能又非常強大的數(shù)據(jù)庫處理能力,通過這個模塊,可以處理海量的數(shù)據(jù)。當數(shù)據(jù)量大而導致內(nèi)存不夠時,這個模塊會通過一套內(nèi)置的虛擬內(nèi)存系統(tǒng)將硬盤與物理內(nèi)存進行動態(tài)交換,并且對大型場景進行動態(tài)加載。
該模塊的另一作用是將各種插件式開發(fā)的.dll功能增強模塊作為一個數(shù)據(jù)庫進行動態(tài)管理。這樣如果用戶或者軟件研發(fā)者需要增加額外的系統(tǒng)功能,只需要編寫一個.dll插件,再在這個數(shù)據(jù)庫系統(tǒng)中進行一次注冊,然后就會在下次系統(tǒng)啟動時自動加載。
Oslash;仿真算法模塊
無論在數(shù)值仿真或者視覺仿真領(lǐng)域,都會面臨著許多的仿真算法。這個模塊提供了一些仿真領(lǐng)域中最常見或者使用頻率最高的算法。用戶不用重復編寫常用算法,只需要調(diào)用幾個現(xiàn)成的函數(shù)就能解決常見問題。
Oslash;流體動力學粒子系統(tǒng)仿真模塊
在軍事或者其他常見領(lǐng)域的仿真中,粒子系統(tǒng)是種常見的現(xiàn)象,如輪船開動時的尾跡、飛機航行時的尾跡與煙霧等。在粒子系統(tǒng)仿真模塊中,大量的粒子圖元集合在一起,通過其屬性的變化表現(xiàn)物體的物理特性,用以進行不規(guī)則物體的模擬。用戶可以通過定義粒子的形狀、大小、生存期、位置、速度、加速度、顏色、透明度等屬性來實現(xiàn)對各種煙霧、火焰、閃光等現(xiàn)象的模擬。如圖4所示。
Oslash;各類仿真特效模塊
在自然界中存在著很多的自然現(xiàn)象,如下雨、下雪、水面的反射、有陽光或者燈光時的鏡頭光暈等等各種效果。該模塊支持以上提到的各種特效,令仿真的效果栩栩如生。如圖5所示。
Oslash;網(wǎng)絡仿真及網(wǎng)絡通訊模塊
該模塊支持內(nèi)部網(wǎng)與互聯(lián)網(wǎng)方式發(fā)布演示。當互聯(lián)網(wǎng)因帶寬受限以及客戶機配置未能達到基本要求時,可采用降低圖形質(zhì)量的方法進行傳輸。內(nèi)部教學網(wǎng)絡則可以不受限制,便于集中培訓教學與虛擬實踐。該模塊還設置了分級權(quán)限使用,給不同身份的用戶授予不同的權(quán)限,便于系統(tǒng)管理。
Oslash;多通道視覺仿真模塊
在一般的視景仿真系統(tǒng)中,通常采用單視覺通道來顯示三維圖形。單視覺通道只能顯示一個視野,而利用多通道視覺仿真系統(tǒng)就可以得到更廣闊的視角效果,增強了“沉浸”感。
該模塊提供了獲取當前視角的函數(shù),且支持水平和垂直視角自動匹配的功能。在視點位置、方向以及遠近裁剪面的距離確定后,系統(tǒng)還可自動完成視景體的裁剪。
2.4VR仿真內(nèi)容發(fā)布系統(tǒng)模塊
該模塊可將仿真課件發(fā)布成獨立的exe文件,且所有必需的庫文件與資源均打包在內(nèi),用戶可自行設計圖形界面,便于分發(fā)與保密。打包后的可執(zhí)行文件在運行時支持用戶的交互式瀏覽,用戶可以根據(jù)需要選擇自動播放或單步操作,方便教學與虛擬裝配。
2.5OCX控件二次開發(fā)包模塊
交互式三維仿真課件的開發(fā)一直被認為是一項復雜的工作,因為涉及到C語言、OpenGL、Direct3D等基礎開發(fā)工具的應用,這無疑降低了開發(fā)效率,延長了開發(fā)周期。因此這一模塊引入了與各類開發(fā)平臺掛接和無縫植入的快速虛擬現(xiàn)實開發(fā)工具3DVR OCX,通過此可編程控件OCX,用戶可以輕松做出實用的仿真課件,極大地提高了開發(fā)工作的效率。如圖6所示。
3關(guān)鍵技術(shù)研究
3.1場景圖
內(nèi)核采用場景圖SG(Scene Graph)結(jié)構(gòu),通過場景圖把各場景及其屬性組織成一棵場景樹。場景圖中的根結(jié)點表的是整個三維場景,子結(jié)點表示場景中每個對象的位置信息、動畫設置以及邏輯關(guān)系等屬性,葉子結(jié)點則代表物理對象本身、可拉伸的幾何模型和材質(zhì)屬性。
采用這種樹狀組織結(jié)構(gòu)可以大大縮減剔除的執(zhí)行時間。當父結(jié)點對象被遮擋或處于觀察區(qū)域以外時,父結(jié)點就被設置為不可見,位于父結(jié)點以下的所有子結(jié)點對象也都是不可見的,這樣就無需再比較子結(jié)點對象的空間邊界,避免了重復執(zhí)行對多個對象物體的剔除處理,從而加快了場景渲染的速度。例如,要剔除一座大樓時,只需計算這座大樓的空間邊界是否在觀察區(qū)域內(nèi),而大樓的門、窗等對象因為屬于大樓對象的子結(jié)點,就無需再判斷其空間邊界,從而縮短了剔除的執(zhí)行時間。
此外,場景圖結(jié)構(gòu)還使得動畫設置變得更加靈活。當我們要對一輛汽車設置平移動畫時,只需對汽車這個結(jié)點設置移動的相關(guān)參數(shù),處于子結(jié)點位置的車輪、車門等對象就無需再進行重復設置。如果用戶只要求車輪做旋轉(zhuǎn)動畫或者車門做開門動畫時,只要查找到對應結(jié)點,設置動畫參數(shù)即可。由此可見,對于一個包含有多個對象的三維場景,這種樹狀結(jié)構(gòu)有效地簡化了動畫設置的操作過程。
場景圖結(jié)構(gòu)中還集中了對各個對象的狀態(tài)管理。場景圖中的每個對象都有一個指向狀態(tài)集的指針,這個狀態(tài)集中包含了顏色、紋理、燈光、透明度等信息。對處在同一層的對象,首先歸納出它們的相似狀態(tài),并設置狀態(tài)指針指向同一個狀態(tài)集。例如,圖7中坦克的炮塔和基座同處在場景圖的第二層,所以狀態(tài)都設置為迷彩色。這種狀態(tài)管理方式可以簡化狀態(tài)設置的過程。當對象狀態(tài)發(fā)生改變時,我們只需先按照廣度優(yōu)先的順序遍歷場景樹,查找到對象后,將狀態(tài)集中的屬性進行一次更改,則同層的所有對象狀態(tài)都會發(fā)生改變。當場景中的圖形對象達到成百上千時,這種狀態(tài)管理方式的優(yōu)勢就會更加明顯。
3.2OpenGL著色語言
內(nèi)置了對GLSL(OpenGL Shading Language,OpenGL著色語言)的支持,突破了OpenGL傳統(tǒng)渲染模型的固定功能性。用戶可以自定義渲染管線的處理過程,實現(xiàn)頂點著色和片斷著色,從而繪制出更豐富的紋理,模擬更真實的自然景象。同時該技術(shù)是直接對顯卡編程,源代碼在OpenGL內(nèi)部編譯,不占用CPU資源,因此在處理三維圖形的實時渲染方面顯示了強大的優(yōu)勢。
具體的實現(xiàn)過程是,當處理圖形渲染任務時,首先調(diào)用OpenGL的一個API函數(shù)glCreateShader來創(chuàng)建著色器(shader),同時在OpenGL的驅(qū)動程序中為著色器分配數(shù)據(jù)結(jié)構(gòu)。著色器通過獲取當前OpenGL中的狀態(tài)信息(如位置、顏色、法線等)進行投影變換、坐標轉(zhuǎn)換、顏色計算等操作,然后調(diào)用glShaderSource命令將著色器代碼傳遞給OpenGL驅(qū)動程序,用glCompileShader命令將代碼編譯成機器語言,并以二進制文件的格式傳遞給顯示硬件。該方法不依賴顯示硬件的匯編語言接口,突破了圖形硬件在匯編語言接口上的諸多限制,有效地提高了圖形渲染的效率。
4實例研究
三維仿真課件可以模擬各種真實的空間和實體,能展現(xiàn)那些在傳統(tǒng)教學中無法實現(xiàn)的教學效果,如一些危險的或是耗資巨大的實驗。尤其在工科教學中,許多知識點抽象難懂,成為了教學中的難點。
目前使用遠程交互式三維仿真課件編輯平臺已經(jīng)開發(fā)了很多直接面向應用的精品課件,使用該系統(tǒng)開發(fā)的“千斤頂?shù)慕M裝與工作原理”課件在實際教學中已收到良好的效果,如圖8所示。該課件主要用于培訓千斤頂?shù)慕M裝與拆卸,課件中所展示的千斤頂?shù)母鱾€零部件,都是與實際大小相符的三維模型,且零件表面按實物材質(zhì)仿真,教師和學生可以旋轉(zhuǎn)任意視角觀看設備的外形、細節(jié)部分和整體外觀。課件中設置有整體或局部零件的工作動態(tài)演示,用戶可以選擇自動播放設備零部件拆分和組裝演示,也可以進行手動單步拆分與組裝。其中自動演示過程是可控的,用戶可隨時中止或重播動畫。這種交互方式不但增強了裝配過程的直觀性,也提高了學生的動手能力。為了加強學生對千斤頂工作原理的理解,課件中還增加了整體和局部零部件的工作動態(tài)演示,任何零部件只要用鼠標點擊,其應有的工作動態(tài)、工作原理和裝配方式就能自動展示出來,同時還配有零部件的詳細參數(shù)信息、文字說明與二維設計圖。
“千斤頂?shù)慕M裝與工作原理”課件以其強大的交互功能、簡便直觀的操作方法以及實時的三維表現(xiàn)能力得到了廣大師生的一致贊同,也推動了三維仿真課件在教學一線的普及。
5結(jié)束語
遠程交互式三維仿真課件編輯平臺是針對教學重點、難點的培訓而開發(fā)的集三維仿真設計、實時功能渲染瀏覽和遠程網(wǎng)絡壓縮發(fā)布于一體的仿真系統(tǒng)設計開發(fā)包。
該設計平臺的成功開發(fā)將解決教育領(lǐng)域重點、難點課程的仿真教學課件的制作難題,完善了教育領(lǐng)域遠程教學平臺的建設,并節(jié)約教學培訓設備的巨大開銷。我們相信,在未來的教育領(lǐng)域中,遠程交互式三維仿真課件編輯平臺將為信息時代的教育發(fā)展注入新的活力。
收稿日期:2007-10
參考文獻
[1] 項慨. Java3D應用于現(xiàn)代遠程教育的關(guān)鍵技術(shù)[J]. 教育信息化,2006,(10).
[2] 劉少華. 虛擬仿真引擎及其在三維飛行再現(xiàn)中的應用[D]. 國防科技大學,2004,(12).
[3] 趙春霞,張艷,戰(zhàn)守義. 基于粒子系統(tǒng)方法的三維火焰模擬[J]. 計算機工程與應用,2004,(2).
[4] 陶唐飛,韓崇昭. 視景仿真系統(tǒng)光學視覺通道技術(shù)研究與實現(xiàn)[J]. 系統(tǒng)仿真學報,2004,(4).
作者簡介
申閆春(1957-),男,河南開封市人,1999年7月在中國礦業(yè)大學計算機應用專業(yè)獲博士學位,2001年12月博士后出站,從事計算機網(wǎng)絡與應用、流媒體技術(shù)、虛擬現(xiàn)實技術(shù)方面的研究。
TEL:010-8216188713341083100
E-mail:shenyc128@126.com