彭育輝,陳英杰,黃彬
(福州大學(xué)機(jī)械工程及自動(dòng)化學(xué)院,福建福州 350116)
快速成型制造具有制造任意形狀復(fù)雜零件及加工周期短、成本低等優(yōu)點(diǎn),越來越多地被應(yīng)用于機(jī)械、醫(yī)學(xué)、材料、電子等諸多學(xué)科領(lǐng)域.目前,與快速成型機(jī)接口的STL三角網(wǎng)格模型已成為事實(shí)上的標(biāo)準(zhǔn)接口,物體的幾何模型通過此接口傳輸?shù)娇焖俪尚拖到y(tǒng)中,按一定的分層厚度對(duì)其進(jìn)行分層切割,進(jìn)而加工成為物理原型,其表面的光滑度是衡量原型質(zhì)量優(yōu)劣的重要依據(jù).一般來說,STL三角網(wǎng)格模型的網(wǎng)格越密集,三角網(wǎng)格逼近程度越高,模型表面光滑度越好,模型精度越高[1].理想的STL模型應(yīng)能在滿足光滑度要求的前提下,以最少數(shù)量的三角面片來逼近表達(dá)原始模型.然而光滑度和數(shù)據(jù)量之間的矛盾,一直都沒有得到很好的解決[2].
在實(shí)際應(yīng)用中,由計(jì)算機(jī)輔助設(shè)計(jì)(CAD)造型軟件(如CATIA、PRO/E、I-DEAS等)進(jìn)行實(shí)體建模后,再經(jīng)過數(shù)據(jù)轉(zhuǎn)換而獲得的STL模型是快速成型應(yīng)用的主要數(shù)據(jù)來源.為提高STL模型的幾何精度,工程上最為常用的方法是在模型轉(zhuǎn)換過程中通過控制幾何誤差參數(shù).但是,如果所設(shè)精度太高的話,由于CAD曲面曲率和浮點(diǎn)數(shù)的影響,有時(shí)會(huì)導(dǎo)致點(diǎn)分離等錯(cuò)誤.另一種解決方案是利用細(xì)分曲面(subdivision surface)技術(shù)在初始網(wǎng)格模型上直接反復(fù)迭代進(jìn)行細(xì)分,從而提高了目標(biāo)模型的表面光滑度.吳劍煌等提出自適應(yīng)蝶形細(xì)分造型技術(shù)來提高STL模型表面的光滑度[3];溫佩芝等利用相鄰三角面片夾角閥值對(duì)STL模型整體進(jìn)行分割,再基于Loop模式對(duì)模型進(jìn)行自適應(yīng)曲面細(xì)分,以提高STL模型中曲面部分的光順性[4];法國里昂大學(xué)的Lavoue對(duì)模型進(jìn)行分割,提取特征線,利用細(xì)分曲線逼近特征線從而構(gòu)建特征控制點(diǎn),在此基礎(chǔ)上對(duì)三角網(wǎng)格模型進(jìn)行細(xì)分[5].
但是,上述兩種解決方案都以模型整體為數(shù)據(jù)處理目標(biāo),隨著光滑度的提高,隨之增加的數(shù)據(jù)量影響模型文件的存儲(chǔ)、傳輸以及RP后續(xù)的數(shù)據(jù)處理效率[6].以大量增加模型的數(shù)據(jù)量換取模型整體表面光滑度的提高,不能很好地解決模型的表面光滑度與數(shù)據(jù)量的矛盾.實(shí)際上,對(duì)于最終的加工原型,并非對(duì)原型所有區(qū)域都要求有很高的表面光滑度,客戶的需求往往集中在某些方面.譬如,物體的外表面要光滑,定位孔、定位面等區(qū)域幾何精度要高,而內(nèi)表面等其他區(qū)域并不做嚴(yán)格要求.因此,在實(shí)現(xiàn)CAD三角網(wǎng)格模型邊界提取的研究基礎(chǔ)上[7],針對(duì)選擇的區(qū)域是具有邊界的非封閉網(wǎng)格,提出一種基于邊界控制的Loop細(xì)分算法.該算法對(duì)于區(qū)域內(nèi)部網(wǎng)格采用Loop細(xì)分規(guī)則進(jìn)行處理,在邊界處理上,設(shè)計(jì)新的邊界三角形細(xì)分規(guī)則,提出一種基于過特征點(diǎn)插值方式消除邊界線細(xì)分過程的收縮現(xiàn)象,從而實(shí)現(xiàn)保證邊界的幾何精度前提下,使模型中增加的三角面片主要用于提高用戶關(guān)心的局部關(guān)鍵特征區(qū)域光滑度,較好地解決模型表面光滑度與數(shù)據(jù)量的矛盾.
Loop細(xì)分是由美國Utah大學(xué)的Charles Loop在其碩士論文中提出[8],通過細(xì)分所生成的曲面是Box樣條曲面二分算法的推廣.Loop細(xì)分是從一個(gè)初始控制網(wǎng)格開始的,經(jīng)過一次細(xì)分,把網(wǎng)格Mr變成Mr+1.在細(xì)分時(shí),相應(yīng)于初始控制網(wǎng)格的每個(gè)控制頂點(diǎn),需要計(jì)算一個(gè)新的控制頂點(diǎn),此頂點(diǎn)稱為V-頂點(diǎn);相應(yīng)于初始控制網(wǎng)格的每一條邊需要計(jì)算一個(gè)新的控制頂點(diǎn),此新頂點(diǎn)稱為E-頂點(diǎn).V-頂點(diǎn)和E-頂點(diǎn)的計(jì)算通過以下細(xì)分規(guī)則進(jìn)行求解,如圖1所示.
1)V-頂點(diǎn):若內(nèi)部頂點(diǎn)V的邊鄰點(diǎn)為V0,V1,V2,…,Vn-1,其中n=,則相應(yīng)的V-頂點(diǎn)為:
圖1 Loop細(xì)分規(guī)則Fig.1 Rule of Loop subdivision
即,頂點(diǎn)本身與其所有相鄰頂點(diǎn)的加權(quán)和,其本身的權(quán)值為1-nβn,而鄰點(diǎn)權(quán)值為:
2)E-頂點(diǎn):設(shè)內(nèi)部邊的兩個(gè)頂點(diǎn)為V0和V1,共享此邊的兩個(gè)三角形面為(V0,V1,V2)和(V0,V1,V3),則E-頂點(diǎn)為:
由于Loop細(xì)分算法具有細(xì)分規(guī)則簡單,在奇異點(diǎn)處達(dá)到C1連續(xù),非奇異點(diǎn)處達(dá)到C2連續(xù)的特點(diǎn),且基于三角形控制網(wǎng)格,所以自其面世以后,國內(nèi)外研究學(xué)者對(duì)其進(jìn)行了持續(xù)研究,使得Loop細(xì)分適合于構(gòu)建類型更多、品質(zhì)更高的曲面.
但是,Loop細(xì)分作為一種逼近型的細(xì)分方法,其細(xì)分極限曲面相對(duì)于初始控制網(wǎng)格不可避免地存在著一定的收縮效應(yīng)[8],如圖2所示.然而,工程中通過正向設(shè)計(jì)的CAD模型往往帶有棱和角等非光滑特征或尖銳特征,特別是對(duì)于非封閉的模型局部區(qū)域,要想利用細(xì)分曲面提高曲面質(zhì)量,必須在進(jìn)行細(xì)分的同時(shí)還能保持模型上的尖銳特征.
圖2 Loop細(xì)分拓?fù)湟?guī)則Fig.2 Topology rule of Loop subdivision
Hoppe等考慮細(xì)分曲面上尖銳特征的生成對(duì)Loop細(xì)分算法進(jìn)行了擴(kuò)展,將尖銳特征分為折痕、角、尖刺、錐、公共尖刺5種類別.對(duì)給定的初始三角網(wǎng)格,根據(jù)尖銳特征的分類,在尖銳特征點(diǎn)或邊上分別進(jìn)行標(biāo)記,并分別構(gòu)造不同的細(xì)分規(guī)則.生成細(xì)分曲面時(shí),根據(jù)不同的標(biāo)記采用相應(yīng)的細(xì)分規(guī)則[9];與Hoppe的擴(kuò)展方式類似,李桂清基于Loop細(xì)分模式,根據(jù)不同類型的尖銳特征,給每個(gè)標(biāo)記的頂點(diǎn)復(fù)制若干新頂點(diǎn),通過適當(dāng)?shù)匦薷目刂凭W(wǎng)格中每個(gè)多邊形面(包含標(biāo)記頂點(diǎn))的頂點(diǎn)序號(hào),使原標(biāo)記頂點(diǎn)及新增加復(fù)制頂點(diǎn)都成為邊界點(diǎn),把各種類型的尖銳特征都轉(zhuǎn)化成邊界情況處理[10];我們注意到上述兩者都注重保持細(xì)分時(shí)多條棱線交匯的角點(diǎn)位置不變,而對(duì)于網(wǎng)格邊界或折痕上的頂點(diǎn)和邊,細(xì)分規(guī)則采用以下兩個(gè):
1)邊界上V-頂點(diǎn)的細(xì)分規(guī)則
其中:V1、Vn是與V0相連的兩個(gè)邊界頂點(diǎn),如圖3所示.
2)邊界上E-頂點(diǎn)的細(xì)分規(guī)則
如果邊包含端點(diǎn),采用特殊邊規(guī)則:
圖3 邊界V-頂點(diǎn)Fig.3 Vertex V of boundary
否則,采用正則邊規(guī)則:
邊界的細(xì)分效果具體如圖4所示,V0、V4是曲線的端點(diǎn),初始控制邊界(黑色虛線)經(jīng)過一次細(xì)分后得到細(xì)分邊界曲線(紅色實(shí)線).可以看到由于逼近的數(shù)值誤差,細(xì)分后的邊界同樣存在幾何位置的收縮現(xiàn)象.
圖4 Hoppe邊界細(xì)分Fig.4 Hoppe subdivision for boundary
由于要處理的對(duì)象是從CAD造型軟件轉(zhuǎn)化得到的STL三角網(wǎng)格模型,而由CAD造型軟件構(gòu)建的實(shí)體模型可認(rèn)為是理想的細(xì)分極限模型,所以初始STL網(wǎng)格模型上的頂點(diǎn)位置是準(zhǔn)確的,包括邊界上的特征點(diǎn).將初始邊界特征點(diǎn)作為初始控制點(diǎn),細(xì)分過程中保留其位置不變,采用過控制點(diǎn)插值方式產(chǎn)生E-頂點(diǎn)(如圖5所示),經(jīng)過一次細(xì)分,新的邊界線(褐色實(shí)線表示)比初始邊界(虛線表示)更加逼近原始曲線p(V)(紅色實(shí)線表示),光滑度提高的同時(shí)消除了邊界的收縮現(xiàn)象.因此,邊界細(xì)分的核心在于E-頂點(diǎn)的生成,其基本思路是:將邊界特征點(diǎn)Vi(i=0,1,2,…,n-1)當(dāng)作型值點(diǎn),構(gòu)建通過此n個(gè)型值點(diǎn)的三次B樣條插值曲線p(V),最后求解Vi、Vi+1之間的E-頂點(diǎn)為:
圖5 邊界特征點(diǎn)插值Fig.5 Interpolation of boundary feature points
三次均勻B樣條曲線段的矩陣表示為:
其中:u為參數(shù),u∈[0,1];Vi、Vi+1、Vi+2、Vi+3為曲線段的控制頂點(diǎn),i=(0,1,2,…,n-1).
若給定n個(gè)型值點(diǎn)列Qi(i=0,1,2…,n-1),我們的問題是反算求解控制頂點(diǎn)列Vj(j=0,1,2,…,n+1),使其定義的三次B樣條曲線通過點(diǎn)列Qi.
因?yàn)槿蜝樣條曲線各曲線段連續(xù),令:
將式(9)代入式(8)求解控制點(diǎn)列Vj,即求解方程組:
欲求解點(diǎn)列Vj的頂點(diǎn)數(shù)為n+2,而方程組(10)只有n個(gè)方程,因此需要再補(bǔ)充兩個(gè)適當(dāng)?shù)倪吔鐥l件,才能使方程組有唯一解.由于本文研究的邊界線是光滑連續(xù)的封閉曲線,所以取:
由式(11)、(10)聯(lián)立方程組可解得控制點(diǎn)列Vj(j=0,1,2,…,n+1),由式(8)可獲得通過型值點(diǎn)列Qi(i=0,1,2,…,n-1)的三次B樣條插值曲線.
在型值點(diǎn)Qi、Qi+1之間的E-頂點(diǎn)為:
與邊界線相連的三角形定義為邊界三角形.如圖6所示,虛線為初始網(wǎng)格,藍(lán)色網(wǎng)格表示所選擇的局部區(qū)域的一部分,紅色實(shí)線表示所求的邊界三次B樣條曲線,邊界特征點(diǎn)Vi(i=0,1,2,3,4),Ei(i=0,1,2,3)為對(duì)應(yīng)的插值獲得的E-頂點(diǎn).
邊界三角形的細(xì)分模式分為:
1)三角形的2個(gè)頂點(diǎn)位于邊界上,如圖6中的△V0V1V7,其中V0、V1保持不動(dòng),若頂點(diǎn)V7不是特征點(diǎn),則按Loop模式的V-頂點(diǎn)細(xì)分規(guī)則處理;若頂點(diǎn)V7也是特征點(diǎn)則保持不動(dòng).E頂點(diǎn)的產(chǎn)生要分別處理,E-頂點(diǎn)V13、V14也按照Loop模式計(jì)算,E0則根據(jù)2.2節(jié)的插值方式求得.同時(shí)將位于非選擇區(qū)域的邊界三角形△V0V1V8進(jìn)行1-2分裂.此為細(xì)分規(guī)則1.
2)三角形中只有1個(gè)頂點(diǎn)位于邊界上,如圖6中的△V1V6V7,則保持特征點(diǎn)V1的位置不變,若頂點(diǎn)V6、V7不是特征點(diǎn),則按Loop模式的V-頂點(diǎn)細(xì)分規(guī)則處理.E-頂點(diǎn)則按照Loop模式的E-頂點(diǎn)細(xì)分規(guī)則處理.若位于非選擇區(qū)域,如△V1V8V9,則保持不變.此為細(xì)分規(guī)則2.
圖6 邊界三角形細(xì)分Fig.6 Subdivision of boundary mesh
在圖7所示活塞模型(面片精度:0.1 mm,三角面片數(shù):2 540)已實(shí)現(xiàn)區(qū)域分割的基礎(chǔ)上,由于在設(shè)計(jì)功能上,活塞銷孔與活塞銷配合,需要較高的幾何精度和表面光滑度,所以選擇活塞銷孔進(jìn)行局部細(xì)分,利用本文提出的基于Loop的局部區(qū)域網(wǎng)格細(xì)分規(guī)則,得到圖7(d)、(e)所示一次細(xì)分后的模型結(jié)果.
通過圖7(e)和圖7(b)的比較,可以明顯看到銷孔的光滑度得到較大的提高,且整體模型的其他區(qū)域網(wǎng)格保持不變.在網(wǎng)格數(shù)量上,細(xì)分后模型的三角面片數(shù)為2 868,較原模型只增加了318個(gè)三角面片.
對(duì)銷孔細(xì)分前、后的模型的同一切片(第126層)輪廓進(jìn)行對(duì)比,如圖8(a)、(b)所示,細(xì)分后的切片的輪廓線光滑度有顯著提高;局部細(xì)分前、后模型的快速成型的結(jié)果對(duì)比如圖7(c)、(f)所示,可以看出在模型三角面片總數(shù)增加較少的前提下,能明顯提高局部關(guān)鍵特征區(qū)域的光滑度,說明本文提出的技術(shù)方案可以較好地解決表面光滑度與數(shù)據(jù)量的矛盾.
圖7 活塞銷孔的局部細(xì)分對(duì)比Fig.7 Comparison of partial subdivision for pinhole
圖8 銷孔輪廓線的局部細(xì)分對(duì)比Fig.8 Contour line comparison after partial subdivision
在實(shí)現(xiàn)STL三角網(wǎng)格模型特征邊界提取基礎(chǔ)上,提出一種基于過特征點(diǎn)插值方法產(chǎn)生細(xì)分頂點(diǎn).在模型的邊界處理上,設(shè)計(jì)新的邊界三角形細(xì)分規(guī)則,從而實(shí)現(xiàn)保證邊界幾何精度的前提下,消除邊界線細(xì)分過程的收縮現(xiàn)象.
結(jié)合快速成型的應(yīng)用實(shí)例證實(shí)了本文所提技術(shù)方案的可行性.通過對(duì)CAD三角網(wǎng)格模型的區(qū)域分割以實(shí)現(xiàn)模型局部細(xì)分的方法,可以較好地解決模型關(guān)鍵特征區(qū)域光滑度的提高與模型整體數(shù)據(jù)量增大之間的矛盾.