江志偉,李耀棠
JIANG Zhi-wei,LI Yao-tang
(中科院廣州電子技術有限公司,廣州 5 100701)
熔融沉積制造(Fused Deposition Modeling,FDM)[1]技術是目前應用最為廣泛的三維打印技術之一,在注塑模具、醫療、玩具、汽車、電子以及個人定制等領域得到大量應用。FDM的制造原理是分層累積成形,其制造過程中每一層都是通過數據處理軟件將數字化三維模型切片后得到截面輪廓,然后規劃生成打印設備噴頭的運動軌跡并輸出到打印設備進行成形制造[2,3]。支撐自動生成算法是3D打印軟件的關鍵內容之一,不僅是實現離散堆積成形的重要環節,而且對成形速度、成形精度、零件表面質量等方面都有很大影響[4]。
三維打印支撐生成方法主要有兩種,一是基于CAD(Computer Aided Design)幾何模型的支撐生成,這種方式需要通過CAD軟件手工添加支撐體,然后將其轉換為網格模型進行打印,這種方式對用戶要求較高,生成的支撐對于復雜模型難以保證其打印質量[5]。另外一種是基于網格模型[6~8]的支撐自動生成方法,網格模型數據格式公開而簡潔,是事實上的三維打印軟件數據輸入格式標準,因而其支撐生成算法研究也更為廣泛。陳之佳[9]等提出了一種基于直線掃描的支撐自動生成算法,通過掃描線段的并、差運算快速獲得打印支撐。為進一步降低打印設備運行成本,提高成形效率,黃小毛[10]等設計了一種斜壁結構的支撐自動生成算法,不僅能夠有效輔助零件實體的成形過程,而且能夠減少支撐材料消耗量和成形時間。“蒙皮-剛架”(Skin-Frame)是劉利剛[11,12]等提出的輕質結構用來解決材料優化問題,該結構由一些細桿通過一些節點相連而成,形成空間的一個圖結構,通過將模型表達成一個很薄的蒙皮以及內部剛架結構,使得表達后的物體的體積最小,而且使得打印物體能夠滿足所要求的物理強度,受力穩定性,自平衡性及可打印性等要求。Dumas[13]等給出了一個“腳手架”狀的支撐生成算法,該支撐采用圓柱截面形狀的細柱狀支撐結構,每個支撐結構與模型連接處人為變小,以利于支撐結構的后處理,該算法有時需要交互增減支撐腳手架的數量。魏瀟然[14]等提出一種以熔絲為支撐單位的樹形稀疏支撐結構,與傳統算法計算模型表面支撐區域不同,該算法計算每段熔絲需要支撐的區域,使支撐結構更契合熔絲沉積特點。Hu[15]等提出一個金字塔分解方法,把三維模型切割成盡可能少的幾個不需要支撐的模塊,分別打印然后拼接起來,實現零件零支撐結構。沈振宏[16]等為節省三維打印的材料和時間,提出了一種基于臨界傾角約束的樹形支撐結構生成算法,在保證打印穩定性的前提下,有效減少了支撐材料,縮短了打印時間。
3D打印技術是制造史上的巨大突破,其市場前景遠大,但競爭也日趨激烈,要在激烈的市場競爭中占有一席之地,三維打印設備必須從各方面提高其性能。面向三維打印的數據預處理技術對于提高三維打印質量非常關鍵,在性能近似的硬件設備中,更好的數據預處理能夠使類似的硬件設備產生更好的打印效果,從而提高打印設備的市場競爭力。高端的商業三維打印數據處理系統價格昂貴,而開源系統在商業應用上的許可制度等因素,大大影響了我國三維打印行業的進一步發展,開發具有自主產權的三維打印軟件系統,對于縮小我國三維打印與先進國家的差距具有重要意義。
針對目前三維打印設備數據處理軟件現狀,我們研發了具有自主知識產權的數據預處理軟件系統,提出了基于垂直掃成的支撐生成算法,并面向模型可打印性以及打印效率等方面進行了改進優化。接下來對該方法進行闡述,其中第一部分為算法總體框架,第二部分為層片化支撐算法的具體實現細節以及關鍵點介紹,第三部分介紹了針對可打印性以及模型細節的支撐優化,第四部分給出了系統實現和實例討論,最后給出論文總結。
三維打印支撐是一些額外的支撐結構以防止打印過程中出現坍塌或者不能打印情況的出現,FDM支撐結構必須考慮可打印性,即支撐不僅僅是簡單滿足幾何意義上的支撐,而且要有足夠的強度和穩定性,在此基礎上兼顧支撐加工材料的耗費以及后處理等因素,當模型變得復雜并且網格數目較多時,上述問題變得尤為突出。為此,我們提出基于垂直掃成的支撐生成與優化算法,該算法基于支撐區域縱向掃成建立支撐體三維包圍空間,然后基于二維分層切片計算二維打印層上的支撐區域,并針對一些不能加工的細小特征進行改進優化,最終建立完整的層片化支撐模型。算法總體框架如圖1所示,該算法以三角網格模型為輸入,以層片化支撐模型為輸出,其關鍵模塊包括如何快速找到需要支撐的網格表面區域,消除該區域中的奇異情況以建立符合二維流形的垂直掃成網格模型,最終通過該模型與物體模型之間的關系求得層片化支撐并進行優化改進。

圖1 基于垂直掃成的支撐生成與優化方法框架
該算法基本思想是從物體表面逆打印方向進行掃成,掃成體中去除被物體或者其他支撐體遮擋的部分,剩余的即是有效的支撐體,以圖2所示的模型為例,其支撐區域向Z向反方向進行掃成,得到圖3所示的掃成體,該掃成體包含了該區域的支撐,去除被模型遮擋的部分,得到圖4所示的支撐模型。為此,首先對模型網格表面分析,得到需要支撐的表面區域,而要得到最終的支撐,則采用離散化的求解方法,即在二維分層切片輪廓上進行幾何運算得到最終的打印支撐模型。

