日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3D打印自动支撑算法

發布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3D打印自动支撑算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、背景

3D打印技術出現在20世紀90年代中期,其原理是使用三維掃描采集物件的三維數據,或直接使用計算機設計三維模型,利用軟件算法將物件模型分成若干層,打印機內裝有液體或粉末等打印材料,與電腦連接后,通過電腦控制把“打印材料”按照層的形狀一層層疊加起來,當每層材料固化后便打印下一層,從而形成成實物。

3D打印技術多大數十種,其中較常見的有FDM熔融沉積成型3D打印技術、SLA光固化快速成型3D打印技術、DLP數碼影像投射3D打印技術。FDM是將材料融化,通過噴嘴擠出,逐層堆疊,創建卓越的熱穩定性和耐化學性,并有良好的強度重量比。FDM適用于很多行業。SLA?出現較早,SLA是通過紫外光照射光敏樹脂固化成型。S通過一個激光發射器將光束射到反射鏡上,通過計算機控制反射鏡的角度,從而使光速發射到適當的點,定點誘導光敏樹脂原料的聚合。當一個點固化后,計算機控制激光束投向下一個點。DLPSLA?類似,但是DLP不像SLA產生單獨光斑。DLP通過圖像投影技術將一層影響通射到樹脂上,經過一段時間照射使光敏樹脂原料固化,其打印速度比SLA?快,打印精度也有所提高。

本文屬于3D打印技術領域,涉及一種自動添加支撐的算法。目的是提供一種檢測三維模型支撐點的算法,解決了3D打印中某些特殊結構因重力影響導致打印失敗的問題。

光固化快速成型3D打印示意圖

二、3D打印支撐

我們都知道3D打印技術的原理是,將材料一層一層的堆積,直至模型最終成型。下一層材料堆疊在上一層材料上,對于不規則的物體,下一層與上一層不一樣,并不是完美堆疊,可能有平移,那么這里就要考慮到一個重力的問題。由于材料受重力影響,有可能發生墜落,從而導致打印失敗。

3D打印支撐是指為了保持3D打印物品的物理平衡而產生的支架材料。文獻[1]提出一種斜壁結構自動支撐算法。

三維模型有若干三角形片面組成,文獻[2]中提到有以下四種情況要添加支撐:

(1)被支撐面與Z軸垂直

(2)被支撐面與Z軸形成一定夾角θ

(3)懸吊邊、懸吊點

(4)懸吊線

本文只考慮被支撐面與Z軸形成一定夾角θ及懸吊點兩種情況便可滿足大部分情況。

1. 45度傾斜

根據重力原理,如果一個物體的某個面與垂直線的角度大于45度且懸空,就有可能發生墜落,導致打印失敗。一般的經驗法則是:如果懸垂物與垂直方向傾斜的角度小于45度,那么可以不使用支撐結構;與垂直方向成45度以上角度的懸垂需要3D打印支撐結構。如下圖:第一個形狀不用添加支撐結構,第二第三個形狀需要添加支撐結構。

r

物體表面傾斜

2. 懸吊點

對于懸空的結構,由于下方沒有可以支撐它的結構,材料就會在重力的影響下下墜,輕則影響最終打印物的精準度,重則變成亂糟糟的一團完全打印失敗。同樣,在打印內含中空結構的物體時也會出現類似問題,導致打印失敗。

懸吊點

。

三、算法原理

算法的原理分為兩部分,第一部分查找滿足條件的懸吊點,第二部分查找滿足條件的支撐面,對于部分查找滿足條件的面使用經典的種子填充算法。

通過hash表建立拓撲結構,先遍歷所有三角形片面,找到懸吊點,再使用種子填充算法的變種算法,查找相鄰三角形,并判斷是否需要添加支撐,將需要添加支撐的三角形組成集合,并從集合中找到孤立點,對于孤立點必添加支撐,對于支撐點以外的區域,使用網格法均勻增加支撐點。

1. 三維模型文件格式簡介

常見的三維文件格式有abc、glTF、fbx、obj、dea、sts、3ds等,stl作為一種簡單的格式,使用非常方便,本文采樣這種格式進行測試。stl只能用來表示封閉的面或者體。stl文件有兩種:一種是ASCII明碼格式,另一種是二進制格式。

二進制STL文件用固定的字節數來給出三角面片的幾何信息。

文件起始的80個字節是文件頭,用于存貯文件名;

緊接著用 4 個字節的整數來描述模型的三角面片個數,

后面逐個給出每個三角面片的幾何信息。每個三角面片占用固定的50個字節,依次是:

3個4字節浮點數(角面片的法矢量)

3個4字節浮點數(1個頂點的坐標)

3個4字節浮點數(2個頂點的坐標)

3個4字節浮點數(3個頂點的坐標)個

三角面片的最后2個字節用來描述三角面片的屬性信息。

一個完整二進制STL文件的大小為三角形面片數乘以 50再加上84個字節。

2. 基于哈希表的三維模型拓撲結構

一個三維模型包含大量三角形數和其發向量。對于一個由三角形片構成的多面體,其每個三角形有三個頂點,每個頂點同時屬于若干個三角形,因此相鄰的三角形存在拓撲關系。在計算過程中,需要非常平凡地訪問三角形的頂點即法向量,這個過程非常耗時,因此建立三角形之間的拓撲結構,可大幅提高算法的速度。

