摘要:針對目前教育信息資源庫中缺少三維仿真精品課件的問題,我校創造性地開發了遠程交互式三維仿真課件編輯平臺。本文首先介紹該平臺的總體功能結構,并詳細說明了各模塊的工作機制,最后結合實例說明使用該平臺開發的課件在實際教學中的具體運用。
關鍵詞:三維仿真課件;場景圖;OpenGL著色語言
中圖分類號:G642
文獻標識碼:B
文章編號:1672-5913(2008)02-0095-05
1引言
隨著計算機網絡和虛擬現實技術的發展,現代遠程教育引發了一場深刻的教育模式和教育觀念的變革。傳統的文字、幻燈、實物模型的教學方式已不能滿足教育變革的要求,如何把枯燥的學習對象構造成三維可視化的、所見即所得的學習教具和學習培訓環境,成了教育信息領域努力追求的目標之一。
本文開發的遠程交互式三維仿真課件編輯平臺是在對OSG(Open Scene Graph)進行功能擴展與大幅度改造后的一個易于快速定做仿真課件的平臺。該平臺將三維仿真設計、實時渲染瀏覽和遠程網絡壓縮發布等功能融為一體,使用戶可以針對教學重點、難點,方便快捷地制作出三維仿真教具和實物模型,用于形象教學和交互式趣味教學。
該平臺通過標準化設計把一些知名的開源軟件和引擎融為一體,如Open Scene Graph(OSG)、Open Dynamics Engine(ODE)、Character Animation Library(CAL3D)、OpenGL等。通過對這些底層模塊進行隱藏封裝、模塊整合等技術開發,繼承與發展了各類引擎所具有的先進特性。不但仿真效果的真實性大大提高,而且能直接處理大量模型數據,使高質量的三維畫面在遠程交互中能快速傳輸,為廣大師生展現了全方位的、真實的學習對象和學習環境。
2總體功能結構
遠程交互式三維仿真課件編輯平臺由3dsmax建模及輸出模塊、場景編輯器模塊、仿真數據庫管理模塊、仿真算法模塊、VR仿真內容發布系統模塊、流體動力學粒子系統仿真模塊、網絡仿真及通訊模塊、多通道視覺仿真模塊、各類仿真特效模塊、OCX控件二次開發包模塊等功能模塊組成,如圖1所示。

2.13dsmax建模及輸出模塊
在仿真項目的制作過程中,明確需求并確定計劃后,首先要面對的工作就是仿真場景的構建。該模塊支持對Multigen openflight等多種文件格式的導入,且能對輸入的場景自動優化。用戶不但可以在場景中建立新的幾何物體,而且能創建自己的實時圖庫,可以隨時入庫和調用。此外,模塊還支持MAX的視圖操作功能,用戶可對模型進行平移、旋轉、縮放等操作,建模模塊如圖2所示。

2.2VR場景編輯器模塊
仿真項目的場景構建完畢后,可以通過這個模塊向原來內容相對比較單一的幾何體賦予仿真需要的各種屬性,諸如LOD、switch節點、碰撞、物理屬性等。此外用戶還可以對各節點進行增加、刪除、重命名等操作,或者改變節點的Group關系。同時該模塊提供對形體、光源和相機的直接操作,以及真實感屬性的編輯,極大地提高了虛擬世界的真實度。如圖3所示。

2.3仿真核心工作模塊
這個模塊是仿真系統的工作核心,主要處理一些內核的仿真任務的調度,各個任務之間的結構是基于事件驅動的結構關系。模塊初始化時會建立一個動態的事件列表,并按時間的先后順序確定任務的優先級。當某個事件被觸發時,核心工作模塊就會通過消息機制激活所有的與該事件相關的過程或函數,協調各仿真模塊共同工作。它主要調度以下幾個模塊:
Oslash;仿真數據庫管理模塊
數據庫是與仿真緊密聯系的一個部分,很多仿真數據的讀入及保存都必須通過數據庫進行。該模塊在內核中保留了最基本但功能又非常強大的數據庫處理能力,通過這個模塊,可以處理海量的數據。當數據量大而導致內存不夠時,這個模塊會通過一套內置的虛擬內存系統將硬盤與物理內存進行動態交換,并且對大型場景進行動態加載。
該模塊的另一作用是將各種插件式開發的.dll功能增強模塊作為一個數據庫進行動態管理。這樣如果用戶或者軟件研發者需要增加額外的系統功能,只需要編寫一個.dll插件,再在這個數據庫系統中進行一次注冊,然后就會在下次系統啟動時自動加載。
Oslash;仿真算法模塊
無論在數值仿真或者視覺仿真領域,都會面臨著許多的仿真算法。這個模塊提供了一些仿真領域中最常見或者使用頻率最高的算法。用戶不用重復編寫常用算法,只需要調用幾個現成的函數就能解決常見問題。
Oslash;流體動力學粒子系統仿真模塊
在軍事或者其他常見領域的仿真中,粒子系統是種常見的現象,如輪船開動時的尾跡、飛機航行時的尾跡與煙霧等。在粒子系統仿真模塊中,大量的粒子圖元集合在一起,通過其屬性的變化表現物體的物理特性,用以進行不規則物體的模擬。用戶可以通過定義粒子的形狀、大小、生存期、位置、速度、加速度、顏色、透明度等屬性來實現對各種煙霧、火焰、閃光等現象的模擬。如圖4所示。
Oslash;各類仿真特效模塊
在自然界中存在著很多的自然現象,如下雨、下雪、水面的反射、有陽光或者燈光時的鏡頭光暈等等各種效果。該模塊支持以上提到的各種特效,令仿真的效果栩栩如生。如圖5所示。

