王曉暉 狄超



關鍵詞:C++建模;STL文件;3D打印;計算機應用
國外的數字化已經普及,通過對已有事物進行數字化,不僅能加快對該事物的生產,也能對其的分析提供許多幫助。猶他茶壺的數字化完成后,通過對數字化的數據進行公開,不僅使得猶他茶壺成了圖形學的公認模型,也讓其影響力進一步得到擴散。這種數字化帶來的好處不僅如此,為了提升我國紫砂壺的影響力,以及為國產紫砂壺數字化提供基礎,保證今后的紫砂壺制作更加科學有效,因此紫砂壺的數字化是十分必要的。
隨著科技的發展,使用草圖去繪制茶壺的方法已經過時。而使用測量工具測量茶紫砂壺的輪廓數據,進而通過輪廓數據進行茶壺的數字化建模成了首選。通過對生成的數字化模型進行導出保存,不僅可以得到紫砂壺的數據文件,同時也可以將數據文件用于3D打印[1],從而打印出不同外觀、不同類型的紫砂壺。
1 紫砂壺的基礎數據采集
1.1 紫砂壺采集數據分析
紫砂壺的形狀,大體可以分為兩類,一類是回轉體,如壺身、壺蓋等;一類是非回轉體,如壺柄、壺嘴等。面對這兩類形狀,都可以采用提取輪廓信息來實現,回轉體采用提取回轉部位的輪廓信息進行回轉,便可得到整個回轉體的信息。非回轉體可以采用提取非回轉體兩側的輪廓信息,改變其余控制點的高度來實現非回轉體。因此,最紫砂壺的數據采集主要為回轉體和非回轉體的輪廓信息的提取。
1.2 測量工具采集
使用紫砂壺的側視圖作為測量對象,而對輪廓信息的擬合,一般采用PS鋼筆工具進行實現,且鋼筆工具本身為貝塞爾曲線。但鋼筆工具不能提供所測量之后的控制點信息。因此,基于MFC框架使用C++編程實現貝塞爾曲線測量工具并顯示出測量之后的控制點信息。通過對測量工具的實現,以及對不同紫砂壺的測量,得到了秦權壺、漢掇壺的輪廓信息(圖1,圖2) 。
2 建立紫砂壺的數字化模型
2.1 建模曲面
建模曲面選用貝塞爾曲面進行建模,貝塞爾曲面由貝塞爾曲線拓展而來[2]。最常用的是雙三次貝塞爾曲面,通過拼接貝塞爾曲面可以構造復雜的曲面模型。雙三次貝塞爾曲面由兩組三次貝塞爾曲線交織而成??刂凭W格由16個控制點構成,如圖3所示。可以看出貝塞爾曲面有16個控制點,其中12個控制點位于邊界上,只有角上的4個點位于曲面上。通過將紫砂壺的輪廓信息提取到的控制點信息輸入到貝塞爾曲面生成器中,就可以生成對應的貝塞爾曲線。具體地,回轉體曲面可以由輪廓信息去生成回轉體的控制點。這里用到了Bezier圓的特性,只要知道了空間中一個點的坐標,且已知魔術常數m≈0.5523,那么同z坐標下,四分之一圓的坐標滿足P0(0,1,z) ,P1(m,1,z) ,P2(1,m,z) ,P3(1,0,z) 。通過這樣的方法,可以實現由輪廓信息中一點,推出同z坐標下四分之一圓的控制點坐標信息,進而推出同z坐標下整個圓的控制點坐標信息,將所得的輪廓信息都推出同z坐標下的控制點,就可以得到整個回轉體曲面所需要的控制點信息,進而通過輸入控制點信息去生成回轉體曲面。而非回轉體部位,由于采集了兩側輪廓信息,也就是8個控制點,在這個基礎上,復制同樣的8個控制點,通過改變控制點的高度,抬升曲面,進而擬合非回轉體部位,如圖4所示。
2.2 曲面生成
雙三次貝塞爾曲面的建模,同樣基礎MFC框架使用C++編程實現,一般采用遞歸細分法繪制曲面網格,曲面細分用四叉樹遞歸算法,直到分割出的子曲面近似為平面四邊形,一個簡單的遞歸終止是均勻分割策略,即將所有曲面分割到相同的層次,這樣可以通過預先設定的遞歸深度來實現。當子曲面達到規定的遞歸深度時,可以用4個角點連成的平面四邊形來代替。
2.3 茶壺數字化模型
將控制點信息輸入貝塞爾曲面生成程序中,按照回轉體和非回轉體進行分類生成,每個面片輸入相應的16個控制點,由程序生成對應控制點的貝塞爾曲面。通過將紫砂壺不同部位分為不同的回轉體和非回轉體,同時設置遞歸深度,便可以得到紫砂壺的數字化模型。此項目采集了秦權壺和漢掇壺的輪廓信息,并生成了對應曲面的控制點,輸入到程序中,分別生成了對應的紫砂壺數字化模型,如圖5、圖6。
3 生成紫砂壺數字化文件
3.1 STL 文件
STL文件僅描述三維物體的表面幾何形狀,沒有顏色、材質貼圖或其他常見三維模型的屬性[3]。STL格式有ASCII格式和二進碼兩種形式。STL文件還可用于3D打印,STL文件的ASCII碼格式是逐行給出三角面片的幾何信息[4]。在這種格式文件中,三角面片的信息單元facet是一個帶矢量方向的三角面片,而STL三維模型就是由一系列這樣的三角面片構成的。其中每一個facet由7行數據組成,如圖7,其中facetnormal代表的是三角形面片的法矢量,而vertex代表是三角形三個頂點的坐標。
3.2 茶壺STL 文件的轉換
由于STL文件認定的坐標系方向是x軸向右,y軸向內,z軸向上,如圖8所示[5]。在C++建模茶壺中坐標系是x軸向右,y軸向上,z軸向外,如圖9所示。因此,在輸出坐標信息之前,需要將y,z坐標調換。將劃分得到的兩個三角形面片的數據按照STL文件格式進行輸出,以此類推,便可得到整個茶壺的STL文件。
4 紫砂壺的3D 打印
將生成的秦權壺STL文件和漢掇壺STL文件,放入到3D打印機中,得到秦權壺-一體化模型(圖10) 和漢掇壺-一體化模型(圖11) [6]。同時,由于數字化的便利,可以復制壺身數據,翻轉復制出壺身的法線,并降低其半徑,就可以得到壺內壁,同樣的方法可以得到壺蓋內壁等,將得到的數字化文件放入3D打印機中進行打印,得到了秦權壺-可分離模型(圖12) 。
5 結束語
項目通過建立了一套紫砂壺的數字化系統,創新性地基于MFC使用C++編程實現了整個數字化的流程,為我國國產紫砂壺的數字化提供了基礎。同時通過實現兩款經典的紫砂壺:秦權壺和漢掇壺的數字化,生成對應的數字化文件,并將其打印出成品,驗證了流程的可靠性,還創新性地打印出可分離的茶壺模型。生成的數字化文件,更加方便地在網上進行傳播[7],同時也能使得紫砂壺的生產更加科學有效[8]。