一種基于stl模型布爾運算的飛機油箱內(nèi)表面模型提取方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機圖形學(xué)領(lǐng)域,涉及在飛機燃油測量系統(tǒng)設(shè)計環(huán)節(jié),利用STL模型代替原有CATIA模型實現(xiàn)飛機油箱內(nèi)表面的提取,尤其涉及一種基于STL模型布爾運算的飛機油箱內(nèi)表面模型提取方法。
【背景技術(shù)】
[0002]目前國內(nèi)在飛機油箱內(nèi)表面模型的構(gòu)造方面的研究均是基于對CATIA三維軟件的二次開發(fā),一般方法是構(gòu)建一個略大于油箱模型的最小包圍盒實體,利用CATIA的布爾減功能,使用包圍盒減去原油箱,將得到內(nèi)表面模型及原本在油箱模型外部,及在最小包圍盒內(nèi)部的散碎體。在布爾減過程中,如果模型過于復(fù)雜,將大大降低CATIA的運行速度,甚至造成CATIA報錯并退出;隨著CATIA版本的升級,必須對二次開發(fā)程序進行相應(yīng)的修改,因此系統(tǒng)通用性差。中泫鑄造工程技術(shù)研究中心使用過一種基于面片模型的內(nèi)表面模型提取方法,其主要思想是:首先將油箱的CATIA體模型轉(zhuǎn)化以面片為基礎(chǔ)的面模型,如STEP格式或者STL格式,通過定義處于油箱內(nèi)部的一點,使其從各個方向向外投射“射線”或“曲線”,如果某一平面被所有“射線”均穿透奇數(shù)次,則其為內(nèi)表面,若有某平面被偶數(shù)次穿透,則其為外表面,可以予以刪除。這種方法的缺點是:由于“射線”、“曲線”在空間中定義十分復(fù)雜,而油箱模型面片量較大,導(dǎo)致此方法的時間復(fù)雜度較高,對計算機要求嚴(yán)格,因此這種方法的使用范圍較小,僅適用于結(jié)構(gòu)簡單的油箱模型。
【發(fā)明內(nèi)容】
[0003]針對現(xiàn)有飛機油箱內(nèi)表面模型提取時所存在的不足,本發(fā)明的目的在于提供一種基于STL模型布爾運算的飛機油箱內(nèi)表面模型提取方法,能夠高效、穩(wěn)定的實現(xiàn)油箱內(nèi)表面模型提取。
[0004]為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
[0005]在CATIA軟件中將飛機油箱模型的CATIA數(shù)據(jù)文件導(dǎo)出為STL格式文件;建立該模型三角面片的點面索引;計算該模型中所有頂點的最大坐標(biāo)和最小坐標(biāo),構(gòu)建該模型的矩形最小包圍盒;令該矩形最小包圍盒為模型A,飛機油箱模型為模型B,使用三維模型布爾減方法得到模型C,C = A-B ;判斷模型C屬于模型A內(nèi)部的面片,通過人機交互從模型C中刪除不屬于模型A內(nèi)部的冗余面片;將模型C中剩余的面片的法矢反向,飛機油箱內(nèi)表面模型提取完畢。
[0006]所述的三維模型布爾減方法包括以下步驟:
[0007]I)以模型A和模型B整體為基準(zhǔn),確定空間總范圍,并以此空間總范圍為基準(zhǔn)進行含符號八叉樹劃分;
[0008]2)對含符號八叉樹的每一個根節(jié)點進行遍歷,對每個三角面片進行判斷,取出其中來自模型A和模型B的三角面片;在同一個根節(jié)點內(nèi),由屬于模型B的三角面片對屬于模型A的三角面片進行相交測試,計算出相交點,并重構(gòu)三角面片;同時由屬于模型A的三角面片對屬于模型B的三角面片進行相交測試,計算出相交點,并重構(gòu)三角面片;
[0009]3)根據(jù)三角面片法矢判斷三角形內(nèi)外關(guān)系:再次對含符號八叉樹的每一個根節(jié)點進行遍歷,根據(jù)每個根節(jié)點中模型A內(nèi)三角面片的法矢判斷模型B中三角面片是否在模型A之內(nèi);
[0010]4)選擇所有在模型A內(nèi)且模型B之外的三角面片,且刪除其它三角面片。
[0011]所述的含符號八叉樹劃分包括以下步驟:
[0012]1.1)以模型A和模型B所組成的整體最小包圍盒為初始空間,以整體最小包圍盒各邊中點為限劃分初始空間為相等的八個子空間;
[0013]1.2)將每個子空間按照步驟1.1)的方法再次劃分為相等的八個子空間,同時,每劃分一次,定義空間深度加一;
[0014]1.3)劃分的結(jié)束判斷標(biāo)志為:當(dāng)空間深度達到設(shè)定值,或者劃分后的某個子空間內(nèi)含有來自模型A或模型B的三角面片數(shù)量達到設(shè)定值。
[0015]所述的相交測試及重構(gòu)三角面片具體包括以下步驟:
[0016]2.1)以Ta為被切割三角形,T A切割三角形,分別使用三角形T ^三邊,對三角形Ta所在平面進行相交計算,并計算交點是否在三角形T ;三角形T Α為屬于模型A的三角面片,三角形Tb為屬于模型B的三角面片;
[0017]2.2)對于在三角形Ta內(nèi)和在三角形Ta邊上的交點,記錄該交點,用作重構(gòu)三角形,對于在三角形!\外的交點,忽略并認為不相交;
[0018]2.3)以Ta作為被切割三角形所記錄的交點為基準(zhǔn),根據(jù)交點數(shù)量及位置關(guān)系情況枚舉,確定!\被劃分的形狀,生成新三角形,同時記錄T Α為被劃分狀態(tài);
[0019]2.4)以1\為切割三角形,T 被切割三角形,再次按照步驟2.1)?2.3)執(zhí)行。
[0020]所述步驟2)中對含符號八叉樹的根節(jié)點的遍歷流程為:
[0021]循環(huán)1:對含符號八叉樹的根節(jié)點進行深度優(yōu)先遍歷;
[0022]循環(huán)2:在循環(huán)I中,對根節(jié)點中來自模型A的三角形Ta進行順序遍歷;
[0023]循環(huán)3:在循環(huán)2中,對根節(jié)點中來自模型B的三角形Tb進行順序遍歷;
[0024]在循環(huán)3中,對循環(huán)2中所遍歷到的三角形Ta和循環(huán)3中所遍歷到的三角形1^進行相交測試及三角面片重構(gòu),如!\被標(biāo)記為被劃分狀態(tài),則從循環(huán)2中剔除T Α,并開始循環(huán)2的下一次循環(huán),并對循環(huán)3置零;
[0025]如1被標(biāo)記為被劃分狀態(tài),則從循環(huán)3中剔除T Β,并開始循環(huán)2的下一次循環(huán);
[0026]如IkR T Β均被標(biāo)記為被劃分狀態(tài),則開始循環(huán)3的下一次循環(huán);
[0027]如循環(huán)3已遍歷完成,則將循環(huán)2前移一個單位;
[0028]如循環(huán)2已遍歷完成,則將循環(huán)I前移一個單位;
[0029]如循環(huán)I已遍歷完成,則遍歷結(jié)束。
[0030]所述的根據(jù)三角形法矢判斷三角形內(nèi)外關(guān)系具體包括以下步驟:
[0031]當(dāng)三角形1被切割時,所生成的新三角形在三角形IV法矢一側(cè)的,均標(biāo)記為正;所生成的新三角形與三角形V法矢方向相反的,均標(biāo)記為負;當(dāng)三角形1\被切割時,所生成的新三角形在三角形IV法矢一側(cè)的,均標(biāo)記為正;所生成的新三角形與三角形T ^法矢方向相反的,均標(biāo)記為負;對于模型A中的所有新三角形,將標(biāo)記為正的三角形認定為其在模型B外部,將標(biāo)記為負的三角形認定為其在模型B的內(nèi)部;對于模型B中的所有新三角形,將標(biāo)記為正的三角形認定為其在模型A外部,將標(biāo)記為負的三角形認定為其在模型A的內(nèi)部。
[0032]所述將模型C中剩余的面片的法矢反向具體包括以下步驟:保留模型A中標(biāo)記為正的所有三角形和模型B中標(biāo)記為負的所有三角形;并將模型B中所有標(biāo)記為負的三角形法矢反向。
[0033]本發(fā)明通過對初始CAD模型進行格式轉(zhuǎn)換,生成STL格式文件;對STL格式文件進行拓撲優(yōu)化,生成點線面索引信息及相鄰點線面信息;以油箱理論外形面所形成的包圍體A和真實油箱模型B之間進行布爾減操作,對三角面片相交方式分類,相交之后對網(wǎng)格進行再劃分;最后將兩模型的所有面片按照布爾減的邏輯關(guān)系進行篩選,重組為新模型并剔除其余面片,實現(xiàn)內(nèi)表面模型的提取。本發(fā)明從復(fù)雜飛機油箱的CAD模型提取出內(nèi)表面模型,具有魯棒性和時效性,計算復(fù)雜度顯著降低,極大的領(lǐng)先于同類已有方法。
[0034]本發(fā)明由CAD軟件所導(dǎo)出的飛機油箱模型STL格式文件出發(fā),對離散點的幾何信息進行索引重建,建立其拓撲信息;將油箱提取工作簡化為模型間的布爾減運算:以油箱模型的最小包圍盒所含實體為模型A,以初始油箱模型為模型B,執(zhí)行布爾減操作;對此布爾減操作移植在八叉樹結(jié)構(gòu)中進行,使得其算法效率得到有效提升,同時保留了魯棒性和時效性,極大的領(lǐng)先于同類已有算法。
[0035]本發(fā)明具有以下優(yōu)點:
[0036](I)使用STL模型替代傳統(tǒng)Catia模型進行布爾運算,提高了計算效率和穩(wěn)定性;
[0037](2)引入八叉樹為STL模型三角形相交測試效率提供了顯著優(yōu)化;
[0038](3)使用八叉樹節(jié)點中保存面片符號,為布爾運算中的三角形選取提供了有利保障。
【附圖說明】
[0039]圖1為使用八叉樹劃分某兩個參與布爾運算的模型,圖1中a至e分別為劃分深度從2至6 ;
[0040]圖2a?圖2f為三角形相交劃分的情況;
[0041]圖3a表示P2AB的外接圓覆蓋了 Pl (因此不得連接P2AB);
[0042]圖3b表示PlAB的外接圓未覆蓋P2 (因此可以連接P1AB);
[0043]圖3c表示PlCB的外接圓未覆蓋P2 (因此可以連接P1CB);
[0044]圖3d表示P2CB的外接圓未覆蓋Pl (因此可以連接P2CB);
[0045]圖3e表示按照此方法類推,得到三