長(zhǎng)春建筑學(xué)院電氣信息學(xué)院 馬 瑩
ELECTRONICS WORLD?技術(shù)交流
基于OpenGL和3DSMAX的船舶綜合電力推進(jìn)系統(tǒng)虛擬建模技術(shù)
長(zhǎng)春建筑學(xué)院電氣信息學(xué)院 馬 瑩
本文基于三維建模軟件OpenGL和3DSMAX,在個(gè)人PC機(jī)上把發(fā)電機(jī)、同步電動(dòng)機(jī)和螺旋槳作為船舶綜合電力推進(jìn)系統(tǒng)主要的三維模型進(jìn)行讀取和顯示。對(duì)于虛擬現(xiàn)實(shí)仿真,三維模型的讀取是很重要的一個(gè)部分,由于3DS是一種非常普遍的數(shù)據(jù)結(jié)構(gòu)格式,以3DS格式保存的三維圖形文件非常豐富,所以將每個(gè)模型的格式保存為3DS格式;同時(shí)本文也簡(jiǎn)要地介紹了3DS文件的組成。采用VC++6.0和OpenGL聯(lián)合編程構(gòu)建程序框架,調(diào)入3DS文件,以實(shí)現(xiàn)模型在框架中的三維顯示。從而為實(shí)現(xiàn)虛擬現(xiàn)實(shí)仿真打下堅(jiān)實(shí)的基礎(chǔ)。
OpenGL;三維建模;3DSMAX;讀??;顯示
所謂“虛擬現(xiàn)實(shí)”(VR)是人的想象力和電子學(xué)等科技相互結(jié)合而產(chǎn)生的一項(xiàng)綜合技術(shù)。通過(guò)傳感系統(tǒng)和環(huán)境相互聯(lián)系,進(jìn)而感受與實(shí)際情況類似的場(chǎng)景。這種采取計(jì)算機(jī)仿真方法的技術(shù)卻與傳統(tǒng)的模擬仿真系統(tǒng)以及繪圖系統(tǒng)存在一定的差異。它具有三個(gè)特征:自主性、交互性和沉浸感。
對(duì)于船舶綜合電力推進(jìn)系統(tǒng)猶如船舶的心臟,它的平穩(wěn)運(yùn)行對(duì)于船舶來(lái)說(shuō)至關(guān)重要;所以監(jiān)測(cè)整個(gè)電力推進(jìn)系統(tǒng)在設(shè)計(jì)之初能否安全運(yùn)行顯得十分關(guān)鍵。采用虛擬仿真對(duì)船舶裝備產(chǎn)品研發(fā)或者評(píng)估大大減少一些不必要的困難,通過(guò)這種技術(shù)可以預(yù)先確定最優(yōu)方案并進(jìn)行設(shè)計(jì),不必在試驗(yàn)后才確定是否滿足預(yù)想的要求。所以對(duì)于船舶綜合電力推進(jìn)系統(tǒng)的虛擬現(xiàn)實(shí)仿真就顯得十分必要。
虛擬現(xiàn)實(shí)仿真的基礎(chǔ)就是對(duì)三維模型的建立、讀取和顯示,沒(méi)有這些步驟,虛擬現(xiàn)實(shí)仿真就無(wú)從談起??梢哉f(shuō)三維模型的讀取和顯示是虛擬現(xiàn)實(shí)仿真的基礎(chǔ)。
1.1 OpenGL概述
OpenGL是一種應(yīng)用程序編程接口API(Application Programming Interface),可以用來(lái)創(chuàng)建實(shí)時(shí)的3D圖像。OpenGL要想發(fā)揮本身的效果必須同一些程序設(shè)計(jì)語(yǔ)言聯(lián)合在一起,其本身不是編程語(yǔ)言。具備高效的運(yùn)行速度以及高度的可移植性。微軟基本類庫(kù)MFC(Microsoft Foundation Classes)是PC機(jī)上Windows操作系統(tǒng)中經(jīng)常用到的應(yīng)用程序框架,它提供可視窗口程序的界面和基本輸入輸出功能,彌補(bǔ)了OpenGL的不足。因此OpenGL與MFC相結(jié)合開(kāi)發(fā)3D圖形軟件就成為優(yōu)勢(shì)互補(bǔ)的理想工具。
1.2 3DSMAX軟件介紹
因?yàn)?DSMAX建立的模型簡(jiǎn)單且直觀,所以船舶綜合電力推進(jìn)系統(tǒng)中的模塊通過(guò)此軟件進(jìn)行建模。但是此軟件本身也存在一定的弊端,利用OpenGL圖形庫(kù)的繪制函數(shù)構(gòu)建的模型能夠克服動(dòng)態(tài)模型控制的困難,而OpenGL在建模時(shí)需要更多的編程量,使建立的模型直觀性上比較粗糙。所以利用專業(yè)三維建模軟件3DSMAX與OpenGL程序相結(jié)合進(jìn)行控制。本文中就是采用這種方法,即先用3DS MAX三維建模軟件構(gòu)建船舶綜合電力推進(jìn)系統(tǒng)各個(gè)模塊主要部件的三維模型,保存成3DS格式,利用OpenGL編程并在VC界面下顯示,以實(shí)現(xiàn)人機(jī)交互控制。
由于OpenGL軟件本身所存在的缺陷,所以通過(guò)利用3DSMAX軟件建立船舶綜合電力推進(jìn)系統(tǒng)主要部件模型,然后將其保存為3DS格式,再將每個(gè)模型導(dǎo)人到以VC++和OpenGL聯(lián)合開(kāi)發(fā)的界面中,并以VC++和OpenGL為開(kāi)發(fā)工具進(jìn)行編程實(shí)現(xiàn)仿真。
OpenGL實(shí)現(xiàn)虛擬圖像可以后臺(tái)緩存中執(zhí)行繪制指令,又可在前臺(tái)緩存中顯示圖像,即雙緩存功能來(lái)實(shí)現(xiàn)圖形的變化,以達(dá)到理想的動(dòng)畫(huà)畫(huà)面。
2.1 模型的建立與轉(zhuǎn)換
利用3DSMAX創(chuàng)建船舶綜合電力推進(jìn)系統(tǒng)主要部件模型,主要是通過(guò)多邊形的擠出和倒角等功能完成建模。應(yīng)用3DSMAX軟件搭建出的文件會(huì)被系統(tǒng)默認(rèn)為*.max,要想能夠在之后的設(shè)計(jì)中對(duì)模型文件的導(dǎo)入和導(dǎo)出,要把模型文件改為*.3ds格式。為了減少OpenGL對(duì)復(fù)雜模型的建模時(shí)間,要把3DS文件直接導(dǎo)入到OpenGL場(chǎng)景中。
2.2 三維模型的讀入
將3DSMAX繪制成的三維模型.max格式轉(zhuǎn)換成3DS格式,3DS格式文件的讀入大致可以分為兩個(gè)大部分:文件內(nèi)容的讀入和3D對(duì)象的繪制。
首先定義一系列的結(jié)構(gòu),如對(duì)象的材質(zhì)、位置矢量、關(guān)鍵幀等,同時(shí)定義了兩個(gè)類CTriObject和CTriList,CTriObject主要用于處理3DS文件中的各種對(duì)象,而CTriList主要用于處理對(duì)象序列。定義了一個(gè)3DS文件的讀入類C3dsReader,主要將3DS文件中的內(nèi)容讀入到對(duì)象中。然后通過(guò)CTriObject對(duì)圖形進(jìn)行繪制。
經(jīng)過(guò)以上的步驟進(jìn)行,讀入本文主要考慮的發(fā)電機(jī)、同步電動(dòng)機(jī)、螺旋槳組成的小型系統(tǒng),并顯示如圖1所示。
圖1 顯示在框架中的三維模型
虛擬現(xiàn)實(shí)仿真在船舶綜合電力推進(jìn)系統(tǒng)中的應(yīng)用不同于以往,改變了從前只能用二維圖形表示的歷史。虛擬現(xiàn)實(shí)場(chǎng)景一般有兩種方法可以生成,第一通過(guò)基本代碼編程開(kāi)發(fā)的方法直接生成,但工作量較大,不適用于對(duì)復(fù)雜模型的建立。第二通過(guò)目前已有的三維軟件來(lái)生成,但在操作控制上具有一定的局限性。OpenGL在Visual C++下能夠?qū)μ摂M現(xiàn)實(shí)場(chǎng)景進(jìn)行交互式控制,對(duì)于復(fù)雜模型建立使用3DS Max,然后在Visual C++和 OpenGL聯(lián)合編程的框架中讀取模型文件并使用顯示該模型,這樣就同時(shí)利用了兩種方法的優(yōu)點(diǎn)。本文介紹了用三維建模軟件3DS Max建立模型,利用在Visual C++和OpenGL聯(lián)合編程的框架讀取和顯示三維模型的方法,為以后虛擬現(xiàn)實(shí)仿真能順利的進(jìn)行打下良好的基礎(chǔ)。
[1]OpenGL體系結(jié)構(gòu)審核委員會(huì)著.鄧鄭祥譯.OpenGL編程指南(第四版)[M].北京:人民郵電出版社,2005.
[2]Samuel R.Buss著,唐龍等譯.3D計(jì)算機(jī)圖形學(xué)(OpenGL版)[M].北京:清華大學(xué)出版社,2006.
[3]安杰爾.OpenGL程序設(shè)計(jì)指南[M].北京:清華大學(xué)出版社,2005.
[4]和平鴿工作室.OpenGL高級(jí)編程與可視化系統(tǒng)開(kāi)發(fā)高級(jí)編程篇(第二版)[M].北京:中國(guó)水利水電出版社,2006.
[5]孫鑫.Visual C++6.0深入詳解[M].北京:電子工業(yè)出版社,2006.
[6]姚家奕,段強(qiáng),劉嘉偉,等.3dsmax2010中文版基礎(chǔ)與實(shí)例教程[M].北京:機(jī)械工業(yè)出版社,2011.
[7]張勇毅.3DSMAX9中文版課程設(shè)計(jì)案例精編[M].北京:中國(guó)水利水電出版社,2009.
項(xiàng)目來(lái)源:中央高?;究蒲袠I(yè)務(wù)費(fèi)專項(xiàng)資金資助(HEUCFT1005)。
馬瑩(1988—),女,吉林長(zhǎng)春人,碩士,助教,工作于長(zhǎng)春建筑學(xué)院,研究方向:電氣控制。