袁觀娜 李秋 張琰
摘 要:隨著科學(xué)技術(shù)的發(fā)展,動畫演示為主的仿真已不能滿足大型工業(yè)器械的技術(shù)交流,迫切需要大型工業(yè)器械的實時動作仿真。為了能實時模擬大型工業(yè)器械的動作過程,研究了基于OpenGL與3Dmax的虛擬現(xiàn)實動作仿真系統(tǒng)。在windows平臺上,采用目前流行的三維建模軟件3Dmax建立大型工業(yè)器械產(chǎn)品的三維模型,并為三維模型添加關(guān)節(jié)結(jié)構(gòu),克服其不能實時控制的缺點,引入可視化仿真軟件OpenGL,結(jié)合OpenGL與3Dmax,根據(jù)控制器的命令,可真實再現(xiàn)大型工業(yè)器械產(chǎn)品在控制器指揮下的動作狀態(tài)。
關(guān)鍵詞:OpenGL 關(guān)節(jié)結(jié)構(gòu) 3Dmax 動作仿真
中圖分類號:TP391.9 文獻標識碼:A 文章編號:1672-3791(2016)02(a)-0001-02
隨著科學(xué)技術(shù)的發(fā)展,大型工業(yè)在工業(yè)生產(chǎn)中占有比較重要的作用,大型工業(yè)器械的動作仿真是進行技術(shù)交流的重要組成部分,如何用簡單合理的方式來模擬大型工業(yè)器械的動作過程,值得研究和探討。隨著大型器械仿真技術(shù)的日益提高,大型器械的實時仿真已成為當今大型器械仿真技術(shù)的主要研究方向。針對我國大型器械的仿真主要以動畫演示為主,很大方面制約著大型器械的技術(shù)交流,迫切需要大型器械的實時仿真。隨著計算機技術(shù)和三維動畫技術(shù)的發(fā)展,研究能夠?qū)崟r仿真的大型器械動作仿真技術(shù)具有十分重要的意義。該文介紹了基于OpenGL與3DS MAX的大型工業(yè)器械三維仿真的方法。
1 開發(fā)平臺與仿真系統(tǒng)
OpenGL即開放性圖形庫(Open Graphic Library),它實際上是一個圖形與硬件的接口它包含了各種圖形變換、紋理映射及特殊效果處理等120多個函數(shù),可借助編程環(huán)境對各種模型進行人機交互控制。OpenGL只提供了簡單的圖形操作函數(shù),如點、線、面等最基本的圖元,建立簡單的模型來說相對容易,但是對于復(fù)雜的三維模型,必須從點、線、面開始建立,比較繁瑣。但是OpenGL可允許開發(fā)者直接使用自己的模型數(shù)據(jù),極大地節(jié)省了開發(fā)者的時間。
3DMax是目前最流行基于PC系統(tǒng)的三維動畫渲染和制作的軟件之一。它具有強大的模型構(gòu)建能力,制作的模型逼真。3Dmax最大的優(yōu)點是可以導(dǎo)出多種文件格式,文件包含建立模型的結(jié)構(gòu)位置數(shù)據(jù),方便與其它軟件進行交互。
MFC是微軟基礎(chǔ)類庫的簡稱,主要封裝了大部分的windows API函數(shù),可以利用它進行編程,編譯,調(diào)試。OpenGL必須借助于MFC編程環(huán)境才能實現(xiàn)對模型控制,通過在編程環(huán)境中調(diào)用OpenGL函數(shù)庫中的這些函數(shù)來實現(xiàn)模型圖形顯示的繪制。
三維建模與仿真系統(tǒng)如圖1所示。通過3Dmax建立三維模型,再將圖形數(shù)據(jù)導(dǎo)入VC++程序中,調(diào)用OpenGL函數(shù)讀取顯示并編程控制。此外,可以通過控制器與計算機通信,輸入動作指令,模型可實現(xiàn)在控制器的指揮下相應(yīng)的動作。三維建模與仿真系統(tǒng)如圖1所示。
2 三維建模與層次模型建立
建立正確合理的三維模型是保證動作仿真的關(guān)鍵。大型工業(yè)器械的零部件數(shù)量多,結(jié)構(gòu)復(fù)雜。動作仿真的主要目的是對動作過程的仿真演示,所以在建立三維模型的時候可忽略一些對動作仿真無關(guān)的部件,比如內(nèi)部的傳動機構(gòu)及伺服裝置等。建立大型器械幾何模型需要先將完整的模型層層細分,解構(gòu)成各個零部件,對每個零部件進行單獨的建模,再將建好的各個部分按照裝配關(guān)系組裝在一起,同時需保證各個部分之間的相對空間關(guān)系。這種建模方法最大的優(yōu)點是各個部分建模獨立,部件與部件之間不互相影響,重建或修改都很方便。
三維模型的運動包括兩種,一種是該部件的運動只和自己有關(guān),不影響其它部件的運動,另一種運動是部件的運動影響其它部件的運動或者部件的運動受到其它部件的限制或與其配合運動。對于第一種運動相對較少,可以單獨控制。大型器械中更多的是第二種運動,因此控制的時候不能對其進行單獨控制,因為部件與部件相對運動時有相對的運動關(guān)系。首先要做的是建立這種關(guān)系。可以把一個模型看作一個機構(gòu),機構(gòu)之間的相對運動可連接成運動鏈系統(tǒng)。對于機構(gòu)里的所有零件都可以看作是一個對象,建立正確的運動鏈系統(tǒng)即建立正確的運動傳遞關(guān)系,這種關(guān)系叫層次關(guān)系。在層次關(guān)系中,若部件A的運動影響部件B的運動,則把A部件定義為父對象,B對象定義為子對象。當運動的時候,對于父對象的幾何運動操作都會自動傳遞給子對象。以液壓支架的底板、立柱、推鎦為例,底板的運動會影響立柱和推鎦,底板是立柱的父對象,同時底板也是推鎦的父對象。通過建立這樣的層次關(guān)系可以實現(xiàn)復(fù)雜的三維模型的動作仿真。
3 OpenGL平臺下模型的顯示與控制
OpenGL雖然建立復(fù)雜的模型工作量大,相對復(fù)雜,但是OpenGL可以讀取三維模型的數(shù)據(jù),根據(jù)這些數(shù)據(jù)再重新恢復(fù)模型。3Dmax可輸出多種模型數(shù)據(jù)格式,不同的數(shù)據(jù)格式應(yīng)用場合不同。這里需要導(dǎo)出模型數(shù)據(jù)的定點、法向量、紋理以及相對位置數(shù)據(jù),所以選用.X文件格式。.X文件格式是3max用來存放三維模型,它可以描述三維模型的幾何數(shù)據(jù)、框架層次和動作等。調(diào)用OpenGL函數(shù)讀取.X文件即可再現(xiàn)模型。.X文件格式包含了兩個最基本的部分;用戶自定義的數(shù)據(jù)類型和層級關(guān)系。.X文件是由模板驅(qū)動的,模板定義了如何存儲一個數(shù)據(jù)對象,這樣用戶便可以自己來定義具體的格式。模板定義了3D模型的各種數(shù)據(jù)是以什么樣的格式存放的,即將3D模型的數(shù)據(jù)格式化。
若要三維模型在控制器的指揮下運動,需要編程來實現(xiàn)??刂破餍枰阎噶畎l(fā)送給計算機,這就需要串口通信。串口通訊系統(tǒng)是將控制器上的按鍵信號發(fā)送到計算機串口,計算機通過串口接收程序接收數(shù)據(jù)。實時控制和顯示需根據(jù)串口信號,調(diào)用OpenGL實時繪制并顯示模型。OpenGL有對應(yīng)的函數(shù)可以實現(xiàn)模型的平移、旋轉(zhuǎn)、放縮變換,即glTranslate()、glRotate()、glScale()。
動作的最終控制是通過編程來實現(xiàn)的。一個動作的可以分為起點位置、中間過程、終點位置來描述。起點位置是已知的,當進行一個動作之后,上個動作的終點位置即下一個動作的起點位置。終點位置即該動作結(jié)束的位置,這個可以根據(jù)動作設(shè)計的要求計算得到。起始、終點位置已知,中間過程如何控制其實是無數(shù)個起始位置的變換,動畫其實是不連續(xù)的,只是利用視覺原理給視覺造成連續(xù)變化的畫面。在這個過程中,每一幅畫面不斷的被新的畫面所取代,使觀察者產(chǎn)生連續(xù)運動的動態(tài)畫面的幻覺,畫面的本身其實是靜止的。利用這個原理,可以在起始位置的基礎(chǔ)上,將所要變換的量分成很多段,每隔一定的時間賦以一定的變化量,當分段足夠多時,就可以看見一個連續(xù)的動作。
4 結(jié)構(gòu)流程圖
圖2所示為動作仿真流程,從圖2中可以看出大型器械動作仿真的整體流程。
5 結(jié)語
詳細敘述了在windows平臺下,利用3DS Max建立三維模型并建立層次模型,采用VC++和OpenGL結(jié)合進行編程,實現(xiàn)三維仿真的原理和方法。利用OpenGL可以對圖形進行實時控制仿真,但是缺點是利用OpenGL建立復(fù)雜的三維模型較為繁瑣,工作量大。借助專門的三維建模軟件3Dmax來建立模型。三維建模軟件建立的三維模型比較真實,缺點是無法進行編程控制。結(jié)合OpenGL和3Dmax,避免了各自的缺點,能很好的實現(xiàn)大型器械的實時動作仿真。這種方法具有一定的適用性,可以實現(xiàn)逼真的三維動態(tài)實時仿真,對于大型器械技術(shù)交流的宣傳展示有著重要的意義。
參考文獻
[1] 周揚,劉永濤.基于OpenGL的事故三維綜合演示平臺[J].重慶理工大學(xué)學(xué)報,2015(4):77-80,119.
[2] 王昊旻,吳藝菲,王思昱. OpenGL下3D建模軟件快速開發(fā)可視化系統(tǒng)探討[J]. 電腦編程技巧與維護,2015(20):12-13,36.
[3] 王國法,徐亞軍,孫守山.液壓支架三維建模及其運動仿真[J].煤炭科學(xué)技術(shù),2003(1):42-45.
[4] 張俊文,董長吉.OpenGL在煤礦液壓支架四連桿機構(gòu)運動仿真中的應(yīng)用[J].礦業(yè)研究與開發(fā),2006,26(1):54-56.