SLM激光切片软件开发
3D激光打印切片軟件關鍵技術開發
- 3D打印常規功能主要包括以下幾個方面:
- 1、模型導入導出功能
- 2、模型渲染
- 3、模型剛性變換,平移、旋轉、縮放等
- 4、切片功能
- 5、支撐功能(分別對懸空點、邊、面檢查并支撐)
- 6、切片預覽功能(主要觀察切片截面情況、有時可輔助檢查支撐是否漏加)
3D打印常規功能主要包括以下幾個方面:
-
1、模型導入導出
-
2、模型渲染(環境、模型、工作臺、坐標系等)
-
3、模型剛性變換,平移、旋轉、縮放等
-
4、切片功能(其中FDM和光固化兩種切片方式不一樣)
-
5、支撐功能(分別對懸空點、邊、面檢查并支撐)
-
6、切片預覽功能(主要觀察切片截面情況、有時可輔助檢查支撐是否漏加)
為滿足更多的3D打印愛好者的需求,很多切片軟件還個性添加一些輔助性功能,如光固化的打孔、抽殼、填充等,還有一些客戶有個性化需求,如添加文字、網格分割、網格修復功能等,再有一些專業性軟件可以提供更加專業的模型處理能力,如網格 變形、特征轉移等,由于篇章問題不展開討論。
本人為3D打印愛好者,以下所提技術是基于這篇論文《選區激光融化切片軟件的關鍵技術研究》的理解之上做的一些開發。
1、模型導入導出功能
常規的3D打印模型格式有stl、obj、ply、3mf等,每一種格式都有各自存儲自定義的數據格式、如頂點坐標、面片的頂點索引、面片的法矢量、還有顏色信息,也叫紋理坐標,復雜的還有線的數據信息等,常規的stl可以滿足絕大多數的用戶了。如stl格式,有二進制和ASCALL格式,分別對應不同的讀取方式,具體代碼或讀取方式請自行搜索。
2、模型渲染
模型渲染必須用到的工具是opengl,三維渲染的基本庫,很多三維渲染軟件都是基于他的,如unity3D,zbrush等優秀軟件,隨著三維技術的發展,越來越多的平臺逐漸支持opengl開發,以前三維引擎開發主要基于pc端,c++開發,自從glsl以后,大大降低了三維引擎的開發,web也集成了three.js、webGL等技術,不久后微信小程序也支持webGL技術,想在三維領域大展拳腳的童鞋們可要捉緊機會好好擼一把了。
以往的模型渲染通常是glbegin(xxx)開始,glend()結束繪制,簡單的模型渲染也可以運行的很好,但由于opengl是服務端與客戶端的關系,每次發送數據會導致渲染瓶頸,更多的時間浪費在數據傳輸之上,于是后來有了VBO(頂點數組)方式,一次性發送數據給服務端,多次渲染,大大提高渲染效率,從而降低大量渲染的卡頓問題,后面再者有了FBO的離線渲染方式,又一個提升性能的工具,使得opengl的生命力更加強大。
opengl還有一個更加強大的功能是GLSL著色器,可以自定義各種各樣的著色器,頂點著色器、細分著色器、幾何著色器、片元著色器,將各個渲染過程進行管線管理、組裝完成自己想要的效果,提供更加靈活的編程方式,大大提升了三維渲染引擎的開發效率、完成更加強大的渲染功能、如粒子群系統等,更多的細節請各自查閱相關知識,此處不多展開。
模型渲染涉及照相機、世界坐標系、相機坐標系、燈光、材質、紋理等各方面的基礎,要理解各種概念才能渲染出一個友好的界面,需要不斷的摸索研究,各種數據需要矩陣變換,矩陣計算時時刻刻知道當前是如何把控整個系統的。
3、模型剛性變換,平移、旋轉、縮放等
模型剛性變換涉及到矩陣運算相關知識,在opengl的世界里,主要涉及幾個矩陣是:視圖矩陣,模型變換矩陣,透視矩陣,其中模型變換矩陣就需要用到平移、旋轉、縮放的累加,具體的計算過程請自行查閱相關知識點。
世界坐標系下的所有操作,都會經過模型視圖矩陣、透視矩陣、裁剪矩陣轉化到二維屏幕坐標,顯示在窗口之上,同理,窗口之上的所有操作可以通過逆過程映射到三維坐標系中的數據,以進行相關的交互,如模型上面片的選取,點擊等操作。
4、切片功能
切片的概念,熟悉3D打印的童鞋就很清楚了。由于模型是三維的,3D打印技術是逐層打印的,切片就是將模型分層n層,每一層的都有固定的厚度,如光固化常規厚度為0.05,FDM的厚度為擠出機噴嘴的直徑,通過n層的堆積,最終打印出來整體的模型。
FMD的切片方式通常是將模型分層,現在比較流行的cura軟件,是基于curaengin引擎將模型slice分層,各層之間使用Clipper庫進行交集差集計算,得到最外部的輪廓,然后根據用戶交互判斷是否需要填充,計算皮膚厚度、計算最短走刀路徑等最終得到整個模型。
光固化通常是使用投影方式,將模型分割成n張圖片,圖片只有黑白兩種顏色,如黑色為非模型實體,白色為模型實體,每一層根據黑色白色進行打印,逐層添加最終生成整個模型。
SLM金屬粉末激光3D打印,切片后使用激光噴嘴,像FDM一樣走指定的軌跡,把整個模型填充成實體。SLM是屬于工業級的,精度非常高。
5、支撐功能(分別對懸空點、邊、面檢查并支撐)
由于3D打印是逐層打印的,層于層之間是連續的,但是由于模型在某些地方懸空,導致不能層層連續,就需要為模型提供支撐,使得模型打印過程中層層連續,提高打印成功率。由于模型的復雜性,往往很多模型不能提供自支撐的特點,所以3D打印的一個關鍵的功能就是支撐,合適的使用支撐會大大提高模型打印的成功率。但同時,由于支撐也是屬于材料,所以添加支撐的同時也會浪費更多的材料,再者支撐與模型接觸的地方會影響模型表面的光滑度,所以設計者要好好考慮,盡可能多的設計自支撐的結構,盡可能少用支撐。支撐參數也影響打印的成功率,如支撐時接觸點太小導致支撐點力不足,導致支撐斷裂模型失敗,如設置過大的接觸點,則導致支撐去除困難,模型表面受損嚴重。
其中完成了論文的點型、線性、柱狀支撐、輪廓支撐和網格支撐算法。其他細節還在完善中如蜂窩狀、鏤空交叉等,掃描填充的各種掃描路徑等。
其他支撐算法請查看:https://blog.csdn.net/LittleLittleFish_xyg/article/details/90474800
6、切片預覽功能(主要觀察切片截面情況、有時可輔助檢查支撐是否漏加)
切片預覽功能主要是給二次檢查錯誤的輔助功能。當切片后,先通過預覽功能,檢查懸空點、突變點,再對該部分結構添加合理的支撐,可以增大模型打印的成功率,也間接降低材料的浪費。
總結
以上是生活随笔為你收集整理的SLM激光切片软件开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity3d优化收集摘录
- 下一篇: ggplot2的自定义调色板