彭育輝,陳英杰,黃彬
(福州大學機械工程及自動化學院,福建福州 350116)
快速成型制造具有制造任意形狀復雜零件及加工周期短、成本低等優點,越來越多地被應用于機械、醫學、材料、電子等諸多學科領域.目前,與快速成型機接口的STL三角網格模型已成為事實上的標準接口,物體的幾何模型通過此接口傳輸到快速成型系統中,按一定的分層厚度對其進行分層切割,進而加工成為物理原型,其表面的光滑度是衡量原型質量優劣的重要依據.一般來說,STL三角網格模型的網格越密集,三角網格逼近程度越高,模型表面光滑度越好,模型精度越高[1].理想的STL模型應能在滿足光滑度要求的前提下,以最少數量的三角面片來逼近表達原始模型.然而光滑度和數據量之間的矛盾,一直都沒有得到很好的解決[2].
在實際應用中,由計算機輔助設計(CAD)造型軟件(如CATIA、PRO/E、I-DEAS等)進行實體建模后,再經過數據轉換而獲得的STL模型是快速成型應用的主要數據來源.為提高STL模型的幾何精度,工程上最為常用的方法是在模型轉換過程中通過控制幾何誤差參數.但是,如果所設精度太高的話,由于CAD曲面曲率和浮點數的影響,有時會導致點分離等錯誤.另一種解決方案是利用細分曲面(subdivision surface)技術在初始網格模型上直接反復迭代進行細分,從而提高了目標模型的表面光滑度.吳劍煌等提出自適應蝶形細分造型技術來提高STL模型表面的光滑度[3];溫佩芝等利用相鄰三角面片夾角閥值對STL模型整體進行分割,再基于Loop模式對模型進行自適應曲面細分,以提高STL模型中曲面部分的光順性[4];法國里昂大學的Lavoue對模型進行分割,提取特征線,利用細分曲線逼近特征線從而構建特征控制點,在此基礎上對三角網格模型進行細分[5].
但是,上述兩種解決方案都以模型整體為數據處理目標,隨著光滑度的提高,隨之增加的數據量影響模型文件的存儲、傳輸以及RP后續的數據處理效率[6].以大量增加模型的數據量換取模型整體表面光滑度的提高,不能很好地解決模型的表面光滑度與數據量的矛盾.實際上,對于最終的加工原型,并非對原型所有區域都要求有很高的表面光滑度,客戶的需求往往集中在某些方面.譬如,物體的外表面要光滑,定位孔、定位面等區域幾何精度要高,而內表面等其他區域并不做嚴格要求.因此,在實現CAD三角網格模型邊界提取的研究基礎上[7],針對選擇的區域是具有邊界的非封閉網格,提出一種基于邊界控制的Loop細分算法.該算法對于區域內部網格采用Loop細分規則進行處理,在邊界處理上,設計新的邊界三角形細分規則,提出一種基于過特征點插值方式消除邊界線細分過程的收縮現象,從而實現保證邊界的幾何精度前提下,使模型中增加的三角面片主要用于提高用戶關心的局部關鍵特征區域光滑度,較好地解決模型表面光滑度與數據量的矛盾.
Loop細分是由美國Utah大學的Charles Loop在其碩士論文中提出[8],通過細分所生成的曲面是Box樣條曲面二分算法的推廣.Loop細分是從一個初始控制網格開始的,經過一次細分,把網格Mr變成Mr+1.在細分時,相應于初始控制網格的每個控制頂點,需要計算一個新的控制頂點,此頂點稱為V-頂點;相應于初始控制網格的每一條邊需要計算一個新的控制頂點,此新頂點稱為E-頂點.V-頂點和E-頂點的計算通過以下細分規則進行求解,如圖1所示.
1)V-頂點:若內部頂點V的邊鄰點為V0,V1,V2,…,Vn-1,其中n=,則相應的V-頂點為:

圖1 Loop細分規則Fig.1 Rule of Loop subdivision

