長春建筑學院電氣信息學院 馬 瑩
ELECTRONICS WORLD?技術交流
基于OpenGL和3DSMAX的船舶綜合電力推進系統虛擬建模技術
長春建筑學院電氣信息學院 馬 瑩
本文基于三維建模軟件OpenGL和3DSMAX,在個人PC機上把發電機、同步電動機和螺旋槳作為船舶綜合電力推進系統主要的三維模型進行讀取和顯示。對于虛擬現實仿真,三維模型的讀取是很重要的一個部分,由于3DS是一種非常普遍的數據結構格式,以3DS格式保存的三維圖形文件非常豐富,所以將每個模型的格式保存為3DS格式;同時本文也簡要地介紹了3DS文件的組成。采用VC++6.0和OpenGL聯合編程構建程序框架,調入3DS文件,以實現模型在框架中的三維顯示。從而為實現虛擬現實仿真打下堅實的基礎。
OpenGL;三維建模;3DSMAX;讀取;顯示
所謂“虛擬現實”(VR)是人的想象力和電子學等科技相互結合而產生的一項綜合技術。通過傳感系統和環境相互聯系,進而感受與實際情況類似的場景。這種采取計算機仿真方法的技術卻與傳統的模擬仿真系統以及繪圖系統存在一定的差異。它具有三個特征:自主性、交互性和沉浸感。
對于船舶綜合電力推進系統猶如船舶的心臟,它的平穩運行對于船舶來說至關重要;所以監測整個電力推進系統在設計之初能否安全運行顯得十分關鍵。采用虛擬仿真對船舶裝備產品研發或者評估大大減少一些不必要的困難,通過這種技術可以預先確定最優方案并進行設計,不必在試驗后才確定是否滿足預想的要求。所以對于船舶綜合電力推進系統的虛擬現實仿真就顯得十分必要。
虛擬現實仿真的基礎就是對三維模型的建立、讀取和顯示,沒有這些步驟,虛擬現實仿真就無從談起。可以說三維模型的讀取和顯示是虛擬現實仿真的基礎。
1.1 OpenGL概述
OpenGL是一種應用程序編程接口API(Application Programming Interface),可以用來創建實時的3D圖像。OpenGL要想發揮本身的效果必須同一些程序設計語言聯合在一起,其本身不是編程語言。具備高效的運行速度以及高度的可移植性。微軟基本類庫MFC(Microsoft Foundation Classes)是PC機上Windows操作系統中經常用到的應用程序框架,它提供可視窗口程序的界面和基本輸入輸出功能,彌補了OpenGL的不足。因此OpenGL與MFC相結合開發3D圖形軟件就成為優勢互補的理想工具。
1.2 3DSMAX軟件介紹
因為3DSMAX建立的模型簡單且直觀,所以船舶綜合電力推進系統中的模塊通過此軟件進行建模。但是此軟件本身也存在一定的弊端,利用OpenGL圖形庫的繪制函數構建的模型能夠克服動態模型控制的困難,而OpenGL在建模時需要更多的編程量,使建立的模型直觀性上比較粗糙。所以利用專業三維建模軟件3DSMAX與OpenGL程序相結合進行控制。本文中就是采用這種方法,即先用3DS MAX三維建模軟件構建船舶綜合電力推進系統各個模塊主要部件的三維模型,保存成3DS格式,利用OpenGL編程并在VC界面下顯示,以實現人機交互控制。
由于OpenGL軟件本身所存在的缺陷,所以通過利用3DSMAX軟件建立船舶綜合電力推進系統主要部件模型,然后將其保存為3DS格式,再將每個模型導人到以VC++和OpenGL聯合開發的界面中,并以VC++和OpenGL為開發工具進行編程實現仿真。
OpenGL實現虛擬圖像可以后臺緩存中執行繪制指令,又可在前臺緩存中顯示圖像,即雙緩存功能來實現圖形的變化,以達到理想的動畫畫面。
2.1 模型的建立與轉換
利用3DSMAX創建船舶綜合電力推進系統主要部件模型,主要是通過多邊形的擠出和倒角等功能完成建模。應用3DSMAX軟件搭建出的文件會被系統默認為*.max,要想能夠在之后的設計中對模型文件的導入和導出,要把模型文件改為*.3ds格式。為了減少OpenGL對復雜模型的建模時間,要把3DS文件直接導入到OpenGL場景中。
2.2 三維模型的讀入
將3DSMAX繪制成的三維模型.max格式轉換成3DS格式,3DS格式文件的讀入大致可以分為兩個大部分:文件內容的讀入和3D對象的繪制。
首先定義一系列的結構,如對象的材質、位置矢量、關鍵幀等,同時定義了兩個類CTriObject和CTriList,CTriObject主要用于處理3DS文件中的各種對象,而CTriList主要用于處理對象序列。定義了一個3DS文件的讀入類C3dsReader,主要將3DS文件中的內容讀入到對象中。然后通過CTriObject對圖形進行繪制。
經過以上的步驟進行,讀入本文主要考慮的發電機、同步電動機、螺旋槳組成的小型系統,并顯示如圖1所示。

圖1 顯示在框架中的三維模型
虛擬現實仿真在船舶綜合電力推進系統中的應用不同于以往,改變了從前只能用二維圖形表示的歷史。虛擬現實場景一般有兩種方法可以生成,第一通過基本代碼編程開發的方法直接生成,但工作量較大,不適用于對復雜模型的建立。第二通過目前已有的三維軟件來生成,但在操作控制上具有一定的局限性。OpenGL在Visual C++下能夠對虛擬現實場景進行交互式控制,對于復雜模型建立使用3DS Max,然后在Visual C++和 OpenGL聯合編程的框架中讀取模型文件并使用顯示該模型,這樣就同時利用了兩種方法的優點。本文介紹了用三維建模軟件3DS Max建立模型,利用在Visual C++和OpenGL聯合編程的框架讀取和顯示三維模型的方法,為以后虛擬現實仿真能順利的進行打下良好的基礎。
[1]OpenGL體系結構審核委員會著.鄧鄭祥譯.OpenGL編程指南(第四版)[M].北京:人民郵電出版社,2005.
[2]Samuel R.Buss著,唐龍等譯.3D計算機圖形學(OpenGL版)[M].北京:清華大學出版社,2006.
[3]安杰爾.OpenGL程序設計指南[M].北京:清華大學出版社,2005.
[4]和平鴿工作室.OpenGL高級編程與可視化系統開發高級編程篇(第二版)[M].北京:中國水利水電出版社,2006.
[5]孫鑫.Visual C++6.0深入詳解[M].北京:電子工業出版社,2006.
[6]姚家奕,段強,劉嘉偉,等.3dsmax2010中文版基礎與實例教程[M].北京:機械工業出版社,2011.
[7]張勇毅.3DSMAX9中文版課程設計案例精編[M].北京:中國水利水電出版社,2009.
項目來源:中央高校基本科研業務費專項資金資助(HEUCFT1005)。
馬瑩(1988—),女,吉林長春人,碩士,助教,工作于長春建筑學院,研究方向:電氣控制。