① 数控技术
1数控编程及其发展
数控编程是目前CAD/CAPP/CAM系统中最能明显发挥效益的环节之一,其在实现设计加工自动化、提高加工精度和加工质量、缩短产品研制周期等方面发挥着重要作用。在诸如航空工业、汽车工业等领域有着大量的应用。由于生产实际的强烈需求,国内外都对数控编程技术进行了广泛的研究,并取得了丰硕成果。下面就对数控编程及其发展作一些介绍。
1.1数控编程的基本概念
数控编程是从零件图纸到获得数控加工程序的全过程。它的主要任务是计算加工走刀中的刀位点(cutterlocationpoint简称CL点)。刀位点一般取为刀具轴线与刀具表面的交点,多轴加工中还要给出刀轴矢量。
1.2数控编程技术的发展概况
为了解决数控加工中的程序编制问题,50年代,MIT设计了一种专门用于机械零件数控加工程序编制的语言,称为APT(AutomaticallyProgrammedTool)。其后,APT几经发展,形成了诸如APTII、APTIII(立体切削用)、APT(算法改进,增加多坐标曲面加工编程功能)、APTAC(Advancedcontouring)(增加切削数据库管理系统)和APT/SS(SculpturedSurface)(增加雕塑曲面加工编程功能)等先进版。
采用APT语言编制数控程序具有程序简炼,走刀控制灵活等优点,使数控加工编程从面向机床指令的“汇编语言”级,上升到面向几何元素.APT仍有许多不便之处:采用语言定义零件几何形状,难以描述复杂的几何形状,缺乏几何直观性;缺少对零件形状、刀具运动轨迹的直观图形显示和刀具轨迹的验证手段;难以和CAD数据库和CAPP系统有效连接;不容易作到高度的自动化,集成化。
针对APT语言的缺点,1978年,法国达索飞机公司开始开发集三维设计、分析、NC加工一体化的系统,称为为CATIA。随后很快出现了象EUCLID,UGII,INTERGRAPH,Pro/Engineering,MasterCAM及NPU/GNCP等系统,这些系统都有效的解决了几何造型、零件几何形状的显示,交互设计、修改及刀具轨迹生成,走刀过程的仿真显示、验证等问题,推动了CAD和CAM向一体化方向发展。到了80年代,在CAD/CAM一体化概念的基础上,逐步形成了计算机集成制造系统(CIMS)及并行工程(CE)的概念。目前,为了适应CIMS及CE发展的需要,数控编程系统正向集成化和智能化夫发展。
在集成化方面,以开发符合STEP()标准的参数化特征造型系统为主,目前已进行了大量卓有成效的工作,是国内外开发的热点;在智能化方面,工作刚刚开始,还有待我们去努力。
2 NC刀具轨迹生成方法研究发展现状
数控编程的核心工作是生成刀具轨迹,然后将其离散成刀位点,经后置处理产生数控加工程序。下面就刀具轨迹产生方法作一些介绍。
2.1基于点、线、面和体的NC刀轨生成方法
CAD技术从二维绘图起步,经历了三维线框、曲面和实体造型发展阶段,一直到现在的参数化特征造型。在二维绘图与三维线框阶段,数控加工主要以点、线为驱动对象,如孔加工,轮廓加工,平面区域加工等。这种加工要求操作人员的水平较高,交互复杂。在曲面和实体造型发展阶段,出现了基于实体的加工。实体加工的加工对象是一个实体(一般为CSG和BREP混合表示的),它由一些基本体素经集合运算(并、交、差运算)而得。实体加工不仅可用于零件的粗加工和半精加工,大面积切削掉余量,提高加工效率,而且可用于基于特征的数控编程系统的研究与开发,是特征加工的基础。
实体加工一般有实体轮廓加工和实体区域加工两种。实体加工的实现方法为层切法(SLICE),即用一组水平面去切被加工实体,然后对得到的交线产生等距线作为走刀轨迹。本文从系统需要角度出发,在ACIS几何造型平台上实现了这种基于点、线、面和实体的数控加工。
2.2基于特征的NC刀轨生成方法
参数化特征造型已有了一定的发展时期,但基于特征的刀具轨迹生成方法的研究才刚刚开始。特征加工使数控编程人员不在对那些低层次的几何信息(如:点、线、面、实体)进行操作,而转变为直接对符合工程技术人员习惯的特征进行数控编程,大大提高了编程效率。
W.R.Mail和A.J.Mcleod在他们的研究中给出了一个基于特征的NC代码生成子系统,这个系统的工作原理是:零件的每个加工过程都可以看成对组成该零件的形状特征组进行加工的总和。那么对整个形状特征或形状特征组分别加工后即完成了零件的加工。而每一形状特征或形状特征组的NC代码可自动生成。目前开发的系统只适用于2.5D零件的加工。
LeeandChang开发了一种用虚拟边界的方法自动产生凸自由曲面特征刀具轨迹的系统。这个系统的工作原理是:在凸自由曲面内嵌入一个最小的长方块,这样凸自由曲面特征就被转换成一个凹特征。最小的长方块与最终产品模型的合并就构成了被称为虚拟模型的一种间接产品模型。刀具轨迹的生成方法分成三步完成:(1)、切削多面体特征;(2)、切削自由曲面特征;(3)、切削相交特征。
JongYunJung研究了基于特征的非切削刀具轨迹生成问题。文章把基于特征的加工轨迹分成轮廓加工和内区域加工两类,并定义了这两类加工的切削方向,通过减少切削刀具轨迹达到整体优化刀具轨迹的目的。文章主要针对几种基本特征(孔、内凹、台阶、槽),讨论了这些基本特征的典型走刀路径、刀具选择和加工顺序等,并通过IP(InterProgramming)技术避免重复走刀,以优化非切削刀具轨迹。另外,JongYunJong还在他1991年的博士论文中研究了制造特征提取和基于特征的刀具及刀具路径。
特征加工的基础是实体加工,当然也可认为是更高级的实体加工。但特征加工不同于实体加工,实体加工有它自身的局限性。特征加工与实体加工主要有以下几点不同:
从概念上讲,特征是组成零件的功能要素,符合工程技术人员的操作习惯,为工程技术人员所熟知;实体是低层的几何对象,是经过一系列布尔运算而得到的一个几何体,不带有任何功能语义信息;实体加工往往是对整个零件(实体)的一次性加工。但实际上一个零件不太可能仅用一把刀一次加工完,往往要经过粗加工、半精加工、精加工等一系列工步,零件不同的部位一般要用不同的刀具进行加工;有时一个零件既要用到车削,也要用到铣削。因此实体加工主要用于零件的粗加工及半精加工。而特征加工则从本质上解决了上述问题;特征加工具有更多的智能。对于特定的特征可规定某几种固定的加工方法,特别是那些已在STEP标准规定的特征更是如此。如果我们对所有的标准特征都制定了特定的加工方法,那么对那些由标准特征够成的零件的加工其方便性就可想而知了。倘若CAPP系统能提供相应的工艺特征,那么NCP系统就可以大大减少交互输入,具有更多的智能。而这些实体加工是无法实现的;
特征加工有利于实现从CAD、CAPP、NCP及CNC系统的全面集成,实现信息的双向流动,为CIMS乃至并行工程(CE)奠定良好的基础;而实体加工对这些是无能为力的。
2.3现役几个主要CAD/CAM系统中的NC刀轨生成方法分析
现役CAM的构成及主要功能
目前比较成熟的CAM系统主要以两种形式实现CAD/CAM系统集成:一体化的CAD/CAM系统(如:UGII、Euclid、Pro/ENGINEER等)和相对独立的CAM系统(如:Mastercam、Surfcam等)。前者以内部统一的数据格式直接从CAD系统获取产品几何模型,而后者主要通过中性文件从其它CAD系统获取产品几何模型。然而,无论是哪种形式的CAM系统,都由五个模块组成,即交互工艺参数输入模块、刀具轨迹生成模块、刀具轨迹编辑模块、三维加工动态仿真模块和后置处理模块。下面仅就一些着名的CAD/CAM系统的NC加工方法进行讨论。
UGII加工方法分析
一般认为UGII是业界中最好,最具代表性的数控软件。其最具特点的是其功能强大的刀具轨迹生成方法。包括车削、铣削、线切割等完善的加工方法。其中铣削主要有以下功能:
、PointtoPoint:完成各种孔加工;
、PanarMill:平面铣削。包括单向行切,双向行切,环切以及轮廓加工等;
、FixedContour:固定多轴投影加工。用投影方法控制刀具在单张曲面上或多张曲面上的移动,控制刀具移动的可以是已生成的刀具轨迹,一系列点或一组曲线;
、VariableContour:可变轴投影加工;
、Parameterline:等参数线加工。可对单张曲面或多张曲面连续加工;
、ZigZagSurface:裁剪面加工;
、RoughtoDepth:粗加工。将毛坯粗加工到指定深度;
、CavityMill:多级深度型腔加工。特别适用于凸模和凹模的粗加工;
、SequentialSurface:曲面交加工。按照零件面、导动面和检查面的思路对刀具的移动提供最大程度的控制。
EDSUnigraphics还包括大量的其它方面的功能,这里就不一一列举了。
STRATA加工方法分析
STRATA是一个数控编程系统开发环境,它是建立在ACIS几何建模平台上的。
它为用户提供两种编程开发环境,即NC命令语言接口和NC操作C++类库。它可支持三轴铣削,车削和线切割NC加工,并可支持线框、曲面和实体几何建模。其NC刀具轨迹生成方法是基于实体模型。STRATA基于实体的NC刀具轨迹生成类库提供的加工方法包括:
ProfileToolpath:轮廓加工;
AreaClearToolpath:平面区域加工;
SolidProfileToolpath:实体轮廓加工;
SolidAreaClearToolpath:实体平面区域加工;
SolidFaceToolPath:实体表面加工;
SolidSliceToolPath:实体截平面加工;
LanguagebasedToolpath:基于语言的刀具轨迹生成。
其它的CAD/CAM软件,如Euclid,Cimitron,CV,CATIA等的NC功能各有千秋,但其基本内容大同小异,没有本质区别。
2.4现役CAM系统刀轨生成方法的主要问题
按照传统的CAD/CAM系统和CNC系统的工作方式,CAM系统以直接或间接(通过中性文件)的方式从CAD系统获取产品的几何数据模型。CAM系统以三维几何模型中的点、线、面、或实体为驱动对象,生成加工刀具轨迹,并以刀具定位文件的形式经后置处理,以NC代码的形式提供给CNC机床,在整个CAD/CAM及CNC系统的运行过程中存在以下几方面的问题:
CAM系统只能从CAD系统获取产品的低层几何信息,无法自动捕捉产品的几何形状信息和产品高层的功能和语义信息。因此,整个CAM过程必须在经验丰富的制造工程师的参与下,通过图形交互来完成。如:制造工程师必须选择加工对象(点、线、面或实体)、约束条件(装夹、干涉和碰撞等)、刀具、加工参数(切削方向、切深、进给量、进给速度等)。整个系统的自动化程度较低。
在CAM系统生成的刀具轨迹中,同样也只包含低层的几何信息(直线和圆弧的几何定位信息),以及少量的过程控制信息(如进给率、主轴转速、换刀等)。因此,下游的CNC系统既无法获取更高层的设计要求(如公差、表面光洁度等),也无法得到与生成刀具轨迹有关的加工工艺参数。
CAM系统各个模块之间的产品数据不统一,各模块相对独立。例如刀具定位文件只记录刀具轨迹而不记录相应的加工工艺参数,三维动态仿真只记录刀具轨迹的干涉与碰撞,而不记录与其发生干涉和碰撞的加工对象及相关的加工工艺参数。
CAM系统是一个独立的系统。CAD系统与CAM系统之间没有统一的产品数据模型,即使是在一体化的集成CAD/CAM系统中,信息的共享也只是单向的和单一的。CAM系统不能充分理解和利用CAD系统有关产品的全部信息,尤其是与加工有关的特征信息,同样CAD系统也无法获取CAM系统产生的加工数据信息。这就给并行工程的实施带来了困难 。
3数控仿真技术
3.1计算机仿真的概念及应用
从工程的角度来看,仿真就是通过对系统模型的实验去研究一个已有的或设计中的系统。分析复杂的动态对象,仿真是一种有效的方法,可以减少风险,缩短设计和制造的周期,并节约投资。计算机仿真就是借助计算机,利用系统模型对实际系统进行实验研究的过程。它随着计算机技术的发展而迅速地发展,在仿真中占有越来越重要的地位。计算机仿真的过程可通过图1所示的要素间的三个基本活动来描述:
建模活动是通过对实际系统的观测或检测,在忽略次要因素及不可检测变量的基础上,用物理或数学的方法进行描述,从而获得实际系统的简化近似模型。这里的模型同实际系统的功能与参数之间应具有相似性和对应性。
仿真模型是对系统的数学模型(简化模型)进行一定的算法处理,使其成为合适的形式(如将数值积分变为迭代运算模型)之后,成为能被计算机接受的“可计算模型”。仿真模型对实际系统来讲是一个二次简化的模型。
仿真实验是指将系统的仿真模型在计算机上运行的过程。仿真是通过实验来研究实际系统的一种技术,通过仿真技术可以弄清系统内在结构变量和环境条件的影响。
计算机仿真技术的发展趋势主要表现在两个方面:应用领域的扩大和仿真计算机的智能化。计算机仿真技术不仅在传统的工程技术领域(航空、航天、化工等方面)继续发展,而且扩大到社会经济、生物等许多非工程领域,此外,并行处理、人工智能、知识库和专家系统等技术的发展正影响着仿真计算机的发展。
数控加工仿真利用计算机来模拟实际的加工过程,是验证数控加工程序的可靠性和预测切削过程的有力工具,以减少工件的试切,提高生产效率。
3.2数控仿真技术的研究现状
数控机床加工零件是靠数控指令程序控制完成的。为确保数控程序的正确性,防止加工过程中干涉和碰撞的发生,在实际生产中,常采用试切的方法进行检验。但这种方法费工费料,代价昂贵,使生产成本上升,增加了产品加工时间和生产周期。后来又采用轨迹显示法,即以划针或笔代替刀具,以着色板或纸代替工件来仿真刀具运动轨迹的二维图形(也可以显示二维半的加工轨迹),有相当大的局限性。对于工件的三维和多维加工,也有用易切削的材料代替工件(如,石蜡、木料、改性树脂和塑料等)来检验加工的切削轨迹。但是,试切要占用数控机床和加工现场。为此,人们一直在研究能逐步代替试切的计算机仿真方法,并在试切环境的模型化、仿真计算和图形显示等方面取得了重要的进展,目前正向提高模型的精确度、仿真计算实时化和改善图形显示的真实感等方向发展。
从试切环境的模型特点来看,目前NC切削过程仿真分几何仿真和力学仿真两个方面。几何仿真不考虑切削参数、切削力及其它物理因素的影响,只仿真刀具工件几何体的运动,以验证NC程序的正确性。它可以减少或消除因程序错误而导致的机床损伤、夹具破坏或刀具折断、零件报废等问题;同时可以减少从产品设计到制造的时间,降低生产成本。切削过程的力学仿真属于物理仿真范畴,它通过仿真切削过程的动态力学特性来预测刀具破损、刀具振动、控制切削参数,从而达到优化切削过程的目的。
几何仿真技术的发展是随着几何建模技术的发展而发展的,包括定性图形显示和定量干涉验证两方面。目前常用的方法有直接实体造型法,基于图像空间的方法和离散矢量求交法。
3.3直接实体造型法
这种方法是指工件体与刀具运动所形成的包络体进行实体布尔差运算,工件体的三维模型随着切削过程被不断更新。
Sungurtekin和Velcker开发了一个铣床的模拟系统。该系统采用CSG法来记录毛坯的三维模型,利用一些基本图元如长方体、圆柱体、圆锥体等,和集合运算,特别是并运算,将毛坯和一系列刀具扫描过的区域记录下来,然后应用集合差运算从毛坯中顺序除去扫描过的区域。所谓被扫过的区域是指切削刀具沿某一轨迹运动时所走过的区域。在扫描了每段NC代码后显示变化了的毛坯形状。
Kawashima等的接合树法将毛坯和切削区域用接合树(graftree)表示,即除了空和满两种结点,边界结点也作为八叉树(octtree)的叶结点。边界结点包含半空间,结点物体利用在这些半空间上的CSG操作来表示。接合树细分的层次由边界结点允许的半空间个数决定。逐步的切削仿真利用毛坯和切削区域的差运算来实现。毛坯的显示采用了深度缓冲区算法,将毛坯划分为多边形实现毛坯的可视化。
用基于实体造型的方法实现连续更新的毛坯的实时可视化,耗时太长,于是一些基于观察的方法被提出来。
3.4基于图像空间的方法
这种方法用图像空间的消隐算法来实现实体布尔运算。VanHook采用图象空间离散法实现了加工过程的动态图形仿真。他使用类似图形消隐的zbuffer思想,沿视线方向将毛坯和刀具离散,在每个屏幕象素上毛坯和刀具表示为沿z轴的一个长方体,称为Dexel结构。刀具切削毛坯的过程简化为沿视线方向上的一维布尔运算,见图3,切削过程就变成两者Dexel结构的比较:
CASE1:只有毛坯,显示毛坯,break;
CASE2:毛坯完全在刀具之后,显示刀具,break;
CASE3:刀具切削毛坯前部,更新毛坯的dexel结构,显示刀具,break;
CASE4:刀具切削毛坯内部,删除毛坯的dexel结构,显示刀具,break;
CASE5:刀具切削毛坯内部,创建新的毛坯dexel结构,显示毛坯,break;
CASE6:刀具切削毛坯后部,更新毛坯的dexel结构,显示毛坯,break;
CASE7:刀具完全在毛坯之后,显示毛坯,break;
CASE8:只有刀具,显示刀具,break。
这种方法将实体布尔运算和图形显示过程合为一体,使仿真图形显示有很好的实时性。
Hsu和Yang提出了一种有效的三轴铣削的实时仿真方法。他们使用zmap作为基本数据结构,记录一个二维网格的每个方块处的毛坯高度,即z向值。这种数据结构只适用于刀轴z向的三轴铣削仿真。对每个铣削操作通过改变刀具运动每一点的深度值,很容易更新zmap值,并更新工件的图形显示。
3.5离散矢量求交法
由于现有的实体造型技术未涉及公差和曲面的偏置表示,而像素空间布尔运算并不精确,使仿真验证有很大的局限性。为此Chappel提出了一种基于曲面技术的“点矢量”(pointvector)法。这种方法将曲面按一定精度离散,用这些离散点来表示该曲面。以每个离散点的法矢为该点的矢量方向,延长与工件的外表面相交。通过仿真刀具的切削过程,计算各个离散点沿法矢到刀具的距离s。
设sg和sm分别为曲面加工的内、外偏差,如果sg< S < SM说明加工处在误差范围内,S < SG则过切,S>sm则漏切。该方法分为被切削曲面的离散(discretization)、检测点的定位(location)和离散点矢量与工件实体的求交(intersection)三个过程。采用图像映射的方法显示加工误差图形;零件表面的加工误差可以精确地描写出来。
总体来说,基于实体造型的方法中几何模型的表达与实际加工过程相一致,使得仿真的最终结果与设计产品间的精确比较成为可能;但实体造型的技术要求高,计算量大,在目前的计算机实用环境下较难应用于实时检测和动态模拟。基于图像空间的方法速度快得多,能够实现实时仿真,但由于原始数据都已转化为像素值,不易进行精确的检测。离散矢量求交法基于零件的表面处理,能精确描述零件面的加工误差,主要用于曲面加工的误差检测。
② 游戏场景管理的八叉树算法是怎样的
八叉树(octree)是三维空间划分的数据结构之一,它用于加速空间查询,例如在游戏中: 加速用于可见性判断的视锥裁剪(view frustum culling)。加速射线投射(ray casting),如用作视线判断或枪击判定。 邻近查询(proximity query),如查询玩家角色某半径范围内的敌方NPC。碰撞检测的粗略阶段(broad phase),找出潜在可能碰撞的物体对。总括而言,前3个应用都是加速一些形状(frustum、ray、proximity shape如球体)的相交测试(intersection test)。这种做法是adaptive的,就是说按照一定的条件(叶节点只能有一个点)来进行分割。实际上,我们可以设置其他条件去决定是否分割一个叶节点,例如节点内的点超过10个,或是最多分割4层就不再分割等等。在分割时,我们只需检查点是在每个轴的哪一方,就能知道该点应放置在哪个新的节点里。建立了一个四/八叉树之后,我们可以得出一个重要特性: 如果一个形状S与节点A的空间(正方形/立方体)不相交,那么S与A子树下的所有点都不相交。那么,在相交测试中,我们可以从根节点开始,遍历四/八叉树的节点,如节点相交就继续遍历,如不相交就放弃遍历该子树,最后在叶节点进行形状与点的相交测试。这样做,一般能剔除许多点,但注意最坏的情况是所有点集中在一起,那么就不起加速作用。因此,除了传统的四/八叉树实现,也可以参考一些更新的技术。
③ 游戏开发需要具备哪些技术
游戏开发需要具备HTML、CSS、Javascprict等等技术,用于游戏地图、配合游戏主题等等。AJAX用于聊天、完成任务等等;动态脚本语言例如ASP、PHP、JSP、.net asp、perl等等,都是开发网页游戏的主要构成,因为很多模块都需要来处理,比如说丝路英雄、商业大亨都是利用动态脚本语言来完成的。
AS用于某些flash游戏,比如弹弹堂、开心宝贝都是用这类语言来完成的;SQL语言是用来储存数据的,比如说金币系统、经验系统都是利用SQL来完成的。
还有的网页游戏结合了AS语言和动态脚本语言,比如说烽火战国。所以说需要开发、学习很长时间才能研究成功,建议去跟别人合作,速度会提高。
(3)四叉树碰撞检测算法边界扩展阅读
1、开发语言工具:JAVA、PHP、Python、C++;
2、一般情况下是:PHP/JAVA/Python 处理游戏的业务逻辑和数据,使用C++写格斗系统、网络通信层等;
3、部分公司采用LUA语言编写游戏的业务逻辑,而其他上述提到的开发语言处理业务数据的操作;
4、数据存取:后台数据库多数采用MySQL,也有公司采用MC或Redis +MySQL的模式,还有部分公司直接使用Tokyo Cabinet (TTServer)。