圖2 模型支撐區域

圖3 支撐區域掃成體

圖4 支撐模型
基于物體支撐區域的垂直掃成以及二維分層切片幾何運算的方法,給出了圖6所示的層片支撐生成算法,該算法的輸入為原始網格模型以及打印層高,輸出為層片化支撐模型,以下介紹算法關鍵細節。
該算法首先進行網格模型表面分析,基于網格面片的傾斜度確定需要支撐的三角形。如圖5所示,我們以打印層高(LH)和打印線寬(LW)作為計算臨界傾角的依據,如式(1)所示,若傾角大于該臨界角,則判定該三角形需要支撐,在實際應用中,用戶可根據實際情況對該臨界角進行適當微調。

另外,需要基于洪軍[17]等的方法確定懸掛邊、懸掛點,并將其鄰面加入到需要支撐的區域。

圖5 網格三角形傾斜度計算

圖6 基于垂直掃成的層片化支撐算法
上述步驟得到的支撐網格模型進一步基于拓撲關系連成一些連通的區域,這些區域向Z向反向掃成到XOY平面,并保證新得到的掃成模型的三角形法向指向掃成體外部,這其中需要處理如圖7所示的奇異情況,即多個三角形之間僅僅共點的情況,我們采用的方法將該點進行分裂,使相鄰三角形不在拓撲上共點。如圖5算法所示,通過對該掃成體進行二維分層切片,并將支撐切片區域去除物體部分,即可以得到所需要的支撐輪廓。在此過程中,原始物體模型的上層輪廓遮擋關系將被傳遞下層,以保證支撐生成的準確性。

圖7 支撐區域奇異情況
前述得到的支撐是單純幾何意義上的支撐,更適用于細節較少的網格模型,而對于存在一些細小特征的模型,容易帶來難以打印的問題。以圖8為例,其中圖8(a)中的模型存在一個非常些小的邊緣區域,該區域從幾何上看只要圖8(b)中的藍色支撐即可,但在實際打印過程中,由于該支撐非常細長,容易出現打印過程中支撐坍塌的情況,因此我們對前述算法得到的支撐結果進行可打印性優化改進,使其轉化為圖8(c)中藍色的支撐模型,該支撐顯然不會出現打印坍塌的情況。

圖8 支撐可加工優化改進
針對上述目標的支撐優化改進基本思想是:識別其中細小的支撐區域,根據該支撐區域所在的連續層數,基于一定啟發式規則對其進行區域擴充,使得最終的層片支撐變得更加牢固,從而起到支撐作用,其算法流程如圖9所示。由于精確找到類似圖8中的細長區域需要大量的運算,因此該算法中采用的方法是從頂層開始依次處理其中的細小特征區域,其界定尺度則依賴于該區域所處的層數,即與該區域有交疊的連續層數,從而給定該區域應該達到的寬度范圍,若不足,則將該區域進行相應的放大膨脹。由于區域放縮后可能與物體相交,因此需要去掉其中的交疊部分。需要指出的時,由于該算法對每一層的連續區域為基本單元進行處理,因此可能帶來一些額外的支撐膨脹,帶來一定的支撐材料耗費。

圖9 支撐可加工性優化改進算法
在Windows平臺下,采用C++在Visual Studio 2013開發環境下實現了三維打印數據處理軟件系統,該系統采用本文所介紹算法對STL模型進行支撐生成與優化。以下基于模型實例驗證分析本文算法的有效性。
圖10為采用該算法處理的一個杯子模型,該模型三角網格面片數為35661,物體長、寬、高分別為102、72、72。該模型的復雜之處在于其杯壁處的刻字非常細微,因此其支撐模型需要特殊處理以利于打印。圖11為給該模型的中間支撐模型,即基于垂直掃成生成的基本支撐,看見其刻字處的支撐非常細小,在打印過程中非常容易坍塌。圖12為最終生成的層片化支撐,該支撐在細節出進行適當的放大,因而能夠穩定地輔助物體打印,圖13為杯壁刻字處的支撐形狀細節。
圖14為采用該算法處理的一個玩具狗模型,該模型三角網格數為456552,物體長、寬、高分別為68、50、121。該模型的難點在于其形狀變化很多,其細節處如耳朵、頸部等具有大量的微小懸掛特征,如圖14所示,因此其需要的支撐很多。圖15為耳朵處的支撐細節,可以看出耳朵底部以及彎曲側面的支撐需求導致了支撐需要包繞整個耳朵周圍。另外,該模型為薄壁形狀,因此其內部也需要支持,圖16為高度70.625處的分層切片,紅色和藍色之間為模型的薄壁,其他部分為物體的支撐區域。

圖10 杯子網格模型

圖11 基本支撐形狀

圖12 優化后的支撐形狀

圖13 可加工的支撐形狀細節

圖14 玩具狗網格模型

圖15 可加工的支撐形狀細節

圖16 高度70.625截面輪廓
給出了一種基于垂直掃成的三維打印支撐生成與優化算法,通過網格模型面片的傾斜度快速識別需要支撐的區域,將該區域垂直掃成為候選三維支撐模型區域,然后基于二維分層切片之間的關系求解得到需要打印的支撐層片,并對其進行可加工性優化改進。該算法數據結構簡潔,內存耗費低。該方法得到的支撐材料耗費尚有進一步改進的潛力,我們通過設備打印路徑的稀疏化處理對該問題加以改進并在另外文章中加以介紹。實例表明該算法穩定可靠,特別是針對復雜網格模型具有良好的效率和魯棒性。