1 引言
随着机械零件制造复杂程度的提高,对数控代码正确性验证的需求越来越迫切,数控仿真系统利用计算机图形显示技术模拟实际加工过程,是验证数控加工程序正确性的有力工具之一[1>。国外已有比较成熟的数控加工仿真系统,如美国的CGTech公司的Vericut系统等[2>;国内众多研究机构也在该方面做了大量的研究工作,推出了比较成熟的数控仿真系统 ,但相比国外同类产品而言,在仿真过程动画的效果方面仍然存在一定的差距。因此作者在研究过程中,借鉴部分已有成果 [3>[4>,对传统的Z-MAP方法进行改进,设计并实现了一种基于OpenGL的模板缓存机制、绘制范围二次确定的局部绘制算法的三轴数控铣削加工仿真系统。
2 改进的Z-MAP方法
假设刀具平行于z轴,三轴数控铣削加工过程存在两个明显的特点[5>:1)只有工件的上表面才是加工表面;2)以工件底平面上任意一点为起点且平行于z轴的一条射线与工件的上表面有且仅有一个交点。
正是在这样的条件下,将Z-MAP方法应用于三轴数控铣削仿真系统的工件模型的几何表示才成为可能。
2.1 传统的Z-MAP方法
Hsu和Yang[6>提出的Z-MAP方法是一种特殊的基于离散模型的表示方法。该方法的基本思想是将原始的工件模型假定为长方体,将该长方体在XOY平面的投影得到的长方形按照一定精度离散为m×n个均匀分布的正方形网格,从而可以将整个工件模型离散为m×n个以各个正方形为底面的小长方体集合。
在引入Z-MAP方法建立工件的几何表示后,刀具对工件实际切削过程的几何表示就被近似表示为离散小长方体高度连续更新(降低)的过程,因此该方法被形象地称为“割草法”。
2.2 改进后的Z-MAP方法
作者在研究过程中采用了Z-MAP方法建立工件的几何表示,发现该方法仍然存在着不足。基于Z-MAP方法建立的工件模型仅仅是一系列不同高度的小长方体单元的集合,这样处理的后果是严重破坏了工件模型上表面的几何连续性,特别是当离散精度较低时,难以表达切削过程中工件上表面的局部曲面特征。因此作者在传统的Z-MAP方法的基础上进行了改进,设计了改进的Z-MAP方法,算法思想如下:
1)在按照一定的离散精度将工件模型的底平面离散为一系列的正方形网格后,以各网格点为起点、工件模型顶面为终点可以得到一系列的z向线段;
2)将所有的z向线段与工件模型上表面的交点按照一定的规则以三角形的形式连接构成的三角形网格面即可被视为工件模型的近似表示。
3 局部绘制技术
数控仿真过程中工件模型形状特征的改变仅在当前切削段的局部区域中,其他场景保持不变,如果仅对当前切削段局部区域进行局部绘制将会极大地减少参与消隐、光照和图形生成的数据量,并最终提高图形的刷新速率,获得每秒至少24帧的动画显示效果。
作者在数控仿真的研究过程中,设计并实现了复杂场景下基于Z-MAP方法的工件模型的局部绘制方法,其基本流程如下:
1)在设备坐标系下确定切削段刀具运动包络体在屏幕上的显示区域 Q;
2)世界坐标系下在切削最低平面上初选工件模型的矩形区域F,F是图形显示结果和Q发生重叠关系的最小区域;
3)在切削最低平面上精确排除上述矩形区域F中不与Q发生重叠关系的部分区域,并最终精确确定局部区域R;
4)使用模板缓存技术在屏幕显示区域Q中显示由精选得到的局部绘制区域R。
3.1 切削段刀具运动包络体的确定
世界坐标系中工件模型三角网格面局部绘制范围的确定过程,从本质上讲,是在工件模型空间中寻求可能会被某切削段的刀具运动包络体所遮挡的最大三角网格范围;而设备坐标系中图形局部绘制区域的确定也是寻求某切削段的刀具运动包络体的最大图形显示范围。精确意义上的刀具运动包络体的确定需要考虑刀具类型的影响,特别是球头刀包络体的组成比较复杂。但在实际确定该模型时,基于以下两个原因,可对模型的建立进行了适当的简化处理:1)由于世界坐标系和设备坐标系中所确定的都是最大局部区域或范围,因此将任何类型的刀具都简化为长方体模型;2)在实际切削过程中,工件外形的变化仅局限在某一切削段局部范围内,而且工件上表面是工件外形在高度方向上变化的最大范围。
根据上述分析,对切削段刀具运动包络体的确定本质上就是对刀具运动包络体顶点位置的确定。如图3-1所示,根据这八个顶点的坐标依次确定刀具运动包络体的六个表面就确定了该刀具运动包络体,而刀具运动包络体的确定是局部绘制算法的基础。
图3-1 切削段刀具运动包络体
3.2 世界坐标系中局部绘制区域的确定
世界坐标系中工件模型上表面三角网格面局部绘制区域确定的目的是查找出所有可能被刀具运动包络体所遮挡的最大范围。为了体现“最大范围”的原则,作者在算法设计中引入了“切削最低平面”的概念, “切削最低平面”的定义如下:
其中ZMIN是指所有切削过程全部结束后工件模型上表面三角网格面顶点中z坐标的最小值,而且工件模型空间中存在这样一个明确的规律:对于在“切削最低平面”上没有被刀具运动包络体所遮挡的三角网格面部分而言,虽然实际情况下该区域的三角网格面往往高于“切削最低平面”,但在这种情况下这些区域也绝对不可能被刀具运动包络体所遮挡,因此这部分区域在局部绘制时可以不予计算和显示。如图3-2中的由四条白色直线所确定的平面为“切削最低平面”,黑色长方体为刀具运动包络体。
为了确定局部绘制区域,最简单的方法是依次判断平行于X(或Y)方向的各条网格线的假想显示图形是否和刀具运动包络体的假想显示图形相交,如果相交则精确确定每条网格线上和刀具运动包络体显示图形的相贯区间,所有相贯区间的集合即为局部绘制区域。但是这种方法存在的问题是计算量大、计算效率低。为此作者采用了初选和精选两个阶段来提高计算效率。初选的目的是确定工件上表面和刀具运动包络体发生遮挡关系的最小矩形区域,图3-2中所示的四条白色粗线所包围的矩形区域即为初选结果;精选的目的是在初选所得矩形区域内排除绝对不发生遮挡关系的范围,而其余部分即为由于可能发生遮挡关系而需要重新绘制的区域,图3-2中所示的在刀具运动包络体中的白色区域部分即为精选结果。
3.3 屏幕图形局部绘制区域的确定
根据得到的刀具运动包络体,可以确定在屏幕中所改变的区域仅在该刀具运动包络体范围内,而在刀具运动包络体以外的区域将不发生改变,因此作者在研究和实现的过程中使用了OpenGL所提供的模板缓存机制来限制屏幕的绘制范围。
OpenGL所提供的模板缓存将绘制限制在屏幕的某些部分进行。模板缓存可以保持屏幕上某些部分的图形不变化,而其他部分仍然可以进行正常的图形显示[7>。在三轴数控铣削加工仿真中,局部绘制的区域只可能在当前切削段刀具运动包络体中,因此将由当前切削段刀具运动包络体在屏幕上的显示区域设置为模板。
3.4 局部绘制的完整流程
步骤1:清空模板缓存;
步骤2:启用深度缓存和模板缓存画刀具运动包络体,并且设置颜色缓存中的信息为不能修改,不显示所画的刀具运动包络体,但相应的模板缓存中的信息设置为1;
步骤3:开启深度缓存,绘制一个远平面;
步骤4:设置颜色缓存为可以写入,绘制工件模型改变部分。
在数控加工图形仿真过程中,要使局部重绘区域的图形有正确的消隐效果,就要将工件模型在屏幕所确定区域的深度信息设置为最大值。OpenGL没有提供修改局部区域深度信息的功能,因此作者使用绘制远平面的方法修改由工件模型所确定的包络体的深度信息。由于该远平面只是用于修改深度信息的一个媒介,因此不需要显示在屏幕上。
4 结论
作者根据工件模型的几何表示和局部绘制技术实现了三轴数控铣削仿真系统,现以半径为4的球头刀铣削一个半圆柱形的零件为例在三轴数控铣削加工仿真系统进行了实验。当工件模型的离散精度为0.8时,工件模型上表面三角网格顶点个数为187×300个,使用全局绘制方法刷新速率为每秒(28.723±1)帧,而使用局部绘制方法刷新速率为每秒(67.703±1)帧,效果图如图4-1所示。当工件模型的离散精度为0.5时,工件模型上表面三角网格顶点个数为300×480个,使用局部绘制方法刷新速率为每秒(10.264±1)帧,使用局部绘制方法刷新速率为每秒(64.170±1)帧,效果图如图4-2所示。
图4-1 离散精度为0.8时仿真效果图
图4-2 离散精度为0.5时仿真效果图
(转载)