基于MFC框架的紫砂壶数字化实现
2023-04-06王晓晖狄超
王晓晖 狄超
关键词:C++建模;STL文件;3D打印;计算机应用
国外的数字化已经普及,通过对已有事物进行数字化,不仅能加快对该事物的生产,也能对其的分析提供许多帮助。犹他茶壶的数字化完成后,通过对数字化的数据进行公开,不仅使得犹他茶壶成了图形学的公认模型,也让其影响力进一步得到扩散。这种数字化带来的好处不仅如此,为了提升我国紫砂壶的影响力,以及为国产紫砂壶数字化提供基础,保证今后的紫砂壶制作更加科学有效,因此紫砂壶的数字化是十分必要的。
隨着科技的发展,使用草图去绘制茶壶的方法已经过时。而使用测量工具测量茶紫砂壶的轮廓数据,进而通过轮廓数据进行茶壶的数字化建模成了首选。通过对生成的数字化模型进行导出保存,不仅可以得到紫砂壶的数据文件,同时也可以将数据文件用于3D打印[1],从而打印出不同外观、不同类型的紫砂壶。
1 紫砂壶的基础数据采集
1.1 紫砂壶采集数据分析
紫砂壶的形状,大体可以分为两类,一类是回转体,如壶身、壶盖等;一类是非回转体,如壶柄、壶嘴等。面对这两类形状,都可以采用提取轮廓信息来实现,回转体采用提取回转部位的轮廓信息进行回转,便可得到整个回转体的信息。非回转体可以采用提取非回转体两侧的轮廓信息,改变其余控制点的高度来实现非回转体。因此,最紫砂壶的数据采集主要为回转体和非回转体的轮廓信息的提取。
1.2 测量工具采集
使用紫砂壶的侧视图作为测量对象,而对轮廓信息的拟合,一般采用PS钢笔工具进行实现,且钢笔工具本身为贝塞尔曲线。但钢笔工具不能提供所测量之后的控制点信息。因此,基于MFC框架使用C++编程实现贝塞尔曲线测量工具并显示出测量之后的控制点信息。通过对测量工具的实现,以及对不同紫砂壶的测量,得到了秦权壶、汉掇壶的轮廓信息(图1,图2) 。
2 建立紫砂壶的数字化模型
2.1 建模曲面
建模曲面选用贝塞尔曲面进行建模,贝塞尔曲面由贝塞尔曲线拓展而来[2]。最常用的是双三次贝塞尔曲面,通过拼接贝塞尔曲面可以构造复杂的曲面模型。双三次贝塞尔曲面由两组三次贝塞尔曲线交织而成。控制网格由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]。