即,頂點本身與其所有相鄰頂點的加權和,其本身的權值為1-nβn,而鄰點權值為:

2)E-頂點:設內部邊的兩個頂點為V0和V1,共享此邊的兩個三角形面為(V0,V1,V2)和(V0,V1,V3),則E-頂點為:

由于Loop細分算法具有細分規則簡單,在奇異點處達到C1連續,非奇異點處達到C2連續的特點,且基于三角形控制網格,所以自其面世以后,國內外研究學者對其進行了持續研究,使得Loop細分適合于構建類型更多、品質更高的曲面.
但是,Loop細分作為一種逼近型的細分方法,其細分極限曲面相對于初始控制網格不可避免地存在著一定的收縮效應[8],如圖2所示.然而,工程中通過正向設計的CAD模型往往帶有棱和角等非光滑特征或尖銳特征,特別是對于非封閉的模型局部區域,要想利用細分曲面提高曲面質量,必須在進行細分的同時還能保持模型上的尖銳特征.

圖2 Loop細分拓撲規則Fig.2 Topology rule of Loop subdivision
Hoppe等考慮細分曲面上尖銳特征的生成對Loop細分算法進行了擴展,將尖銳特征分為折痕、角、尖刺、錐、公共尖刺5種類別.對給定的初始三角網格,根據尖銳特征的分類,在尖銳特征點或邊上分別進行標記,并分別構造不同的細分規則.生成細分曲面時,根據不同的標記采用相應的細分規則[9];與Hoppe的擴展方式類似,李桂清基于Loop細分模式,根據不同類型的尖銳特征,給每個標記的頂點復制若干新頂點,通過適當地修改控制網格中每個多邊形面(包含標記頂點)的頂點序號,使原標記頂點及新增加復制頂點都成為邊界點,把各種類型的尖銳特征都轉化成邊界情況處理[10];我們注意到上述兩者都注重保持細分時多條棱線交匯的角點位置不變,而對于網格邊界或折痕上的頂點和邊,細分規則采用以下兩個:
1)邊界上V-頂點的細分規則

其中:V1、Vn是與V0相連的兩個邊界頂點,如圖3所示.
2)邊界上E-頂點的細分規則
如果邊包含端點,采用特殊邊規則:

圖3 邊界V-頂點Fig.3 Vertex V of boundary

否則,采用正則邊規則:

邊界的細分效果具體如圖4所示,V0、V4是曲線的端點,初始控制邊界(黑色虛線)經過一次細分后得到細分邊界曲線(紅色實線).可以看到由于逼近的數值誤差,細分后的邊界同樣存在幾何位置的收縮現象.

圖4 Hoppe邊界細分Fig.4 Hoppe subdivision for boundary
由于要處理的對象是從CAD造型軟件轉化得到的STL三角網格模型,而由CAD造型軟件構建的實體模型可認為是理想的細分極限模型,所以初始STL網格模型上的頂點位置是準確的,包括邊界上的特征點.將初始邊界特征點作為初始控制點,細分過程中保留其位置不變,采用過控制點插值方式產生E-頂點(如圖5所示),經過一次細分,新的邊界線(褐色實線表示)比初始邊界(虛線表示)更加逼近原始曲線p(V)(紅色實線表示),光滑度提高的同時消除了邊界的收縮現象.因此,邊界細分的核心在于E-頂點的生成,其基本思路是:將邊界特征點Vi(i=0,1,2,…,n-1)當作型值點,構建通過此n個型值點的三次B樣條插值曲線p(V),最后求解Vi、Vi+1之間的E-頂點為:

圖5 邊界特征點插值Fig.5 Interpolation of boundary feature points

三次均勻B樣條曲線段的矩陣表示為:

