3D打印技術之切片引擎(1)

【此係列文章基於熔融沉積( fused depostion modeling, FDM )成形工藝】

       切片引擎,是3D打印技術的靈魂,其實質就是將3D模型進行分層,輸出矢量集合,是應該歸爲圖形學的一門技術,其對數學算法要求很高,複雜性主要體現在要對3D模型的不同的拓撲結構做出判斷並輸出與之相符合的矢量集合。就我個人的觀點,目前世界上最優秀的切片引擎在這一點上也沒有做的很好,所以對於這一門技術,可進步的空間是很大的,未知的空間非常遼闊。

 

       非常有幸的是在我的上一家公司裏面,我有機會開發這樣的一個模塊,我負責由3D模型生成矢量集合,另一位同事把我生成的矢量集合再生成爲Gcode,據我所知,目前國內還沒有相關的自主研發的成熟的軟件。但是,這個模塊在最需要我突破的時候我由於更重要的原因離開了這家公司,在公司這樣一個重要的模塊,我幾乎是獨立開發的,我已經有了很多的想法,我想如果我繼續做下去,我會發表論文,我有機會做成國內最優秀的軟件,但這些只能是假設,我離開了,這個項目也暫時很難被支持的研發下去。但我想把我那段時間的所想所得分享出來,我所做的並不高明,我要學習的東西太多了,當下我更需要的是學習交流的機會(這是我離開公司的最重要原因),但如果我的東西能對您有一丟丟的啓發,我也會感到非常幸福,非常欣慰。

       我就先簡單提一下目前國際上做的最成熟的這類模塊,一共有兩款切片引擎:skeinforge和slic3r。

       skeinforge是採用腳本語言python開發,是公司裏面一直在用的模塊,這款引擎首先是樣式有些單一,採用雙邊打印,內部填充用的四邊形填充(採用單一的四邊形填充有其道理,只有四邊形可實現以行爲單位的連續打印,打印機暫停的時間最少),不像slice3r多邊打印可以設置,填充樣式也可以選擇。但我認爲skeinforge是目前最成功的引擎,原因是判斷引擎的優劣主要是看對模型不同拓撲結構的判斷及處理,在這一點上skeinfoege是非常成功的,它實現了對切片不同的拓撲結構採用了最合適它的處理,而且魯棒性很強,它的簡單自然有它的道理,它是真正的簡約的軟件。

 

slic3r是用c++開發的,相對於skeinfoege,它顯得更爲華麗,打印方式多樣,打印的邊數可以設置,填充方式包括:

同心填充,蜂窩填充,線填充,希爾伯特曲線填充

阿基米德和鉉填充,八角星螺旋填充

另外支持可變層高(對斜率較小的模型結構實現了精細打印),該軟件在不斷的升級改進中,是很多國內3D printer公司的首選,

但就目前來講,打印質量比skeinforge稍差,隨着升級,未來會超越skeinforge。

對此,我總結了一下,一個成功的切片引擎軟件應該符合一下幾點:

1,打印出來的模型與原模型相似度最高

這是最主要的一點,給你一個貓的模型,你打印出來一隻狗,總不合適吧,不過這也太誇張了,真正優越的切片軟件,總是可以對

最精細的結構進行細微的實現,使其在打印出來的實體中栩栩如生的顯示出來。對此,我曾經在公司裏面提出用工程力學的方式來

動態組織填充矢量,而不是死板的用這幾種填充方式,但可惜我不懂工程力學,也沒有及時的和這方面的專家聯繫(我的失誤),

但這的確應該是未來解決這類問題的思路,就好像骨小梁一樣,根據力學分佈,動態的組織矢量集合!

2,打印出來的模型穩固性強——硬度高或者柔韌性強

就目前來說,流行的填充方式:線填充,蜂窩填充,同心填充。蜂窩填充的穩固性是最好的,在蜂窩填充裏三角形填充的穩固性較

強,六邊形填充的柔韌性較強。

3,省材料

4,打印時間短

5,魯棒性強

 

平時會遇到很多不規範的3D模型(沒有閉合或者存在大量相交的三角面片,多是由於3D美工的建模不專業所致),優秀的切片引擎需要對這些不規範的模型進行處理。

 

要做到這幾點,輸出的矢量集合就需要:

1,靈活的填充矢量集合生成算法適應不同的模型的不同的拓撲結構,使得填充矢量對邊界衝擊力最小,又能很好的支撐住整個模

型。

2,矢量集合有效組織,首尾相連,矢量數量最小,平均長度最大,方差最小。

3,多邊打印,防止斜率小的時候上層塌陷以及保護外邊界。

4,優越的支撐生成算法,支撐生成的越少越好,首先是爲了省材料,其次與實體可以更容易的剝離。

5,對模型進行糾錯及動態修補功能。

 

對此我的切片程序實現了其中的大部分功能,已經能對模型進行較好的切片形成矢量集合,打印質量接近skeinforge,但是目前

還沒有成熟的引擎該有的模型修補功能,clip算法也是最原始的(我的程序中的clip算法是自己寫的,slic3r和cura兩款引擎的

clip算法都用的同一個程序:clipper.hpp和clipper.cpp,裏面的算法是出自一篇論文

(an extension of Bala Vatti's clipping algorithm: "A generic solution to polygon clipping")),也沒有很好的魯棒性。對

一些不規範的模型切片會出現錯誤,算法方面也沒有太大的閃光,但是不管怎樣,在三個月的時間裏,我已經實現了切片引擎的

框架,我認爲也是有所得的。下面就是我的引擎的一些測試圖片,在下一篇文章裏,我將把其中的一些思想分享給大家。

1 同心填充(紅色是邊界,藍綠相間是填充)

2同心填充加雙邊打印

 

3三角網格填充加雙邊打印

4六邊形網格填充

 

5線填充加雙邊打印

OK,今天的內容大概就是這些,我們下篇文章見:)

 

 

參考資料:

slic3r使用說明

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章