计算机STL技术在铸造模型中的应用
2012-05-12王晓霞
王晓霞
(太原理工大学阳泉学院信息系,山西阳泉045000)
大家都知道,铸造[1]是制造类产业发展的基本条件之一。同时,它又是产品质量不合格、废品出产比较多的产业之一。就其原因来说,大部分废品的出现都是由于铸造模型制造不准确造成的。随着社会的发展和人们的需求,对产品质量要求越来越精,这就使得人们必须寻找出一种合适、精确的工具来提高产品精度,增加产品合格率。
近年来随着计算机图形图像学的发展,并广泛的将其应用于计算机辅助设计中,大大提高了产品的生产效率。图形图像学是铸造模型制造中比较突出的一项技术,在现代社会的激烈环境中,越来越受到人们的普遍关注。比较好的仿真系统可以从仿真的效果和解析得到的一系列数据中获得大量可用信息,以合适的图形图像的表示方法,没有误差同时又恰当地向需求的用户进行说明,为用户进行铸造提供依据。
本文通过对STL中的数据在计算机的存储结构、逻辑运算方法的解释和阐述,以达到使模型的制造流程人性化,制造精度更能达到人们的需求。
1 计算机图形学
计算机图像学(IP)是一门实现信息处理和加工功能的学科。它致力于怎样才能把人类社会中的各种图像用计算机准确描述出来、以及这些数据在计算机中如何进行存储、解析、处理和传输等。其比较前沿的技术有生活中采集的图像和生成图像的方法、图像进行重组、图像应变化得容易处理和图像通过某种压缩方法让计算机可以识别、解析中的边边角角的检查测量、如何对图像进行分化、以及图像在各行各业的应用等。
图形学(CG)是解决如何生成、计算并把图形显示的一门学科。它的内容有画面如何描述、造型如何设计、图形的准确反映、机器和人之间的对话——交互式方式[2]等。就当前来言,计算机图形学比较新的研究方面有用虚拟设备对现实生活的情景再现、许多物理现象用几何形式表述、科学计算过程通过屏幕逼真演算、对大自然景象的模仿、用仿生学再现真实情景等。
计算机图像学和图形学之间有着千丝万缕的联系。这两个学科所用的数据的存储结构是比较接近的,它们的公共问题都是如何用计算机对图像进行处理。但是,所不同的是,计算机图形学侧重于将现实中采集的信息和几何模型转换成图像,而图像处理则着重在于图像信息的处理与加工。
计算机图形图像技术在铸造方面的一个比较重要的应用就是实体造型技术[3]。实体造型技术是近来快速突崛起来的一种比较好的几何描述方法。这种方法在描述三维物体时具有不可忽视的优势——可以完全准确且不会产生歧义性的描述物体。在机械产业的许多方面,比如产品的构造和分布、解析和试测、产品投入生产等方面得到越来越广泛的应用,因而受到了机械制造及其它有关行业越来越多的重视,具有实体造型能力的CAD/CAM正快速涌入市场。
2 STL技术
STL(Stereo lithography)文件是三维模型经过三角化处理后得到的文件[4]。可能大多数人觉得这句话不太好理解;那么用一种通俗的解释来说,它就是将实体表面化分为若干个三角形的面。同时在化分时由于不同的人采用的精度不同,相应的三角形网格划分也不同。通常4个数据就可以准确描述某个三角形面,大多数人都知道对于三角形来说必定有三个顶点,那么这三个顶点就占据了这4个数据的3/4,剩下一个即为三角形面片的外法线矢量,不难想像,STL文件化分的三角形面越恰当地接近实体模型,它的精度就越高。
STL文件格式的规则如下:(1)三角形法向量的方向。对于所有的三角形面片,要求其法向量必须全部向外,3个顶点组成矢量的方向按照逆时针来确定(右手法则)。(2)邻接的三角形共用顶点。所有三角形面必须和与它邻接的三角形面共用两个顶点。(3)对实体的全部布满。对三维模型来说,其表面必须布满小三角形面,不得有一点点的遗漏。同时,布满的程度越高,将来建立的模型越精确。(4)三角形面顶点的取值。所有三角形面的顶点坐标要求必须为大于0,0和小于0均为不正确。
STL文件的基本思路是让许多空间三角形一步步慢慢地无限逼近三维实体表面。前面大家已经了解每个三角形面有3个顶点,每个顶点由坐标(x,y,z)表示,因为要知道材料包含在三角形的那条边上,所以所有三角形都有1个法向量,在这里我们用数学上常用的表示方法(Lx,Ly,Lz)。这样,STL提供了所有三角形顶点的绝对坐标值(相对坐标系的原点)和描述三角形方向的外法线矢量,且3个顶点的放置顺序与右手规则得到结果完全一致,拇指指向平面的外法线矢量。为了便于大多数人理解,下面以一个具体的例子来说明STL文件存储格式。有1个边长分别为(20,40,15)的长方体模型,如图 1:总共由(1,5,8),(4,3,2)……(5,6,8)等12个三角形面布满长方体的表面。在STL文件中的存储一般有两种格式,ASCII码和二进制格式。ASCII码格式如图1:
图1 STL文件数据存储结构图
solid try.stl(文件开始标志及此文件名)
facet normal 0.0,0.0,0.2(第 1 个三角面的外法线矢量,由 (1,5,8)组成的三角形为第一个三角形)
outer loop(第1个三角形面顶点定义开始)
vertex 20.0,40.0,15.0(第 1 个顶点坐标)
vertex 20.0,0.0,15.0(第 2 个顶点坐标)
vertex 0.0,0.0,0.0(第 3 个顶点坐标)
end loop(第一个三角形顶点定义结束)
end facet(三角形面定义结束)
…(第i个三角形面片)…(i的值在本例中从2到12)
endsolid try.stl(实体结束标志)
二进制格式是按位存储的,其方式为:前640个位用以作说明来用,其后16位存放所有三角形的个数,然后开始记录三角形数据(法线向量和3个顶点),记录采用实数,每个数值占用32个位,在每个三角形信息记录完毕后空16个位,以记录下1个三角形信息。
在实体中,需要用到曲面反求技术[5]。在这种技术中,实体通常被划分为苦干个相互有重叠的曲面面片[6],数据合成也即为面片相互间的拼接。在曲面拼接的几种方法中,有一种简单而实用的方法——人机交互方式,即为窗体上可以同时显示两个曲面面片,对曲面面片采用对话-交互式的方式进行平移或旋转,使两曲面位于相对比较准确的位置,以实现两曲面面片的拼接;如此反复多次致使整个实体拼接的完成。最后把拼接完成的相应数据输出,即完成实体的曲面拼接。
在曲面拼接中,三维显示是最重要的部分,如果将其完成,那么整个模型的建立相对来说就容易多了。同时它还可以为拼接过程提供一个可供人们观察的过程。要完成拼接工作,必须反复进行三角形的平移、旋转。根据平移、旋转原理可知:对一个三角形进行平移或旋转一次,必须将三角形的一个顶点与平移(旋转)矩阵相乘一次。比如一个STL文件有5 000个面片,每个三角形记录一个顶点,共记录了15 000万个顶点。
在后续的处理中,由于上述长方体模型是由六个表面的网格组成,这是与对STL文件的剖切不同的。在计算机处理中,网格的边长(x,y,z)很小,可以将其看为是一个点。对铸造实体模型的剖切,也就是用一个平面去截交实体模型,可用OpenGL绘制截面,就可以提取所得的截面上网格的信息,也就可以完成了对铸造实体模型的剖切。由于这部分内容涉及其它的技术,在这里本人就不详细叙述了。
利用STL技术可以实现正方体、圆、椭圆等实体模型构造。将这些实体添加到STL模型装配中,用户就可以在铸件上装配自己需要的铸件模型了。
3 结束语
针对铸造工艺中铸造模型手工不准确的情况下,造成材料的大量浪费。进而提供一种计算机STL技术建立模型,使其达到更精准的程度,是计算机在铸造工艺中的一项大的进步。
[1]范玉青,周建华.实体造型技术及其应用前景[N].中国计算机报,2004.
[2]孙家广.计算机图形学[M].第3版.北京:清华大学出版社,1998.
[3]欧阳春梅,丁秋林.实体造型技术[M].北京:国防工业出版社,1995.
[4]Stroud I,Xirouchakis P C.STL and Extensions[J].Advances in Engineering Software,2010,31(2):83 -95.
[5]李电生,钟约先,李江锋.曲面反求中测量数据人机交互合成及优化[J].机械设计与制造,2008,3:31 -33.
[6]赵吉宾,刘伟军,王越超.基于STL文件的实体分割算法研究[J].机械科学与技术,2005(24):131-134.