Oslash;網絡仿真及網絡通訊模塊
該模塊支持內部網與互聯網方式發布演示。當互聯網因帶寬受限以及客戶機配置未能達到基本要求時,可采用降低圖形質量的方法進行傳輸。內部教學網絡則可以不受限制,便于集中培訓教學與虛擬實踐。該模塊還設置了分級權限使用,給不同身份的用戶授予不同的權限,便于系統管理。
Oslash;多通道視覺仿真模塊
在一般的視景仿真系統中,通常采用單視覺通道來顯示三維圖形。單視覺通道只能顯示一個視野,而利用多通道視覺仿真系統就可以得到更廣闊的視角效果,增強了“沉浸”感。
該模塊提供了獲取當前視角的函數,且支持水平和垂直視角自動匹配的功能。在視點位置、方向以及遠近裁剪面的距離確定后,系統還可自動完成視景體的裁剪。
2.4VR仿真內容發布系統模塊
該模塊可將仿真課件發布成獨立的exe文件,且所有必需的庫文件與資源均打包在內,用戶可自行設計圖形界面,便于分發與保密。打包后的可執行文件在運行時支持用戶的交互式瀏覽,用戶可以根據需要選擇自動播放或單步操作,方便教學與虛擬裝配。
2.5OCX控件二次開發包模塊
交互式三維仿真課件的開發一直被認為是一項復雜的工作,因為涉及到C語言、OpenGL、Direct3D等基礎開發工具的應用,這無疑降低了開發效率,延長了開發周期。因此這一模塊引入了與各類開發平臺掛接和無縫植入的快速虛擬現實開發工具3DVR OCX,通過此可編程控件OCX,用戶可以輕松做出實用的仿真課件,極大地提高了開發工作的效率。如圖6所示。

3關鍵技術研究
3.1場景圖
內核采用場景圖SG(Scene Graph)結構,通過場景圖把各場景及其屬性組織成一棵場景樹。場景圖中的根結點表的是整個三維場景,子結點表示場景中每個對象的位置信息、動畫設置以及邏輯關系等屬性,葉子結點則代表物理對象本身、可拉伸的幾何模型和材質屬性。
采用這種樹狀組織結構可以大大縮減剔除的執行時間。當父結點對象被遮擋或處于觀察區域以外時,父結點就被設置為不可見,位于父結點以下的所有子結點對象也都是不可見的,這樣就無需再比較子結點對象的空間邊界,避免了重復執行對多個對象物體的剔除處理,從而加快了場景渲染的速度。例如,要剔除一座大樓時,只需計算這座大樓的空間邊界是否在觀察區域內,而大樓的門、窗等對象因為屬于大樓對象的子結點,就無需再判斷其空間邊界,從而縮短了剔除的執行時間。
此外,場景圖結構還使得動畫設置變得更加靈活。當我們要對一輛汽車設置平移動畫時,只需對汽車這個結點設置移動的相關參數,處于子結點位置的車輪、車門等對象就無需再進行重復設置。如果用戶只要求車輪做旋轉動畫或者車門做開門動畫時,只要查找到對應結點,設置動畫參數即可。由此可見,對于一個包含有多個對象的三維場景,這種樹狀結構有效地簡化了動畫設置的操作過程。
場景圖結構中還集中了對各個對象的狀態管理。場景圖中的每個對象都有一個指向狀態集的指針,這個狀態集中包含了顏色、紋理、燈光、透明度等信息。對處在同一層的對象,首先歸納出它們的相似狀態,并設置狀態指針指向同一個狀態集。例如,圖7中坦克的炮塔和基座同處在場景圖的第二層,所以狀態都設置為迷彩色。這種狀態管理方式可以簡化狀態設置的過程。當對象狀態發生改變時,我們只需先按照廣度優先的順序遍歷場景樹,查找到對象后,將狀態集中的屬性進行一次更改,則同層的所有對象狀態都會發生改變。當場景中的圖形對象達到成百上千時,這種狀態管理方式的優勢就會更加明顯。

