三維模型的邊界面網(wǎng)格單元的處理方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種三維模型的邊界面網(wǎng)格單元的處 理方法和裝置。
【背景技術(shù)】
[0002] ACIS是目前廣泛使用的幾何驅(qū)動(dòng)引擎和圖形系統(tǒng)開(kāi)發(fā)平臺(tái),現(xiàn)有很多大型商業(yè)軟 件,如AutoCAD、Solidwork、Rhio等均采用了ACIS作為圖形開(kāi)發(fā)的內(nèi)核。由于現(xiàn)在CAD/CAE 集成一體化技術(shù)不斷發(fā)展,在同一平臺(tái)內(nèi)部進(jìn)行幾何建模和仿真分析成為越來(lái)越多人研宄 的方向。ACIS本身具有三維網(wǎng)格單元?jiǎng)澐止δ?,適用于邊界元法、無(wú)網(wǎng)格法等分析計(jì)算的數(shù) 據(jù)源。但對(duì)于造型復(fù)雜,曲面特征較多的模塊,ACIS的劃分方法容易產(chǎn)生較多的尖銳單元、 密集邊分布等質(zhì)量較差情況,較大程度上會(huì)影響數(shù)值分析計(jì)算結(jié)果精度。
[0003] 近年來(lái),隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,CAD/CAE功能得到不斷完善,但二者之間的 融合技術(shù)依然未有重大突破。一直以來(lái),很多學(xué)者致力于研宄CAD/CAE-體化建模,在CAE 中集成部分CAD建模功能。但由于數(shù)值分析的前處理及計(jì)算效率問(wèn)題,這種集成并沒(méi)有真 正實(shí)現(xiàn)建模和分析的同步。傳統(tǒng)的有限元法分析中,前處理占據(jù)整個(gè)有限元處理時(shí)間的 40%?45%,其中,網(wǎng)格剖分消耗了大部分時(shí)間。同時(shí),準(zhǔn)確數(shù)值計(jì)算通常通過(guò)犧牲計(jì)算時(shí) 間來(lái)獲得好的結(jié)果,而高質(zhì)量的網(wǎng)格單元能起到較大的幫助作用。因此,提高網(wǎng)格剖分效率 及質(zhì)量以及加速數(shù)值計(jì)算是解決CAD和CAE融合難題的關(guān)鍵。
[0004] 針對(duì)不同的環(huán)境和要求,近年來(lái)出現(xiàn)了多種網(wǎng)格剖分算法。主流的算法包含有映 射法、拓?fù)浞纸夥?、波前法,柵格法等。但沒(méi)有任何算法只通過(guò)一次剖分就可以能得到高質(zhì) 量的網(wǎng)格單元。
[0005] 目前,優(yōu)化網(wǎng)格質(zhì)量的方法分為兩種類型:1) 一類是通過(guò)插入、刪除節(jié)點(diǎn)或局部 節(jié)點(diǎn)重置改變網(wǎng)格的拓?fù)浣Y(jié)構(gòu);2)另一類是在不改變拓?fù)湫畔⑶疤嵯?,通過(guò)計(jì)算所有節(jié)點(diǎn) 最優(yōu)位置,糾正形狀不規(guī)整單元,使之達(dá)到理想的形狀提升網(wǎng)格質(zhì)量。實(shí)際應(yīng)用中,使用較 多的是第一種類型算法。此類方法大都針對(duì)于局部規(guī)劃、尺寸調(diào)整、單元面積優(yōu)化等要求。 雖然此類優(yōu)化算法但在處理大規(guī)模的數(shù)據(jù)時(shí),能節(jié)約大量的計(jì)算時(shí)間,但算法本身可靠性 較差,優(yōu)化結(jié)果波動(dòng)較大。最早出現(xiàn)且使用最廣泛的此類算法是Laplace算法,主要是將節(jié) 點(diǎn)調(diào)整到與之鄰接的所有節(jié)點(diǎn)中間位置。后來(lái)出現(xiàn)了評(píng)價(jià)函數(shù)最優(yōu)法等算法。上述方法執(zhí) 行需要消耗大量時(shí)間,效率較低。
[0006] 針對(duì)現(xiàn)有技術(shù)中得到高質(zhì)量的三維模型中網(wǎng)格的方法耗時(shí)長(zhǎng)、效率低的問(wèn)題,目 前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的主要目的在于提供一種三維模型的邊界面網(wǎng)格單元的處理方法和裝置, 以解決得到高質(zhì)量的三維模型中網(wǎng)格的方法耗時(shí)長(zhǎng)、效率低的問(wèn)題。
[0008] 為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種三維模型的邊界 面網(wǎng)格單元的處理方法。
[0009] 根據(jù)本發(fā)明的方法包括:查找邊界網(wǎng)格單元數(shù)據(jù)中的密集邊,并基于密集邊確定 第一密集面;對(duì)第一密集面的網(wǎng)格數(shù)據(jù)進(jìn)行密集邊處理,得到第二密集面;判斷第二密集 面上的為尖銳單元的第一單元是否具有與其鄰接的為尖銳單元的第二單元,其中,尖銳單 元為至少有一個(gè)內(nèi)角的角度小于預(yù)設(shè)角度值的三角形單元;若第二密集面上的為尖銳單元 的第一單元不具有與其鄰接的為尖銳單元的第二單元,按照第一單元的類型對(duì)第一單元進(jìn) 行位姿調(diào)整操作,得到第三密集面;若第二密集面上的為尖銳單元的第一單元具有與其鄰 接的為尖銳單元的第二單元,對(duì)第一單元和第二單元的區(qū)域進(jìn)行重構(gòu)操作,得到第三密集 面。
[0010] 進(jìn)一步地,查找邊界網(wǎng)格單元數(shù)據(jù)中的密集邊,并基于密集邊確定第一密集面包 括:計(jì)算網(wǎng)格單元數(shù)據(jù)的面信息中每條邊任意兩個(gè)節(jié)點(diǎn)間的平均距離;按照從大到小的順 序?qū)ζ骄嚯x進(jìn)行排序,得到距離序列;依序計(jì)算距離序列中兩兩平均距離之間的比值,若 比值大于第一預(yù)設(shè)閾值,則檢測(cè)出距離序列中兩兩平均距離中排序在后的邊為密集邊;若 面信息所指示的面為平面,且平面的非密集邊長(zhǎng)度與密集邊長(zhǎng)度之比小于第二預(yù)設(shè)閾值, 則確定平面為第一密集面。
[0011] 進(jìn)一步地,對(duì)第一密集面的網(wǎng)格數(shù)據(jù)進(jìn)行密集邊處理,得到第二密集面包括:對(duì)第 一密集面的密集邊進(jìn)行稀疏處理得到處理后的第四密集面,其中,對(duì)第一密集面的密集邊 進(jìn)行稀疏處理包括:獲取第一密集面的密集邊的映射點(diǎn)數(shù)量0和第一密集面的密集邊的節(jié) 點(diǎn)數(shù)量k;刪除密集邊中下標(biāo)非為1 ?n-l+l的節(jié)點(diǎn),得到第四密集面,1 = 0,1,2…,n=k/o; 獲取第四密集面的密集邊點(diǎn)集合《 = 1>1,y2,…,yp},依次從密集邊點(diǎn)集合中取yi、 ui+1以及第一密集面的密集邊的密集邊的映射點(diǎn)集合供中的節(jié)點(diǎn)Gi(i= 1,2,3…),構(gòu) 造第三單元,得到第二密集面,其中,i〈P。
[0012] 進(jìn)一步地,對(duì)第一單元和第二單元的區(qū)域進(jìn)行重構(gòu)操作,得到第三密集面包括:獲 取與第二單元鄰接的第四單元;若第i四單元為尖銳單元,則將第四單元記錄為第一單元, 直至第四單元不為尖銳單元;獲取第一單元、第二單元和第四單元構(gòu)成的圖形的最外層節(jié) 點(diǎn)的節(jié)點(diǎn)數(shù)據(jù);調(diào)用多邊形網(wǎng)格剖析算法對(duì)節(jié)點(diǎn)數(shù)據(jù)所包圍的多邊形區(qū)域進(jìn)行網(wǎng)格重構(gòu)處 理,得到第三密集面。
[0013] 進(jìn)一步地,按照第一單元的類型對(duì)第一單元進(jìn)行位姿調(diào)整操作,得到第三密集面 包括:判斷第一單元中內(nèi)角角度小于預(yù)設(shè)角度值的內(nèi)角個(gè)數(shù);若內(nèi)角個(gè)數(shù)為1,則判斷出 第一單元為狹長(zhǎng)三角形單元,判斷狹長(zhǎng)三角形單元的三個(gè)頂點(diǎn)是否均在第二密集面的邊界 上,其中,三個(gè)頂點(diǎn)包括第一節(jié)點(diǎn)、第二節(jié)點(diǎn)和第三節(jié)點(diǎn),其中,第一節(jié)點(diǎn)的角度小于預(yù)設(shè)角 度值。若狹長(zhǎng)三角形單元的三個(gè)頂點(diǎn)未均在第二密集面的邊界上,且第二節(jié)點(diǎn)和第三節(jié)點(diǎn) 均具有四個(gè)鄰接單元,比較第二節(jié)點(diǎn)和第三節(jié)點(diǎn)對(duì)應(yīng)狹長(zhǎng)三角形單元的第一角度和第二角 度;若第一角度大于第二角度,則獲取四個(gè)鄰接單元的五個(gè)節(jié)點(diǎn),刪除五個(gè)節(jié)點(diǎn)中的第三節(jié) 點(diǎn),按照逆序生成第五單元和第六單元,得到第三密集面,其中,第五單元的頂點(diǎn)包括第一 節(jié)點(diǎn)、第二節(jié)點(diǎn)和五個(gè)節(jié)點(diǎn)中的第四節(jié)點(diǎn),第六單元的頂點(diǎn)包括第二節(jié)點(diǎn)、第四節(jié)點(diǎn)和五個(gè) 節(jié)點(diǎn)中的第五節(jié)點(diǎn),五個(gè)節(jié)點(diǎn)包括第一節(jié)點(diǎn)、第二節(jié)點(diǎn)、第三節(jié)點(diǎn)、第四節(jié)點(diǎn)和第五節(jié)點(diǎn)。若 狹長(zhǎng)三角形單元的三個(gè)頂點(diǎn)未均在第二密集面的邊界上,且第二節(jié)點(diǎn)或第三節(jié)點(diǎn)具有四個(gè) 鄰接單元,獲取四個(gè)鄰接單元的五個(gè)節(jié)點(diǎn),刪除五個(gè)節(jié)點(diǎn)中具有四個(gè)鄰接單元的第三節(jié)點(diǎn), 按照逆序生成第五單元和第六單元,得到第三密集面,其中,第五單元的頂點(diǎn)包括第一節(jié) 點(diǎn)、第二節(jié)點(diǎn)和五個(gè)節(jié)點(diǎn)中的第四節(jié)點(diǎn),第六單元的頂點(diǎn)包括第二節(jié)點(diǎn)、第四節(jié)點(diǎn)和五個(gè)節(jié) 點(diǎn)中的第五節(jié)點(diǎn),五個(gè)節(jié)點(diǎn)包括第一節(jié)點(diǎn)、第二節(jié)點(diǎn)、第三節(jié)點(diǎn)、第四節(jié)點(diǎn)和第五節(jié)點(diǎn)。若 狹長(zhǎng)三角形單元的三個(gè)頂點(diǎn)均在第二密集面的邊界上,則獲取第二節(jié)點(diǎn)與第三節(jié)點(diǎn)的共同 的共面鄰接單元,獲取共面鄰接單元的第四節(jié)點(diǎn),按照逆序生成第五單元和第六單元,得到 第三密集面,其中,共面鄰接單元的頂點(diǎn)包括:第二節(jié)點(diǎn)、第三節(jié)點(diǎn)和第四節(jié)點(diǎn),第五單元為 共面鄰接單元,第六單元的頂點(diǎn)包括:第一節(jié)點(diǎn)、第二節(jié)點(diǎn)和第四節(jié)點(diǎn)。若內(nèi)角個(gè)數(shù)為2,則 判斷出第一單元為扁平三角形單元,獲取扁平三角形單元的第一節(jié)點(diǎn)、第二節(jié)點(diǎn)和第三節(jié) 點(diǎn),其中,第一節(jié)點(diǎn)和第二節(jié)點(diǎn)的角度小于預(yù)設(shè)角度值。判斷第一節(jié)點(diǎn)和第二節(jié)點(diǎn)是否均在 第二密集面的邊界上;若第一節(jié)點(diǎn)和第二節(jié)點(diǎn)不同時(shí)在第二密集面的邊界上,則獲取第一 節(jié)點(diǎn)與第三節(jié)點(diǎn)的共同的共面鄰接單元,獲取共面鄰接單元的第四節(jié)點(diǎn),按照逆序生成第 五單元和第六單元,得到第三密集面,其中,共面鄰接單元的頂點(diǎn)包括:第一節(jié)點(diǎn)、第三節(jié)點(diǎn) 和第四節(jié)點(diǎn),第五單元為共面鄰接單元,第六單元的頂點(diǎn)包括:第二節(jié)點(diǎn)、第三節(jié)點(diǎn)和第四 節(jié)點(diǎn)。若第一節(jié)點(diǎn)和第二節(jié)點(diǎn)同時(shí)在第二密集面的邊界上,則計(jì)算第三節(jié)點(diǎn)的共面鄰接單 元的數(shù)量。若共面鄰接單元的數(shù)量為1,則獲取共面鄰接單元的第四節(jié)點(diǎn),按照逆序生成第 五單元和第六單元,得到第三密集面,其中,共面鄰接單元的頂點(diǎn)包括:第一節(jié)點(diǎn)、第三節(jié)點(diǎn) 和第四節(jié)點(diǎn),第五單元為共面鄰接單元,第六單元的頂點(diǎn)包括:第二節(jié)點(diǎn)、第三節(jié)點(diǎn)和第四 節(jié)點(diǎn)。若共面鄰接單元的數(shù)量為3,則獲取三個(gè)共面鄰接單元的四個(gè)節(jié)點(diǎn),將三個(gè)共面鄰接 單元的并集作為第五單元,得到第三密集面,其中,三個(gè)共面鄰接單元的四個(gè)節(jié)點(diǎn)包括:第 一節(jié)點(diǎn)、第二節(jié)點(diǎn)、第三節(jié)點(diǎn)和第四節(jié)點(diǎn),第五單元的頂點(diǎn)包括第一節(jié)點(diǎn)、第二節(jié)點(diǎn)和第四 節(jié)點(diǎn)。若共面鄰接單元的數(shù)量為4,則獲取四個(gè)共面鄰接單元的四個(gè)節(jié)點(diǎn),其中,四個(gè)節(jié)點(diǎn) 包括:四個(gè)共面鄰接單元的并集組成的圖形的四個(gè)頂點(diǎn),四個(gè)頂點(diǎn)包括:第一節(jié)點(diǎn)、第二節(jié) 點(diǎn)、第四節(jié)點(diǎn)和第五節(jié)點(diǎn)。比較第四節(jié)點(diǎn)的第一角度與第五節(jié)點(diǎn)的第二角度;從第一角度與 第二角度之間大的角度對(duì)應(yīng)的節(jié)點(diǎn)引出對(duì)角線,重新劃分四個(gè)共面鄰接單元的并集組成的 圖形,得到第五單元和第六單元,得到第三密集面。
[0014]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明實(shí)施例的另一方面,提供了一種三維模型的邊界 面網(wǎng)格單元的處理裝置。
[0015] 根據(jù)本發(fā)明的裝置包括:查找模塊,用于查找邊界網(wǎng)格單元數(shù)據(jù)中的密集邊,并基 于密集邊確定第一密集面;密集邊處理模塊,用于對(duì)第一密集面的網(wǎng)格數(shù)據(jù)進(jìn)行密集邊處 理,得到第二密集面;第一判斷模塊,用于判斷第二密集面上的為尖銳單元的第一單元是否 具有與其鄰接的為尖銳單元的第二單元,其中,尖銳單元為至少有一個(gè)內(nèi)角的角度小于預(yù) 設(shè)角度值的三角形單元;位姿調(diào)整模塊,用于若第二密集面上的為尖銳單元的第一單元不 具有與其鄰接的為尖銳單元的第二單元,按照第一單元的類型對(duì)第一單元進(jìn)行位姿調(diào)整操 作,得到第三密集面;重構(gòu)處理模塊,用于若第二密集面上的為尖銳單元的第一單元具有與 其鄰接的為尖銳單元的第二單元,對(duì)第一單元和第二單元的區(qū)域進(jìn)行重構(gòu)操作,得到第三 密集面。
[0016] 進(jìn)一步地,查找模塊包括:第一計(jì)算模塊,用于計(jì)算網(wǎng)格單元數(shù)據(jù)的面信息中每條 邊任意兩個(gè)節(jié)點(diǎn)間的平均距離;排序模塊,用于按照從大到小的順序?qū)ζ骄嚯x進(jìn)行排序, 得到距離序列;第一檢測(cè)模