本發明屬于三維打印領域,特別涉及一種三維打印方法及系統。
背景技術:借助于計算機控制和快速成型材料等技術的發展,三維打印成為當前工業設計、制造行業的熱門話題,通過計算機控制噴頭,現有技術已可以成功地將計算機虛擬設計的三維數字模型打印成真實的物品。三維打印是一個將虛擬模型通過逐層打印構造成實體物品的過程,在將虛擬轉化為現實時需要面對虛擬設計中所未考慮的實際物理性質的影響,典型地如物體的重力、重心、體積、各方向長度以及打印環境等因素,都可能影響成品的實際效果。在三維打印時,起始打印方向對成品率有較大影響,對于不太規則的物體,打印過程中重力會逐漸產生作用影響物體的穩定性,因而打印方向不對可能會造成打印失敗和浪費材料等結果。例如,在打印如圖1所示的物體時,如果選擇了左側方案為打印方向,則物體打印過程中重心穩定,效果最佳;如果選擇了右側方案為打印方向,則因為重心不穩很難保證模型和打印平板的貼合,打印很可能會失敗。為解決上述問題,現有技術一般會在用戶選定模型后再讓用戶選擇起始打印方向。在人工設定的情況下,打印方向的選擇很需要經驗,專業的工程師一般可以根據經驗選擇一個合適的打印方向;越有經驗的工程師,選擇的方向越理想,從而可得到更好的打印效果。然而,個人消費者用戶一般沒有很多三維打印經驗,特別是初學者,經驗更少,往往使用默認的模型打印方向,既Z軸向上。通常專門針對三維打印而設計的模型為了方便打印,設計完成的默認方向已經是最優方向;但是,更多的三維數字模型本身并不是為三維打印所設計的,因此很多時候三維打印方向未必為最優方向,大大影響了三維打印的成品率。
技術實現要素:本發明的目的是提供一種三維模型預處理的三維打印技術,在向三維打印機輸出三維形體時,通過分析和處理三維數字模型,確定合適的打印方向;采用本發明的技術方案可大幅優化三維打印效果。根據本發明的一個方面,提供了一種三維打印方法,包括步驟:讀取模型數據,確定模型形狀,按默認打印方向預置模型;判斷在當前打印方向下模型是否超出打印體積和/或模型是否需要支撐;若模型超出打印體積,則遍歷旋轉角度篩選邊界距離最小的打印方向作為實際打印方向;若模型需要支撐,則利用支撐系統生成算法篩選支撐體積最小且底面積較大的打印方向作為實際打印方向;若上述兩種情況均不存在,則以默認打印方向作為實際打印方向;按照實際打印方向重新配置模型數據,控制噴頭按照實際打印方向進行三維打印。基于上述方法,優選地,所述遍歷旋轉角度篩選包括步驟:在默認打印方向下將模型的中心平移到打印體積的中心;進行邊界檢查,定義第一目標函數為在打印空間以外的模型點到打印空間矩形邊界的距離,計算默認打印方向下第一目標函數值;以二分法調整旋轉角度進行遍歷,分別計算各旋轉角度下的第一目標函數值;若在遍歷過程中出現第一目標函數值為0的情況,則直接以當前旋轉角度對應方向作為實際打印方向;若遍歷結束也無第一目標函數值為0的情況,則以第一目標函數值最小的旋轉角度縮小模型并以其對應方向作為實際打印方向。基于上述方法,優選地,所述利用支撐系統生成算法篩選包括步驟:定義第二目標函數為需要生成的支撐體積,讀取模型的各個三角形,判斷其是否滿足作為底面的條件;若某三角形可作為底面,則將該三角形及其法矢量加入備選打印方向集合;對于備選打印方向集合中的每個打印方向按底面積大小排序,隨后計算每個打印方向第二目標函數值,以第二目標函數值最小的作為實際打印方向。基于上述方法,優選地,三角形面滿足作為底面的條件包括:以三角形所在的面為xy平面,以三角形法矢量的反向為z軸,以三角形中心為原點,建立坐標系,將模型旋轉至該坐標系下;如果模型全部點的z值都不小于0,那么此三角形可以作為底面。基于上述方法,優選地,所述每個打印方向按底面積大小排序包括:對于每個打印方向,計算屬于這個方向的三角形面積之和作為該方向的底面積并以此排序。基于上述方法,優選地,所述以二分法調整旋轉角度進行遍歷包括:預設模型的初始旋轉角度和最小旋轉角度,預設當前旋轉角度為初始旋轉角度;遍歷時,每次按當前旋轉角度的大小旋轉模型,計算旋轉后的第一目標函數值并與旋轉前第一目標函數值比較,選擇值較小的作為新的方向;在新的方向的基礎上繼續旋轉模型,直至遍歷完當前旋轉角度下的所有方向;若未出現第一目標函數值為0的情況,在將當前旋轉角度的值乘以1/2后重復上述遍歷;若在上述遍歷過程中出現第一目標函數值為0的情況、或者當前旋轉角度小于最小旋轉角度,則結束遍歷輸出第一目標函數值為0或最小的方向。基于上述方法,優選地,所述方法中,預設可接受的最小底面積值,該最小面積值由支撐是否牢固決定,小于此值的底面積不予考慮。根據本發明的另一個方面,還同時提供了一種三維打印系統,包括:預置模塊,用于讀取模型數據,確定模型形狀,按默認打印方向預置模型;判斷模塊,用于判斷在當前打印方向下模型是否超出打印體積和/或模型是否需要支撐;旋轉優化模塊,用于在模型超出打印體積時,遍歷旋轉角度篩選邊界距離最小的打印方向作為實際打印方向;支撐優化模塊,用于在模型需要支撐時,利用支撐系統生成算法篩選支撐體積最小且底面積較大的打印方向作為實際打印方向;默認打印模塊,用于在上述兩種情況均不存在時,以默認打印方向作為實際打印方向;打印控制模塊,用于按照實際打印方向重新配置模型數據,控制噴頭按照實際打印方向進行三維打印。基于上述系統,優選地,所述旋轉優化模塊包括:平移模塊,用于在默認打印方向下將模型的中心平移到打印體積的中心;檢查模塊,用于進行邊界檢查,定義第一目標函數為在打印空間以外的模型點到打印空間矩形邊界的距離,計算默認打印方向下第一目標函數值;遍歷模塊,用于以二分法調整旋轉角度進行遍歷,分別計算各旋轉角度下的第一目標函數值;第一輸出模塊,用于在遍歷過程中出現第一目標函數值為0的情況時,直接以當前旋轉角度對應方向作為實際打印方向;或者在遍歷結束也無第一目標函數值為0的情況時,以第一目標函數值最小的旋轉角度縮小模型并以其對應方向作為實際打印方向。基于上述系統,優選地,所述支撐優化模塊包括:...