3.2OpenGL著色語言
內置了對GLSL(OpenGL Shading Language,OpenGL著色語言)的支持,突破了OpenGL傳統渲染模型的固定功能性。用戶可以自定義渲染管線的處理過程,實現頂點著色和片斷著色,從而繪制出更豐富的紋理,模擬更真實的自然景象。同時該技術是直接對顯卡編程,源代碼在OpenGL內部編譯,不占用CPU資源,因此在處理三維圖形的實時渲染方面顯示了強大的優勢。
具體的實現過程是,當處理圖形渲染任務時,首先調用OpenGL的一個API函數glCreateShader來創建著色器(shader),同時在OpenGL的驅動程序中為著色器分配數據結構。著色器通過獲取當前OpenGL中的狀態信息(如位置、顏色、法線等)進行投影變換、坐標轉換、顏色計算等操作,然后調用glShaderSource命令將著色器代碼傳遞給OpenGL驅動程序,用glCompileShader命令將代碼編譯成機器語言,并以二進制文件的格式傳遞給顯示硬件。該方法不依賴顯示硬件的匯編語言接口,突破了圖形硬件在匯編語言接口上的諸多限制,有效地提高了圖形渲染的效率。
4實例研究
三維仿真課件可以模擬各種真實的空間和實體,能展現那些在傳統教學中無法實現的教學效果,如一些危險的或是耗資巨大的實驗。尤其在工科教學中,許多知識點抽象難懂,成為了教學中的難點。
目前使用遠程交互式三維仿真課件編輯平臺已經開發了很多直接面向應用的精品課件,使用該系統開發的“千斤頂的組裝與工作原理”課件在實際教學中已收到良好的效果,如圖8所示。該課件主要用于培訓千斤頂的組裝與拆卸,課件中所展示的千斤頂的各個零部件,都是與實際大小相符的三維模型,且零件表面按實物材質仿真,教師和學生可以旋轉任意視角觀看設備的外形、細節部分和整體外觀。課件中設置有整體或局部零件的工作動態演示,用戶可以選擇自動播放設備零部件拆分和組裝演示,也可以進行手動單步拆分與組裝。其中自動演示過程是可控的,用戶可隨時中止或重播動畫。這種交互方式不但增強了裝配過程的直觀性,也提高了學生的動手能力。為了加強學生對千斤頂工作原理的理解,課件中還增加了整體和局部零部件的工作動態演示,任何零部件只要用鼠標點擊,其應有的工作動態、工作原理和裝配方式就能自動展示出來,同時還配有零部件的詳細參數信息、文字說明與二維設計圖。

“千斤頂的組裝與工作原理”課件以其強大的交互功能、簡便直觀的操作方法以及實時的三維表現能力得到了廣大師生的一致贊同,也推動了三維仿真課件在教學一線的普及。
5結束語
遠程交互式三維仿真課件編輯平臺是針對教學重點、難點的培訓而開發的集三維仿真設計、實時功能渲染瀏覽和遠程網絡壓縮發布于一體的仿真系統設計開發包。
該設計平臺的成功開發將解決教育領域重點、難點課程的仿真教學課件的制作難題,完善了教育領域遠程教學平臺的建設,并節約教學培訓設備的巨大開銷。我們相信,在未來的教育領域中,遠程交互式三維仿真課件編輯平臺將為信息時代的教育發展注入新的活力。
收稿日期:2007-10
參考文獻
[1] 項慨. Java3D應用于現代遠程教育的關鍵技術[J]. 教育信息化,2006,(10).
[2] 劉少華. 虛擬仿真引擎及其在三維飛行再現中的應用[D]. 國防科技大學,2004,(12).
[3] 趙春霞,張艷,戰守義. 基于粒子系統方法的三維火焰模擬[J]. 計算機工程與應用,2004,(2).
[4] 陶唐飛,韓崇昭. 視景仿真系統光學視覺通道技術研究與實現[J]. 系統仿真學報,2004,(4).
作者簡介
申閆春(1957-),男,河南開封市人,1999年7月在中國礦業大學計算機應用專業獲博士學位,2001年12月博士后出站,從事計算機網絡與應用、流媒體技術、虛擬現實技術方面的研究。
TEL:010-8216188713341083100
E-mail:shenyc128@126.com