文獻[3]提出一種基于紅黑樹的STL拓撲重建算法,紅黑樹時間復雜度是O(log n),本文選擇hash表作為數據結構,理想情況下時間復雜度是O(1),平均速度比紅黑樹更快。

對于點p(x,y,z),以p為key,以p相鄰的三角形的索引的集合為值,建立拓撲結構。哈希函數為:H(key)= p.x *1000 + p.y*1000 + p.z*1000;對于三角形t1、t2,其頂點為為p1,p2, p3, p4,以點為hash的鍵,以點相鄰的三角形為hash值,構建如下數據結構:

三維模型拓撲結構與hash表

3. 支撐面的識別

a. 種子填充

本文使用種子填充算法識別大片彼此相鄰的三角形,即支撐面。

種子填充算法,也叫泛洪算法——Flood Fill,是一種從連通區域內的一個種子點開始,逐漸向其四周擴展,填充整個區域的算法,多用于圖像處理中,用于填充具有不同顏色的連接的,顏色相似的區域,直到圖形的邊界。

種子填充算法有幾個重要的要素如下:

1.領域選擇策略。即確定周圍相鄰的三角形。

2.包含策略。即判斷一個三角形是否能納入當前連通區域,以及什么樣的三角形不能加入。

3.生長方式。深度優先還是廣度優先。

b. 領域選擇策略

相鄰的三角形即為領域,即兩個三角形共邊,則這另個三角形相鄰。判斷條件:三角形t1和t2有公共頂點,則t1和t2相鄰。

c. 包含策略

滿足添加支撐的添加即可包含,判斷條件:三角形t的法向量n,Z軸負方向p,p與n的夾角θ,有 θ > 45° 且 θ < 135°

三角形法向量與Z軸角

d. 生長方式

采用廣度優先策略搜索,即從某個三角形出發,首先判斷改三角形是否被包含,若被包含則依據拓撲結構,依次獲取相鄰的三角形的集合,并判斷該集合內的每三角形是否被包含,以次規則直至所有的相鄰的三角形都被訪問。

e. 識別支撐面的流程

  • 取一個未標記的種子三角形
  • 標記該三角形,檢測該三角形是否滿足支撐面判斷條件,滿足就添加到支撐面
  • 獲取相鄰三角形,并重復2
  • 若某一三角形不滿足則檢查支撐面的三角形面積和是否大于閾值
  • 若大于閾值則將支撐面輸出并繼續執行1
  • 重復1-5直到已經檢測所有三角形為止
  • 識別支撐面流程圖

    4. 懸吊點的識別

    由于模型表面通常都不是平整的面,會產生懸吊點結構。該點的Z坐標低于周圍點的Z坐標。判斷某一頂點為懸吊點,可通過模型拓撲結構,獲取改頂點所有相鄰點,通過比較Z坐標來確定。一般會設置一個閾值高度,當懸吊點與周圍相鄰點Z坐標差的平均值大于該閾值高度則識別為懸吊點。

    如圖,點1的Z坐標低于點2、點3、點4、點5、點6、點7,此時點1為懸吊點。

    懸吊點

    5. 支撐點的確定

    支撐點為最終輸出的可添加支撐的點,支撐點應滿足以下條件:

    (1)包含所有的懸吊點

    (2)覆蓋所有的支撐面

    (3)支撐點之間保持適當間隔,防止支撐粘連

    (4)支撐點應均勻分布,防止模型受力失衡倒塌

    6. 支撐生成步驟

    1、檢測模型的懸吊點并作為支撐點

    2、檢測模型的支撐區域

    5、對每個支撐區域xy平面投影

    6、用網格覆蓋平面投影

    7、判斷網格中是否有懸吊點,若沒有則標記網格

    8、遍歷所有網格,對沒有標記的網格取中心

    9、計算步驟8中網格中心與模型下表面的交點,作為支撐點

    10、生成支撐結構

    如下圖,支撐區域為不規則形狀,使用網格覆蓋支撐區域,點1為懸吊點,因此懸吊點的位置即為支撐點,其他網格以網格中心與模型下表面相交的點2、 3、 4 為支撐點。

    支撐區域投影

    四、計算實例

    實驗環境

    處理器

    Intel Core i7-9750 2.60GHz

    內存

    8.00GB

    操作系統

    64位 Windows 10

    實驗結果

    模型

    三角形數量

    支撐點數量

    耗時(毫秒)

    模型1

    204

    26

    37

    模型2

    185636

    74

    158

    模型3

    222838

    27

    238

    網格間隔:5毫米

    模型1

    模型2

    模型3

    參考文獻

    [1]黃小毛 葉春生 郭開波 莫鍵華 基于STL的斜壁結構支撐及自動生成算法 2009

    [2]王燕寧 3D打印支撐結構自動生成算法及實現 2018

    [3]安濤 戴寧 廖文和 袁天然 基于紅黑樹的STL數據快速拓撲重建算法 2008

    總結

    以上是生活随笔為你收集整理的3D打印自动支撑算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。