其中:u為參數,u∈[0,1];Vi、Vi+1、Vi+2、Vi+3為曲線段的控制頂點,i=(0,1,2,…,n-1).
若給定n個型值點列Qi(i=0,1,2…,n-1),我們的問題是反算求解控制頂點列Vj(j=0,1,2,…,n+1),使其定義的三次B樣條曲線通過點列Qi.
因為三次B樣條曲線各曲線段連續,令:

將式(9)代入式(8)求解控制點列Vj,即求解方程組:

欲求解點列Vj的頂點數為n+2,而方程組(10)只有n個方程,因此需要再補充兩個適當的邊界條件,才能使方程組有唯一解.由于本文研究的邊界線是光滑連續的封閉曲線,所以取:

由式(11)、(10)聯立方程組可解得控制點列Vj(j=0,1,2,…,n+1),由式(8)可獲得通過型值點列Qi(i=0,1,2,…,n-1)的三次B樣條插值曲線.
在型值點Qi、Qi+1之間的E-頂點為:

與邊界線相連的三角形定義為邊界三角形.如圖6所示,虛線為初始網格,藍色網格表示所選擇的局部區域的一部分,紅色實線表示所求的邊界三次B樣條曲線,邊界特征點Vi(i=0,1,2,3,4),Ei(i=0,1,2,3)為對應的插值獲得的E-頂點.
邊界三角形的細分模式分為:
1)三角形的2個頂點位于邊界上,如圖6中的△V0V1V7,其中V0、V1保持不動,若頂點V7不是特征點,則按Loop模式的V-頂點細分規則處理;若頂點V7也是特征點則保持不動.E頂點的產生要分別處理,E-頂點V13、V14也按照Loop模式計算,E0則根據2.2節的插值方式求得.同時將位于非選擇區域的邊界三角形△V0V1V8進行1-2分裂.此為細分規則1.
2)三角形中只有1個頂點位于邊界上,如圖6中的△V1V6V7,則保持特征點V1的位置不變,若頂點V6、V7不是特征點,則按Loop模式的V-頂點細分規則處理.E-頂點則按照Loop模式的E-頂點細分規則處理.若位于非選擇區域,如△V1V8V9,則保持不變.此為細分規則2.

圖6 邊界三角形細分Fig.6 Subdivision of boundary mesh
在圖7所示活塞模型(面片精度:0.1 mm,三角面片數:2 540)已實現區域分割的基礎上,由于在設計功能上,活塞銷孔與活塞銷配合,需要較高的幾何精度和表面光滑度,所以選擇活塞銷孔進行局部細分,利用本文提出的基于Loop的局部區域網格細分規則,得到圖7(d)、(e)所示一次細分后的模型結果.
通過圖7(e)和圖7(b)的比較,可以明顯看到銷孔的光滑度得到較大的提高,且整體模型的其他區域網格保持不變.在網格數量上,細分后模型的三角面片數為2 868,較原模型只增加了318個三角面片.
對銷孔細分前、后的模型的同一切片(第126層)輪廓進行對比,如圖8(a)、(b)所示,細分后的切片的輪廓線光滑度有顯著提高;局部細分前、后模型的快速成型的結果對比如圖7(c)、(f)所示,可以看出在模型三角面片總數增加較少的前提下,能明顯提高局部關鍵特征區域的光滑度,說明本文提出的技術方案可以較好地解決表面光滑度與數據量的矛盾.

圖7 活塞銷孔的局部細分對比Fig.7 Comparison of partial subdivision for pinhole

圖8 銷孔輪廓線的局部細分對比Fig.8 Contour line comparison after partial subdivision
在實現STL三角網格模型特征邊界提取基礎上,提出一種基于過特征點插值方法產生細分頂點.在模型的邊界處理上,設計新的邊界三角形細分規則,從而實現保證邊界幾何精度的前提下,消除邊界線細分過程的收縮現象.
結合快速成型的應用實例證實了本文所提技術方案的可行性.通過對CAD三角網格模型的區域分割以實現模型局部細分的方法,可以較好地解決模型關鍵特征區域光滑度的提高與模型整體數據量增大之間的矛盾.