摘要:在数控加工图形仿真验证中,传统的图像空间离散方法提供的观察分析手段较少,限制了它的应用;而物体空间方法计算量大,不具有实时性。介绍一种在基本图像空间离散法的基础上对数据结构和算法作了改进的方法,一方面不会失去仿真实时性,另一方面为用户提供了更多且方便有效的分析观察手段,且具有物体空间方法的优点。
关键词:数控;CAD/CAM;NC验证;NC仿真
使用计算机模拟数控加工,对NC程序的运行进行图形仿真,以此检验NC程序和加工方法的正确性,是一个非常有益的尝试。但是,仿真技术涉及大量的计算,效率低、耗时多,不能用于实际生产中。离散的方法能使计算量大大降低,在物体空间离散毛坯和刀具能获得毛坯切削后的精确表示,有利于对切削结果进行有效的观察分析,更适用于NC程序的验证[1~3];Van Hook[4~6]采用图像空间离散法实现了加工过程的动态图形仿真,他使用Zbuffer消隐思想,将实体按图像空间的像素(pixel)离散,将计算简化为视线方向上的一维布尔运算,较好地解决了实时性的问题。
但是,传统的图像空间离散方法不能提供有效方便的观察分析手段,限制了它的应用。笔者根据Van Hook图像空间法的思想,对数据结构和算法作了改进,使得在不失去仿真实时性的前提下,为用户提供了更多、更方便有效的分析观察手段,而这些手段原本具有物体空间方法的特点。
1 Van Hook算法的基本思想
图像空间方法使用类似图形消隐的Zbuffer思想,将工件和刀具按屏幕的像素离散为Zbuffer结构。切削过程简化为沿视线方向上的一维布尔运算。本法将实体布尔运算和图形显示过程合为一体,使图形仿真有很高的实时性。
1.1 Zbuffer方法 (图片)
图1 Zbuffer方法说明 见图1,视线方向与屏幕垂直,沿视线方向将毛坯和刀具离散,在每一个屏幕像素上,刀具和毛坯表示为一个长方体,称为Dexel结构(即Zbuffer结构)。刀具和毛坯之关系有7种,此时,刀具切削毛坯的过程就变为两套Dexel结构的比较问题,具体的运算过程用以下的算法说明:
CASE 1:只有刀具,显示刀具;break;
CASE 2:毛坯遮挡刀具,显示毛坯;break;
CASE 3:刀具切削毛坯的后部,显示毛坯;break;
CASE 4:刀具切削毛坯的内部,显示毛坯;break;
CASE 5:刀具切削毛坯的前部,显示刀具;break;
CASE 6:刀具遮挡毛坯,显示刀具;break;
CASE 7:只有毛坯,显示毛坯;break;
对应于每一个像素的Dexel结构构成链表结构,可处理毛坯有洞和空腔的情况。切削计算实际上是发生在对应于同一个像素、分别表示毛坯和刀具的两个Dexel结构链表之间的布尔运算。
1.2 Dexel结构的生成(图片)
图2 Dexel结构与显示缓存结构和屏幕像素的对应关系 首先,定义观察坐标系(见图2):设毛坯为长方体,其中心位于坐标原点,以用户的视线方向(Xe,Ye,Ze)为Z1轴,XY平面上过原点且与Z1垂直的直线为Y1轴,再由Z1和Y1可以确定X1轴,X1Y1平面即为投影平面。
Dexel结构是在观察坐标系中建立的。因为屏幕上的像素点并不是对应于投影平面上的一点,而是一个小正方形。所以,应以正方形的中心为有效点,以视线方向(Xe,Ye,Ze)定义射线,它与物体求交而生成Dexel结构。
Dexel结构中的信息包括最近的Z值、最远的Z值、最近处的颜色、最远处的颜色以及指向下一个Dexel结构的指针。
1.3 边界问题(图片)
图3 边界点的计算 在求Dexel结构时,视线与毛坯求交的位置不同,有可能出现错误(见图3),图3中的3个点是不一样的。点A是毛坯的突出部分,计算涉及两个面,这一点对应柱体的厚度为零;点B属于两个面,但在计算时应看作一个点,柱体的厚度取决于其它面的计算结果;点C是毛坯轮廓上的点,对应柱体的厚度也为零。计算这种边界条件时,须认真控制计算误差,以保证不会出现错误。
2 算法的实现
基本的图像空间算法有很大的局限性。首先,当需要改变视点从另一方向观察时,需要重新计算;第二,它不能很好地推广到验证方面,因为不能充分地确定容差,尤其在工件的尺寸远大于容差或错误落在视区之外时;第三,差异的测量仅与一个任意选择的视线有关,而不是来自设计工件的模型数据。笔者对基本的图像空间算法作了改进,较好地解决了上述问题。
2.1 改变视点
能够改变观察位置,将有助于用户分析加工的正确性。但是,在基本的图像空间算法中,只要视点确定以后,数据结构也就确定了,仿真过程在这个数据结构上执行,即数据结构的生成只与视线方向有关,改变视点需要重新计算数据结构。
经过分析后发现,只要对当前的数据结构和算法稍加改进,就可以实现反向观察。因为每个Dexel结构都包含最远处的颜色信息,如果从反方向观察时,看到的颜色就是链表最后一项的颜色。但是,在切削计算和显示时必须区分当前的观察方向(正向或反向),为了使在反方向观察时依然能进行切削仿真,Dexel结构必须是双向链表。
另外,当保存多个同样的数据结构时,可以定义多个窗口和相应的观察方向,这样,可以向用户提供同时从几个方向观察加工过程的能力。事实上,如果定义两个窗口,并允许反向观察时,切削的大部分情况就可以表示出来了。在这种情况下,需要的存储空间和仿真时间都要多一些,因为需要保存和显示两套Dexel结构。
2.2 剖切观察
平行剖切是非常容易实现的,根据视线的方向和剖切平面(平行于任一个坐标平面),为每一个像素生成一个判定值,即Z值,在显示该像素时,将其Dexel结构中的Z值与判定值比较,以决定毛坯的哪一部分被显示出来。
用户选择任意剖切时,要求用户指定剖切平面和方向,同样需要根据视线的方向为每一个像素生成判定值,以决定毛坯的显示部位。用户必须用位于毛坯上的3个任意点来定义剖切面,如果用户选择的点不在剖切面上时,可以设定一个缺省值或指出错误。
2.3 数据测量
传统的图像空间离散方法被认为不能用于加工的验证中,因为数据的测量仅与一个任意选择的视线有关。但只要提高离散精度,就可为验证提供足够的信息,因为在毛坯与视线相交的每一点上,刀具的切削是足够精确的。因此可通过在屏幕上拾取点的方法得到毛坯在某一点的加工数据。
拾取点是屏幕上的像素点。利用生成和显示Dexel结构的算法,可以反算屏幕像素点对应的物体空间中的坐标,计算时应注意像素所对应的射线是每一个小正方形的中心。为了区分出当前用户拾取的点,要求将该像素以特殊的颜色显示。
拾取点的精度取决于毛坯的离散精度,即在投影平面上的采样频率。因为切削结果在样本点处是精确的,但在其它地方并没有提供任何信息。所以,增加样本点会提高精度,但这取决于用户对精度的要求。同时,增加样本点要求更多的存储空间和相对较长的仿真时间。因此,用户要在速度与精度之间折衷。
2.4 离散切削
切削的局部性和扫描线的相关性,有助于减少运算和显示的时间。在计算每一步的切削时,可以只考虑投影平面上与刀具有关的那部分Dexel结构。在任一步切削时,毛坯和刀具Dexel结构之间可以使用3种布尔运算的方法:
(1)求出每步切削时刀具的扫描体,用扫描体和毛坯的Dexel结构进行布尔运算。但为每步切削求出刀具扫描体的Dexel结构将影响实时效果,同时,当扫描体出现自交时计算将非常复杂。
(2)求出刀具全部切削时形成的扫描体,以这个扫描体的Dexel结构与毛坯进行布尔运算。但是,要求对切削的每一步进行实时显示时,将很难控制。
(3)在两个刀位点之间进行插值,在每一个插值点用毛坯和刀具的Dexel结构进行布尔运算。插值的步长由用户根据精度、时间和空间要求来确定。较之前两者,这种方法简便可靠、易于实现。
2.5 显示颜色值的确定
因为仿真的目的是以色调图的形式将加工过程模拟出来,并不追求图形的真实感效果。所以,笔者忽略光照模型,以减化颜色值的计算,这种忽略大大有助于产生实时效果,且在图形效果方面并未有大的影响。
为更好观察仿真效果,对刀具、夹具、毛坯及毛坯上切削新产生的表面都定义不同的颜色;考虑到刀具可能切削夹具的情况,也需定义一种颜色。同时,每种颜色也须有一定数量的灰度级。
通常设定的毛坯为多面体,在确定不同灰度时,根据法矢方向来计算:某点法矢与视线方向的夹角越小,亮度越大;夹角越小,颜色越暗。刀具可以用圆柱体(平底刀)或加上半球体(球头刀)来表示,确定灰度用与毛坯同样的方法。
切削后新产生的表面是观察的重点,为了表现出刀具(球头刀)在加工表面形成的波浪感,它的灰度级应当是比较多的。确定这种灰度需要刀具信息的帮助,切削后某一点的灰度定义为,切削时与该点接触的刀具上相应点的灰度值。
2.6 缩放
为了实现缩放功能,可以用加大样本点的方法,在求Dexel结构时,并不是按屏幕窗口的分辨率来计算,而是求出更多的Dexel结构,在显示时进行减色处理(见图4)。例如,对于256×256分辨率的窗口按1024×1024生成Dexel结构,通常以256×256显示,需要的时候,就可以将该图的任一部分放大4倍。(图片)
图4 缩放观察原理 当采用这种方法时,需要的存储空间更大,并且缩放的倍数和次数是固定的,这些都取决于用户确定的离散精度。多数情况下,多个Dexel结构中计算的颜色各不相同,显示一个像素时需要减色处理。当用4个Dexel结构对应一个像素时,减色的方法可以用以下的策略说明:①只有1种颜色,显示这种颜色;②有2种颜色,选择占有Dexel结构数目较多的颜色显示;数目相等时,按一定的优先级选择一种颜色;③有3种颜色,显示数目较多的颜色;④有4种颜色,按一定的优先级选择一种颜色。
当几种颜色占有Dexel结构的数目相等时,按这样的优先级选择颜色:夹具的干涉色、切削色、刀具色、毛坯色、夹具色。
因为仿真的目的在于发现加工程序的错误和干涉情况,所以,发生干涉的情况应优先表示出来,不能被忽略。加工毛坯的切削表面是用户观察的重点,也应优先显示。刀具尺寸往往远小于毛坯的尺寸,它应该比毛坯优先显示。
上述的这种基于图像空间离散法的仿真方法,在仿真的过程中,可以得到每一步切削的实体描述,它允许用户从反方向观察毛坯的情况和切削过程;或者,从开始用户就可选择多窗口的观察方式;也允许剖切和缩放的观察方法,这种方法的最大优点在于它的实时性非常高,显示处理时间只受到硬件及其驱动程序限制。同时,经过笔者的改进,它能较精确地确定毛坯上某一点的值,给用户提供了验证加工容差的能力。当离散的精度较高时,测量值是非常精确的,可以作为实际验证。图5是仿真中进行剖切观察的例子。(图片)
图5 剖切观察实例 这种方法的精度与视线方向和显示分辨率有关,它更适用于需要实时性较高和分析较严重错误的场合。
今后的研究应考虑多轴的情况,当前的方法不能完全用于多轴加工中,因为刀具轴向发生变化后,需要重新生成刀具体的离散结构,以用于下一步的切削。这个过程需要的时间较长,影响了仿真过程的实时性。同样,在加工中更换刀具类型和任意改变观察方向时,也会出现类似问题。
6/27/2005
|