許向彥,羅國偉,王立凱
(1.中國飛機強度研究所,陜西 西安 710065;2.廣東亞太新材料科技有限公司,廣東 肇慶 526000)
HAJIF是中國飛機強度研究所研發(fā)的一款大型有限元分析軟件,其功能全面,具備靜力、屈曲、模態(tài)等通用分析求解能力,在諸多航空產(chǎn)品結構分析中獲得應用。當前,隨著軍民融合的不斷深入,以及工業(yè)CAE軟件自主化的緊迫需求,HAJIF軟件所服務的行業(yè)也從航空航天領域拓展到軌道交通、汽車等領域。
汽車工業(yè)中,汽車零部件是構成汽車主機的基礎,精確無誤的汽車零部件有限元模型是得到整車正確分析結果的基本保證?;贖AJIF平臺建立的汽車部件模型庫,作為零部件模型與分析軟件之間的連接紐帶,可以集成前人優(yōu)秀的建模經(jīng)驗及技巧,同時,鑒于HAJIF結構分析軟件的國產(chǎn)自主化,可以有效保證該模型庫的延續(xù)性,方便后續(xù)修改與改進。
本文以HAJIF平臺為依托,基于XML與OpenGL技術實現(xiàn)了汽車零部件模型庫的搭建。該模型庫可以同時存儲STL幾何模型與BDF、HJF等有限元模型,支持將其無縫加載至HAJIF系統(tǒng)中進行顯示與分析,具有一定的工程實用價值。
XML(Extensible Markup Language)是一種類似于HTML的標記語言,但是XML沒有使用預定義的標記。因此,XML允許根據(jù)自己的設計需要定義專屬的標記。這是一種十分有用的可存儲、可搜索和可共享的格式存儲數(shù)據(jù)的方法。更重要的是,因為XML的基本格式是標準化的,所以如果跨系統(tǒng)或平臺共享或傳輸XML,無論是在本地還是在互聯(lián)網(wǎng)上,接收方仍然可以根據(jù)標準化的XML語言解析數(shù)據(jù)。
XML文件的讀取技術有3種:分別是QXmlStreamReader、DOM和SAX??紤]到所建立的汽車部件模型庫需要具備模型動態(tài)添加與刪除的功能,同時綜合上述3種XML文件讀取技術的各自特點,本文最終選用DOM技術進行XML文件的讀取與處理。
DOM將XML文檔描述為一棵樹結構,Tree數(shù)據(jù)結構的每個節(jié)點表現(xiàn)為一個XML標記或者XML標記內(nèi)的文本項。樹形結構精確地描述了XML文檔中標記間以及文本項間的相互關聯(lián)性。下述XML文檔為系統(tǒng)中存儲汽車部件模型的部分信息,包含部件名稱及部件信息:
其所對應的DOM樹如圖1所示。
圖1 XML文檔對應DOM樹
由于利用DOM技術可以將XML文檔轉換為樹形數(shù)據(jù)結構,所以通過完成樹形結構的遞歸遍歷即可完成XML文檔的完整讀取。反之,將用戶在模型庫中所做的修改保存至XML文檔中即可完成零部件模型信息的修改。
OpenGL是一項成熟的圖形化顯示技術。在OpenGL中,所有模型都處于3D空間中,而屏幕和窗口只能以2D像素數(shù)組輸出,所以,OpenGL的大部分工作是把3D坐標轉變?yōu)槠聊贿m應的2D像素。3D坐標轉變?yōu)?D坐標的處理過程是由OpenGL的圖形渲染管線管理。本文通過在OpenGL固定渲染管線中加入自定義可編程著色器,完成STL幾何模型的圖形化顯示。
OpenGL的固定渲染管線一般包含以下幾個步驟:(1)頂點變換。頂點變換作為渲染管線中的首個處理模塊,所包含的信息非常多,模型的各項操作都在此模塊中完成。(2)圖元裝配。圖元裝配階段將頂點變換模塊輸出的所有頂點作為輸入,并將所有的點裝配成指定圖元的形狀輸出。(3)幾何裝配。幾何裝配模塊會把圖元裝配階段的輸出數(shù)據(jù)當作其輸入,可以通過產(chǎn)生新的頂點構造新的圖元來生成其他形狀。幾何裝配階段的輸出既可以輸出至紋理裝配模塊使圖形更為逼真,也可以直接發(fā)送至光柵化階段。(4)紋理裝配。紋理裝配的作用在于其可以通過添加模型細節(jié)使得模型或場景更為逼真。(5)光柵化。光柵化階段會把圖元映射為屏幕或窗口中相應的像素,生成供片段著色階段使用的片段。(6)片段操作。片段著色階段的主要目的是計算一個像素的最終表現(xiàn)形式。在該階段中,利用著色器編程語言編寫相應腳本可以自定義設置模型輸出顏色及光照效果。
在固定渲染管線的基礎上,本文利用圖形著色語言編寫頂點著色器與片段著色器,完成模型的控制與自定義顯示。頂點著色器與片段著色器的代碼片段如下所示:
(1)頂點著色器
#version 120
attribute vec3 vertex_position;
uniform mat4 transform_matrix;
uniform mat4 view_matrix;
varying vec3 ec_pos;
void main() {
gl_Position = view_matrix*transform_matrix*vec4(vertex_position, 1.0);
ec_pos = gl_Position.xyz;
}
(2)片段著色器
#version 120
uniform float zoom;
varying vec3 ec_pos;
void main() {
vec3 base3 = vec3(0.99, 0.96, 0.89);
vec3 base2 = vec3(0.92, 0.91, 0.83);
vec3 base00 = vec3(0.40, 0.48, 0.51);
vec3 ec_normal = normalize(cross(dFdx(ec_pos), dFdy(ec_pos)));
ec_normal.z *= zoom;
ec_normal = normalize(ec_normal);
float a = dot(ec_normal, vec3(0.0, 0.0, 1.0));
float b = dot(ec_normal, vec3(-0.57, -0.57, 0.57));
gl_FragColor = vec4((a*base2 + (1-a)*base00)*0.5 +(b*base3 + (1-b)*base00)*0.5, 1.0);
}
本系統(tǒng)依照XML文件完成系統(tǒng)初始化配置,同時對外開放3種類型的接口,分別是模型增加刪除的修改接口、模型信息的顯示接口,以及模型與HAJIF系統(tǒng)或幾何模型圖形化顯示模塊的交互接口。系統(tǒng)框架設計圖如圖2所示。
圖2 系統(tǒng)框架設計圖
對于模型增加與刪除接口,用戶完成模型修改后,通過將相關信息寫入XML配置文件中完成模型信息的保存與更新。以XML數(shù)據(jù)為基礎的系統(tǒng)搭建完成了數(shù)據(jù)與系統(tǒng)的分離,使模型數(shù)據(jù)的分享更為便捷。用戶可以導出模型相關文件與配置文件,進而分享給其他人。與此同時,用戶也可以直接導入從別處獲得的模型庫,快速實現(xiàn)相互共享。
對于模型顯示接口,系統(tǒng)提供統(tǒng)一的數(shù)據(jù)結構,模型具備以下屬性:(1)模型名稱;(2)模型文件;(3)模型描述信息;(4)模型圖片;(5)模型附加文件。這5項屬性可以較為完整地描述一個模型的相關信息。
本系統(tǒng)同時支持汽車零部件的有限元模型與幾何模型的存儲,有限元模型的存儲意義在于其可以固化前人的有限元建模經(jīng)驗,而幾何模型的存儲則可以固化前人的設計經(jīng)驗,經(jīng)典的設計結構對后續(xù)設計人員的工作具有重要的指導作用。
在計算機圖形應用系統(tǒng)中,STL文件是一種描述三角形網(wǎng)格的標準格式,其具有ASCII碼格式與二進制兩種格式。主流的CAD系統(tǒng)均可輸出STL格式的幾何模型,鑒于此,本系統(tǒng)同時提供STL幾何模型的圖形化顯示接口。
幾何模型圖形化模塊的設計邏輯如圖3所示。當STL幾何模型從汽車部件模型庫中導入進來時,通過STL模型解析器首先判斷STL幾何模型文件格式,對于ASCII格式與二進制格式分別處理解析得到模型頂點與面法線相關信息,將所有信息傳入可編程渲染管線中進行渲染,同時通過設計模型交互模塊獲取用戶的操作信息(旋轉,平移,放大縮小),繼而在幾何模型中反饋顯示。
圖3 幾何模型顯示模塊邏輯設計圖
本系統(tǒng)基于Visual Studio 2010,采用面向對象思想,依托HAJIF系統(tǒng)搭建完成,主要涉及到的Qt庫有QtGui庫、QtOpenGL庫、QGLShaderProgram庫、QDomDocument庫及QTreeWidget庫。幾何模型顯示模塊的界面設計如圖4所示。
圖4 幾何模型顯示模塊界面
幾何模型顯示模塊支持用戶與模型的交互,用戶可以通過鼠標操作實現(xiàn)模型的旋轉、縮放及平移。圖5是測試模型經(jīng)過一定程度的縮放、平移與旋轉后的模型顯示圖。
圖5 模型交互顯示圖
幾何模型顯示模塊作為其中一個功能點,可以滿足用戶的基本需求。相對于幾何模型顯示功能,有限元模型的有效管理以及與HAJIF系統(tǒng)的無縫連接會發(fā)揮更為重要的作用。
圖6描述了某汽車左前門防撞梁的模型信息,通過加載接口,可以將該模型直接導入HAJIF系統(tǒng)中,通過HAJIF系統(tǒng)可直接提交該模型的求解計算,計算結果如圖7所示。完整的模型信息展示以及與HAJIF系統(tǒng)的無縫連接大大提高了分析人員的工作效率。
圖6 左前門防撞梁導入HAJIF系統(tǒng)圖
圖7 左前門防撞梁計算結果圖
本文以HAJIF平臺為依托,基于XML與OpenGL技術完成了汽車部件模型庫的搭建,可以同時集成包含大量建模經(jīng)驗的有限元模型數(shù)據(jù)與包含設計經(jīng)驗的幾何模型數(shù)據(jù),大大提高了有限元分析人員的分析效率。自定義的XML配置與HAJIF分析軟件的國產(chǎn)自主化保證了該系統(tǒng)的可拓展性與可延續(xù)性,具有一定的工程實用價值。