1. 数控技术
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)三个过程。采用图像映射的方法显示加工误差图形;零件表面的加工误差可以精确地描写出来。
总体来说,基于实体造型的方法中几何模型的表达与实际加工过程相一致,使得仿真的最终结果与设计产品间的精确比较成为可能;但实体造型的技术要求高,计算量大,在目前的计算机实用环境下较难应用于实时检测和动态模拟。基于图像空间的方法速度快得多,能够实现实时仿真,但由于原始数据都已转化为像素值,不易进行精确的检测。离散矢量求交法基于零件的表面处理,能精确描述零件面的加工误差,主要用于曲面加工的误差检测。
2. 现在国外数控编程主要是哪种
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)三个过程。采用图像映射的方法显示加工误差图形;零件表面的加工误差可以精确地描写出来。
总体来说,基于实体造型的方法中几何模型的表达与实际加工过程相一致,使得仿真的最终结果与设计产品间的精确比较成为可能;但实体造型的技术要求高,计算量大,在目前的计算机实用环境下较难应用于实时检测和动态模拟。基于图像空间的方法速度快得多,能够实现实时仿真,但由于原始数据都已转化为像素值,不易进行精确的检测。离散矢量求交法基于零件的表面处理,能精确描述零件面的加工误差,主要用于曲面加工的误差检测。
3. 计算机图形学复习
第一章
1. 计算机图形:用数学方法描述,通过计算机生成、处理、存储和显示的对象。
2. 图形和图像的主要区别是表示方法不同:图形是用矢量表示;图像是用点阵表示的。图形和图像也可以通过光栅显示器(或经过识别处理)可相互转化。
3. 于计算机图形学紧密相关的学科主要包括 图像处理、计算几何和计算机视觉模式识别。它们的共同点是 以图形/图像在计算机中的表示方法为基础。
4. 交互式计算机图形系统的发展可概括为以下4个阶段:字符、矢量、二维光栅图形、三维图形。
5. 图形学研究的主要内容有:①几何造型技术 ②图形生成技术 ③图形处理技术 ④图形信息的存储、检索与交换技术 ⑤人机交互技术 ⑥动画技术 ⑦图形输入输出技术 ⑧图形标准与图形软件包的研发。
6. 计算机辅助设计和计算机辅助制造 是计算机图形学最广泛最活跃的应用领域。
7. 计算机图形学的基本任务:一是如何利用计算机硬件来实现图形处理功能;二是如何利用好的图形软件;三是如何利用数学方法及算法解决实际应用中的图行处理问题。
8. 计算机图形系统是由硬件系统和软件系统组成的。
9. 计算机图形系统包括处理、存储、交互、输入和输出五种基本功能。
10. 键盘和鼠标是最常用的图形输入设备。鼠标根据测量位移部件的不同,分为光电式、光机式和机械式3种。
11. 数字化仪分为电子式、超声波式、磁伸缩式、电磁感应式等。小型的数字化仪也称为图形输入板。
12. 触摸屏是一种 定位设备,它是一种对于触摸能产生反应的屏幕。
13. 扫描仪由3部分组成:扫描头、控制电路和移动扫描机构。扫描头由光源发射和光鲜接收组成。按移动机构的不同,扫描仪可分为平板式和滚筒式2种。
14. 显示器是计算机的标准输出设备。彩色CRT的显示技术有2种:电子穿透法和荫罩法。
15. 随机扫描是指电子束的定位及偏转具有随意性,电子束根据需要可以在荧光屏任意方向上连续扫描,没有固定扫描线和扫描顺序限制。它具有局部修改性和动态性能。
16. 光栅扫描显示器是画点设备。
17. 点距是指相邻像素点间的距离,与分辨指标相关。
18. 等离子显示器一般有三层玻璃板组成,通常称为等离子显示器的三层结构。
19. 用以输出图形的计算机外部设备称为硬拷贝设备。
20. 打印机是廉价的硬拷贝设备,从机械动作上常为撞击式和非撞击式2种。
21. 常用的喷墨头有:压电式、气泡式、静电式、固体式。
22. 绘图仪分为静电绘图仪和笔式绘图仪。
23. 图形软件的分层。由下到上分别是:①图形设备指令、命令集、计算机操作系统 ②零级图形软件 ③一级图形软件 ④二级图形软件 ⑤三级图形软件。
24. 零级图形软件是面向系统的、最底层的软件,主要解决图形设备与主机的通信与接口问题,又称设备驱动程序。
25. 一级图形软件即面向系统又面向用户,又称基本子系统。
26. 图形应用软件是系统的核心部分。
27. 从物理学角度,颜色以主波长、色纯度和辉度来描述;从视觉角度来看,颜色以色彩、饱和度和亮度来描述。
28. 用适当比列的3种颜色混合,可以获得白色,而且这3种颜色中的任意2种的组合都不能生成第三种颜色,称为三原色理论。
29. RGB模型的匹配表达式是:c=rR+gG+bB。
30. 常用颜色模型
颜色模型名称 使用范围
RGB 图形显示设备(彩色CRT和光栅显示器)
CMY 图形打印、绘制设备
HSV 对应画家本色原理、直观的颜色描述
HSL 基于颜色参数的模型
用基色青、品红、黄定义的CMY颜色模型用来描述硬拷贝设备的输出颜色。它从白光中滤去某种颜色,故称为减色性原色系统。
第二章
31. 直线生成的3个常用算法:数值微分法(DDA)、中点划线法和Bresenham算法。
32. DDA算法的C语言实现:
DDA算法生成直线,起点(x0,y0),终点(x1,y1).
Void CMy View ::OnDdaline()
{
CDC *pDC=GetDC(); //获得设备指针
int x0=100,y0=100,x1=300,y1=200,c=RGB(250,0,0);//定义直线两端点和直线颜色
int x,y,i;
float dx,dy,k;
dx=(float)(x1-x0);
dy=(float)(y1-y0);
k=dy/dx;
x=x0;
y=y0;
if(abs(k)<1)
{ for(;x<=x1;x++)
{pDC—>SetPixel(x,int(y+0.5),c);
y=y+k;}
}
if(abs(k)>=1)
{ for(;y<=y1;y++)
{pDC—>SetPixel(int(x+0.5),y,c);
x=x+1/k;}
}
ReleaseDC(pDC); //释放设备指针
}
33. 任何影响图元显示方法的参数称为属性参数。图元的基本表现是线段,其基本属性包括线型、线宽和色彩。
34. 最常见的线型包括实线、虚线、细线和点划线等,通常默认的线型是实线。
35. 线宽控制的实线方法:垂直线刷子、水平线刷子、方形线刷子。生成具有宽度的线条还可以采用区域填充算法。
36. 用离散量表示连续量时引起的失真现象称为走样。为了提高图形显示质量,减少或消除走样现象的技术称为反走样。
37. 反走样技术有:提高分辨率(硬件方法和软件方法)、简单区域取样、加权区域取样。
38. 区域连通情况分为四连通区域和八连通区域。四连通区域是指从区域上某一点出发,可通过上下左右4个方向移动,在不越出区域的前提下到达区域内的任意像素;八连通区域是指从区域内某一像素出发,可通过上下左右、左上左下、右上右下8个方向的移动,在不越出区域的前提下到达区域内的任意像素。
39. 字符的图形表示可以分为点阵式和矢量式两种形式。
40. 在图形软件中,除了要求能生成直线、圆等基本图形元素外,还要求能生成其他曲线图元、多边形及符号等多种图元。
41. 在扫描线填充算法中,对水平边忽略而不予处理的原因是实际处理时不计其交点。
42. 关于直线生成算法的叙述中,正确的是:Bresenham算法是对中点画线算法的改进。
43. 在中点画圆算法中叙述错误的是:为了减轻画圆的工作量,中点画圆利用了圆的四对称性性质。
44. 多边形填充时,下列论述错误的是:在判断点是否在多边形内时,一般通过在多变形外找一点,然后根据该线段与多边形的交点数目为偶数即可认为在多边形内部,若为奇数则在多边形外部,且不考虑任何特殊情况。
第三章
1. Cohen-Sutherland算法,也称编码裁剪法。其基本思想是:对于每条待裁剪的线段P1P2分三种情况处理:①若P1P2完全在窗口内,则显示该线段,简称“取”之;②若P1P2完全在窗口外,则丢弃该线段,简称“舍”之;③若线段既不满足“取”的条件也不满足“舍”的条件,则求线段与窗口边界的交点,在交点处把线段分为两段,其中一段 完全在窗口外,可舍弃之,然后对另一段重复上述处理。
2. Sutherland-Hodgman算法,又称逐边裁剪算法。其基本思想是用窗口的四条边所在的直线依次来裁剪多边形。多边形的每条边与裁剪线的位置关系有4种情况(假设当前处理的多边形的边为SP):a>端点S在外侧,P在内侧,则从外到内输出P和I;b>端点S和P都在内侧,则从内到内输出P;c>端点S在内侧,而P在外侧,则从内到外输出I;d>端点S和P都在外侧,无输出。
3. 按裁剪精度的不同,字符裁剪可分为三种情况:字符串裁剪、字符裁剪和笔画裁剪。
4. 在线段AB的编码裁剪算法中,如A、B两点的码逻辑或运算全为0,则该线段位于窗口内;如AB两点的码逻辑与运算结果不为0,则该线段在窗口外。
5. n边多边形关于矩形窗口进行裁剪,结果多边形最多有2n个顶点,最少有n个顶点。
6. 对一条等长的直线段裁剪,编码裁剪算法的速度和中点分割算法的裁剪速度哪一个快,无法确定。(√)
7. 多边形裁剪可以看做是线段裁剪的组合。(X)
8. 对于线段来说,中点分割算法要比其他线段裁剪算法的裁剪速度快。(X)
9. 多边形的Weiler-Atherton裁剪算法可以实现对任意多边形的裁剪。(√)
第四章
1. 几何变换是指改变几何形状和位置,非几何变换是指改变图形的颜色、线型等属性。变换方法有对象变换(坐标系不动)和坐标变换(坐标系变化)两种。
2. 坐标系可以分为以下几种:世界坐标系(是对计算机图形场景中所有图形对象的空间定位和定义,是其他坐标系的参照)、模型坐标系(用于设计物体的局部坐标系)、用户坐标系(为了方便交互绘图操作,可以变换角度、方向)、设备坐标系(是绘制或输出图形的设备所用的坐标系,采用左手系统)。
3. 将用户坐标系中需要进行观察和处理的一个坐标区域称为窗口,将窗口映射到显示设备上的坐标区域称为视区。从窗口到视区的变换,称为规格化变换。(eg.4-1)
4. 所谓体素,是指可以用有限个尺寸参数定位和定形的体,如长方体、圆锥体。
5. 所谓齐次坐标表示,就是用n+1维向量表示n维的向量。
6. 二维点(x,y)的齐次坐标可以表示为:(hx hy h),其中h≠0。当h=1时称为规范化的齐次坐标,它能保证点集表示的唯一性。
7. 旋转变换公式的推导、对称变换
第五章
1. 交互绘图技术是一种处理用户输入图形数据的技术,是设计交互绘图系统的基础。常见的交互绘图技术有:定位技术、橡皮筋技术、拖曳技术、定值技术、拾取技术、网格与吸附技术。
2. 常用的橡皮筋技术有:橡皮筋直线、橡皮筋矩形、橡皮筋圆。
3. 拖曳技术是将形体在空间移动的过程动态地、连续地表示出来,直到用户满意。
4. 定值技术有2种:一种是键入数值,另一种是改变电位计阻值产生要求的数量,可以用模拟的方式实现电位计功能。
5. 拾取一个基本的对象可以通过:指定名称法、特征点发、外界矩阵法、分类法、直接法。
第六章
1. 点、线、面是形成三维图形的基础,三维变换是从点开始。
2. 三维图形变换分类:三维图形变换包括三维几何变换和平面几何变换,三维几何变换包括基本几何变换和复合变换;平面几何变换包括平行投影和透视投影,平行投影包括正投影和轴测投影,透视投影包括一点透视、二点透视、三点透视。
3. 投影中心与投影面之间的距离是无限的投影叫做平行投影,它包括正投影和轴测投影。
4. 正投影形成的视图包括:主视图、俯视图和左视图。轴测投影形成的视图为轴测图。
5. 透视投影也称为中心投影,其投影中心与投影面之间的距离是有限的。其特点是产生近大远小的视觉效果
6. 对于透视投影,不平行于投影面的平行线的投影会汇聚到一个点,这个点称为灭点。透视投影的灭点有无限多个,与坐标轴平行的平行线在投影面上形成的灭点称为主灭点。主灭点最多有3个,其对应的透视投影分别称为一点透视、二点透视、三点透视。
第七章
1. 型值点是曲面或曲线上的点,而控制点不一定在曲线曲面上,控制点的主要目的是用来控制曲线曲面的形状。
2. 插值和逼近是曲线曲面设计中的两种不同方法。插值—生成的曲线曲面经过每一个型值点,逼近—生成的曲线曲面靠近每一个控制点。
3. 曲线曲面的表示要求:唯一性、统一性、几何不变性、几何直观、易于界定、易于光滑连接。
4. 曲线曲面有参数和非参数表示,但参数表示较好。非参数表示又分为显式和隐式两种。
5. 对于一个平面曲线,显式表示的一般形式是:y=f(x)。一个x与一个y对应,因此显式方程不能表示封闭或多值曲线。例不能用显式方程表示一个圆。
6. 如果一个曲线方程表示为f(x,y)=0的形式,我们称之为隐式表示。其优点是易于判断函数f(x,y)是否大于、小于或等于零,即易于判断是落在所表示曲线上还是在曲线的哪一侧。
7. 参数连续与几何连续的区别:参数连续性是传统意义上的、严格的连续,而几何连续性只需限定两个曲线段在交点处的参数导数成比例,不必完全相等,是一种更直观、易于交互控制的连续性。
8. 在曲线曲面造型中,一般只用到C1(1阶参数连续)、C2(2阶参数连续)、G1(1阶几何连续)、G2(2阶几何连续)。切矢量(一阶导数)反映了曲线对参数t的变化速递,曲率(二阶导数)反映了曲线对参数t变化的加速度。
9. 通常C1连续必能保证G1的连续,但G1的连续并不能保证C1连续。
10. 对于三次Hermite曲线,用于描述曲线的可供选择的条件有:端点坐标、切矢量和曲率。
11. 三次Hermite曲线特点:①可局部调整,因为每个曲线段仅依赖于端点约束;②基于Hermite样条的变化形式有Cardinal样条和Kochanek-Bartels样条;③具有几何不变性。
12. Bezier曲线的性质:①端点性质②端点切矢量③端点的曲率④对称性⑤几何不变性⑥凸包性⑦变差缩减性。
13. 一次Bezier曲线是连接起点P0和终点P1的直线段,二次Bezier曲线对应一条起点P0终点在P2处的抛物线。
14. B样条曲线的性质:①局部性②连续性或可微性③几何不变性④严格凸包性⑤近似性⑥变差缩减性。
15. NURRS曲线具有以下性质:①局部性②可微性③仿射不变性④严格保凸性⑤一般性⑥变差缩减性⑦端点性质。
第八章
1. 要把三维物体的信息显示在二维显示设备中,必须通过投影变换。由于投影变换失去了深度信息,往往会导致二义性,要消除二义性,就必须在绘制时消除实际不可见的线和面,称作消除隐藏线和隐藏面,简称消隐。
2. 面消隐常用算法有:深度缓冲区(Z-buffer)算法和深度排序算法(画家算法)。
3. 深度缓冲区算法和深度排序算法的区别:
4. GPU和CPU之间是如何协调数据处理的
因为设计的目标不同,当今的CPU和GPU功能上有本质的不同。作为通用处理器的CPU,顾名思义,它是设计用来处理通用任务的处理、加工、运算以及系统核心控制等等的。CPU中包含的最基本部件有算术逻辑单元和控制单元,CPU的微架构是为高效率处理数据相关性不大的计算类、复杂繁琐的非计算类的等等百花八门的工作而优化的,在处理日常繁复的任务中应付自如。
计算机的“灵魂”——操作系统,以及几乎100%的系统软件都主要仰仗CPU来顺利运行。CPU面对的算术、逻辑运算以及控制处理是非常繁琐和复杂的,面对处理的数据和信息量不仅数量多而是种类多。CPU运算和控制多面手的这种设计,让它在计算机中得心应手,位置不可动摇。
GPU设计的宗旨是实现图形加速,现在最主要的是实现3D 图形加速,因此它的设计基本上是为3D图形加速的相关运算来优化的,如z-buffering 消隐,纹理映射(texture mapping),图形的坐标位置变换与光照计算(transforming & lighting)等等。这类计算的对象都是针对大量平行数据的,运算的数据量大,但是运算的类型却并不复杂,大多类似和雷同,计算性强但是逻辑性不强,如矩阵运算就是图形运算的典型特性。
如今的游戏,单单从图象的生成来说大概需要下面四个步骤:
1、Homogeneous coordinates(齐次坐标)
2、Shading models(阴影建模)
3、Z-Buffering(Z-缓冲)
4、Texture-Mapping(材质贴图)
在这些步骤中,显示部分(GPU)只负责完成第三、四步,而前两个步骤主要是依靠 CPU 来完成。而且,这还仅仅只是3D图象的生成,还没有包括游戏中复杂的AI运算。场景切换运算等等……无疑,这些元素还需要CPU去完成,这就是为什么在运行《魔兽世界》的时候,当场景切换时再强劲的显卡都会出现停顿的现象。
对于需要CPU进行大量AI运算的游戏来说,在固定的显示分辨率下,CPU的架构越强、主频越高的确有一定的优势。着名的FPS第一人称设计游戏——CSS,就是一个很好的例子。当你开启了30个左右的机器人,在大混战的时候就很容易体现出高端CPU与入门级CPU之间的区别了。
打造一套完整的游戏 PC 系统,CPU和显卡的搭配应该相得益彰,高成低就或低成高就都是不平衡的组合方式。
第一代 GPU 首先,CPU将数据传递给GPU进行处理,数据先进入T&L单元中的Transform Engine,在这里,数据将以顶 点的形式接受视野范围的判断,当处理单元判断某部分顶点处于观察者的视线范围以外时,Transform Engine将把这部分顶点“剪除”以使其不会 干扰后续的流水线操作, 具个简单的例子:当你在某FPS游戏中突然打开狙击枪的狙击镜,视野变成了一个圆形的空洞,而其他部分则为黑色,这时 Transform Engine将去除这个圆形视野范围以外的所有顶点,不过,这里进行的只是视野范围的判断,Transform Engine去除在 你的视线范围内但是被其它东西挡住了的物体,另外,每一个三角形可能被旋转,放大/缩小,上升,下降,左偏,右移等。 这就是多边形转换转换。 Transform Engine根据你的视角,改变了由程序提供的组成3D物体的顶点的坐标。经过Lighting Engine处理后的图象经过判断 处理后的数据将流入T&L单元中的Lighting Engine,根据光源的类型,距离,角度,数目,应用方式等不同参数,每一个多边形都会有 不同的光影表现和光影关系,因而需要不同的光线函数予以表征,在Lighting Engine中,处理单元将根据软件提出的光源分布情况为每个顶点计算 出它所具有的光线矢量,以便后续进行的光线纹理贴图,着色等操作
经过Lighting Engine处理的画面
其实,经由T&L单元处理过的数据还只是抽象的数据,并不是具体的图形,上面两副图仅仅是方便读者进行想象的示意图。
接下来数据将流入Setup Engine,在这里,运算单元将进行三角形的设置工作,这是整个绘图过程中最重要的一个步骤,Setup Engine甚 至直接影响着一块GPU的执行效能。三角形的设置过程是由一个一个的多边形组成的,或者是用更好的三角形代替原来的三角形。在三维图像中可能会有些三角形 被它前面的三角形挡住,但是在这个阶段3D芯片还不知道哪些三角形会被挡住。所以三角形建立单元接收到的是一个个由三个顶点组成的完整三角形。三角形的每 个角(或顶点)都有对应的X轴、Y轴和Z轴坐标值,这些坐标值确定了它们在3D景物中的位置。同时,三角形的设置也确定了像素填充的范围
经过Setup Engine处理的画面
最终着色完毕的画面
在三角形设置完毕后,T&L单元的全部运算就完成了。接下来数据将进入NV15独有的NSR像素处理单元进行一定的像素处理,接着流入像素流水线 进行后续的纹理像素填充等操作,这部分操作在DriectX7.0中的变化并不明显,基本的渲染填充过程与过去的显卡几无二异
T&L虽然再一定程度上缓解了CPU运算能力的不济所带来的瓶颈,使得系统在图形方面的资源得到了再分配和增强,但同时,T&L也将新的矛盾转到了GPU上
T&L是一组相对固定的简单的图形函数,所实现的特效受到了函数本身语句的限制,虽然这种固定的指令集设计可以带来比较高的执行效率,但这种设置 使得DX7下所能实现的特效受到了指令集的约束,许多逼真的特效无法实现,程序员的思想也被限定在一个相对狭窄的范围内。
2、我要看到你飘逸的秀发和迷人的微笑—可编程Shader以及第二代GPU
DriectX8.0在传统T&L的基础上加入了两个新的概念—可编程的Vertex Shader和Piexl Shader,同样的,第二代 GPU的标志就是硬件级别的可编程Shader运算,代表产品为NV2X(Geforce3/4Ti),R2XX(Radeon8500)等
可编程Shader的复杂程度远非T&L可比,为了方便大家理解第二代GPU的特点,我们先来认识一下什么是可编程Shader,以及可编程Shader运算单元
可编程Vertex Shader及顶点处理器:
可编程Vertex Shader让程序员能够对特定物体,甚至整个画面的每一个顶点,指定特别的运算程序,却不需要CPU介入。每一个顶点都携带相当多 的信息,比如坐标,重量,法线,颜色,纹理坐标,雾和点大小数据。顶点处理器能够以简短的程序来改变上述这些信息。 这些小程序直接由顶点着色引擎本身执 行,不必劳驾CPU。 典型的T&L引擎将程序员限制在3D运算的光影转换之前, 在有了顶点处理器的支持之后,游戏设计师对游戏场景里的3D物 体能够为所欲为的操纵变化,而且不需要用到中央处理器。
这导致了一场革新,程序可以改变顶点的坐标,这样基本上改变物体的形状,以达到更接近真实的移动、移动残影、混色、内插(在两种外型间转换),以及变形, 比如改变角色脸部的骨骼和皮肤一个产生一个适时的微笑。也可改变顶点上的颜色数据和纹理坐标,物体表面的颜色达到设计师所想要的色彩效果、投影、凹凸贴图 设置(如Blinn Bump mapping)或者其它投射的纹理。光源也可以为程序员随心所欲的调整,不再像过去那样需要对光源的效果进行笨拙的光线 纹理贴图,而这些在以前是不可想象的。这一切都归功于可编程Vertex Shader和顶点处理器的出现
Blinn Bump mapping
可编程Piexl Shader以及像素处理器
在NV15中,nVidia曾经尝试加入一个叫NSR的像素处理单元,它可以在数据进入像素流水线之前对每个像素进行一系列运算操作,虽然同为每像素操 作,但NSR与Piexl Shader可不能同日而语, NSR对于像素的运算只有7种,同T&L一样,它依然是固定模式的,程序员依然要依照 规定好的条条框框写出程序,而Piexl Shader则不同,我们可以用许多不同方式去编程,以实现不同的特效,下面就是一般的像素处理器所具备的特 性:
· 阴影贴图
· 快速纹理载入
· 影像乘法,对称核心
· 支持4096x4096或512x512x512 纹理
· 立方体贴图每边可4096x4096x32-位
· 支持YUYV的纹理(自动转换成RGB三原色)
· 支持全景贴图
可以指向任何一个图像,如背景缓冲区(back buffer),而可直接当作纹理使用
· 边缘色彩及边缘纹理
· 硬件同步化读/写
对同一张纹理的读及写允许全流水线操作。
可以对背景缓冲区着色,然后马上能当作纹理使用
· Pass through colors
· 支持DX6规格的环境凹凸/亮度贴图(就是环境凹凸贴图)
· 简单的纹理,S,T 在alpha/红(AB)及蓝/绿 (BG)
· 等向的双方向性反射分布功能光源
· 内积产生色彩贴图或Z坐标
· 真实反射凹凸贴图
这看起来似乎有点抽象,简单的说,可编程Piexl Shader实现了一个非常重要的特效—真实的毛发
古老街道上昏暗灯光中的狼人
在3D渲染中,渲染真实的毛发一直是一件非常困难的事情,大量的多边形给多边形生成带来了严峻的考验,而每一根毛发之间复杂多变的即时光影关系更不是几个简单固定的指令所能实现的。Piexl Shader的可编程性和运算能力很好的解决了这个问题
好啦,现在让我们来看看第二代GPU是如何完整处理一个画面的吧
首先,来自CPU的各种物理参数进入GPU,Vertex Shader将对顶点数据进行基本的判断,如果没有需要处理的Vertex效果,则顶点数据直 接进入Transform&Lighting Unit进行传统的T&L操作以节约时间提高效率,如果需要处理各种Vertex效果,则 Vertex Shader将先对各种Vertex Programs的指令进行运算,一般的Vertex Programs中往往包含了过去转换,剪 切,光照运算等所需要实现的效果,故经由Vertex Shader处理的效果一般不需要再进行Transform&Lighting操作;另 外,当遇到涉及到曲面镶嵌(把曲面,比如弓形转换成为多边形或者三角形)的场合时,CPU可以直接将数据交给Vertex Shader进行处理
另外,在DX8.0的Transform过程中,Vertex Shader可以完成Z值的剔除,也就是Back Face Culling—阴面隐去,这就意味着除了视野以外的顶点外,视野内被前面顶点遮住的顶点也会被一并剪除,这大大减轻了需要进行操作的顶点数目
接下来,经由Vertex Shader处理完成的各种数据将流入Setup Engine,在这里一如既往的进行三角形的设置工作,到这里为止,Vertex Shader的工作就完成了
过去,设置好的三角形本来应该带着各自所有的参数进入像素流水线内进行纹理填充和渲染,但现在则不同,在填充之前我们还需要进行Piexl Shader的操作
其实Piexl Shader并非独立存在的,它位于纹理填充单元之后,数据流入像素流水线后先进入纹理填充单元进行纹理填充,然后便是 Piexl Shader单元,经由Piexl Shader单元进行各种处理运算之后再进入像素填充单元进行具体的着色,再经由雾化等操作后,一个完整 的画面就算完成了
值得注意的是,第二代GPU中普遍引入了独立的显示数据管理机制,他们位于Vertex Shader,Setup Engine以及像素流水线之间,负 责数据的更有效率的传输、组合,各种无效值的剔除,数据的压缩以及寄存器的管理等工作,这个单元的出现对整个GPU的工作效率的保证其到了至管重要的作 用。
HyperZ系列:HyperZ技术本身就是一种类似nVIDIA的“Z-封闭甄别”的技术,但是比nVIDIA还更进一步。它的主要功能简单说来就是分 析在Z轴上的场景,被遮挡的就会被忽略掉,只渲染我们能看到的部分场景;然后对渲染过的Z轴场景进行压缩处理,数据的压缩可减少他所占用的空间,从而在存 取Z-Buffer数据的时候可以保留更多的显存带宽。而且这是一种画面质量没有损害的压缩算法,并不影响画面质量。最后一步就是把经过渲染的场景中的Z -Buffer信息立刻清除掉,这样就更加大了显存带宽的利用率。
LMA(光速显存架构)系列:光速显存架构采用的第一个技术是“显存交错控制”技术, LMA中的显存控制器划分成了4个独立的显存控制单元,每个单元最 大可以进行32bit图形相关数据的存取工作,并且这4个单元之间以及它们和图形处理单元之间都保持密切的通讯联系,并随时协调平衡各个子单元之间的数据 流量,因此整体来看LMA的显存控制单元还是可以进行128bit数据的存储,但是保证了显存带宽的充分利用。光速显存架构采用的第二个技术是“无损Z压 缩算法”。传统的图形芯片对于每个待渲染的图形象素都要进行Z轴数据的读写工作,因此存储这些数据的Z缓存一向是消耗显存带宽的大户。LMA中集成了硬件 “无损Z压缩”单元,采用“无损Z压缩算法”对Z-缓存数据进行4:1的完全无损压缩。 光速显存架构采用的第三个技术是“Z-封闭甄别”。排除了图象中 被遮盖住而不可见的部分,这样GPU就不做隐面模型构建(节省处理器的多边形运算资源),并且渲染管线也不对隐面进行渲染(无需从帧缓存中读写隐面资料数 据,节省渲染管线的象素和纹理生成资源并完全消灭了隐面资料对显存带宽的占用)。最后,LMA还包括了4组高速Cache,对数据传输进行缓冲。
3、梦中的镜花水月—可编程Shader2.0以及第三代GPU
当你第一次看到3Dmark03中的MotherNature时,你有没有感觉到震撼?
更加宽泛的色彩范围能够使得图形的逼真度上升,这就是Shader2.0的由来,Shader2.0的核心实际上就是以扩大指令数目以及FLOAT数据形 式的应用来提高色彩表达的精确度,而第三代GPU的Shader单元也由此而具备了高精度FLOAT色彩数据的运算能力。从一般角度来讲,第三代GPU同 第二代GPU相比在基本的操作控制形式等方面并没有本质的区别,但是由于Shader2.0更大的指令长度和指令个数,以及通用程序+子程序调用的程序形 式等使得第三代GPU在处理高精度的庞大指令时效率上有了明显的提升,同时也使得第三代GPU的可编程性跃上了一个新的台阶
让我们来看看第三代GPU到底有哪些改进吧
Vexter Shader部分
第三代GPU的顶点处理器部分除了一般的操作功能外还具备流程控制能力,包括循环,跳跃以及子程序调用等,这些控制指令以及更多向量(或标量)寄存器的应 用使得顶点处理器能够以更高的效率执行Vertex Programs,提高了Vertex的处理速度。同时,加大的指令长度和指令数量使得顶点处理器的 功能得到了进一步的强化。另外,在第三代GPU中,传统的T&L数据将完全交由顶点处理器来执行,Transform& Lighting Unit将彻底被顶点处理器“吞并”,这也是第三代GPU的一个重要特点
Piexl Shader部分
第二代GPU的Piexl Shader只能实现INT数据的运算,这势必会带来最终运算结果的不精确,而数据的不精确导致了颜色表现的不准确,干扰了最 终画面的质量以及效果的表现,第三代GPU的重点改进就是运算单元和寄存器所支持的运算格式,现在Piexl Shader可以进行更高精度的FLOAT 运算和输出,从而使得图形的色彩显示更加精确
暴光正确的图象
数据精度不当而无法实现的特种暴光
另外,第三代GPU的像素处理器每周期所能处理的材质以及指令也分别增加了数倍,这些新特性使得第三代GPU可以处理各种复杂程度的效果,营造一个更为真实的3D画面,比如更加真实的水面效果
INT Piexl Shader所表现的水面效果
FLOAT Piexl Shader所表现的水面效果
传统的INT无法表现宽泛的波浪效果,程序员害怕数据精度范围狭窄引起的上溢或者下溢的发生而不得不在一个很小的物理参数范围内控制涟漪水面所需的波长、 波浪的大小、移动速度以及反射和折射效果等,现在,由于数据精度的提升,像素处理器完全可以处理一个非常宽泛的数据精度范围,避免数据的溢出,这就使得更 加真实的水面效果得以被表现。第三代GPU的代表是NV3X系列,R3XX系列等,其中R3XX系列的基本处理方式和顺序与第二代GPU在本质上基本相 同,仅仅是Vertex Shader和Piexl Shader的具体操作细节和运算精度上有些许不同,而NV3X虽然在基本原理上也与之大略相同,但 从流水线的角度来看则与完全不同,应该算是个“异类”。产生过程,只分析一下NV3X
以NV35为例:
首先,他具有8个纹理帖图单元,但8个纹理贴图单元并不在固定分布于每一条Piexl流水线,而是集簇在一起,根据情况来搭配,可以是4*2、8*1。
其次,他具有12条Shader流水线,但没有全盘采用浮点渲染流水线,而只是把12条Shader流水线中的8条做成具备浮点处理能力;不过全部12条Shader流水线都具备Fixed-Point Shader的执行能力。
另外,NV3X将流水线后部的各种渲染单元,如雾化,Alpha混合等大幅削减,使得流水线在一定程度上公用这些单元
NV30的构架组成形式基本上与之相当,只是数目上略有不同
由于这个构架并不是传统意义上的4*2或者8*1的固定构架,我们不能象过去那样说NV35“每个流水线具有2个纹理帖图单元”或者“每条管线具有3个Shader流水线”……我们只能说“NV35单位周期可以完成8次左右的纹理贴图或者12次Shader操作”
另外,由于NV3X对于Fixed-Point Shader的支持精度是FP16和FP32,同时NV3X的Shader流水线的单位Fixed- Point Shader处理精度是16位,所以当遇到32位Fixed-Point Shader数据时,能进行Fixed-Point Shader 数据处理的8条Shader流水线也会根据情况进行搭配来运算32位的Fixed-Point Shader数据
Pixel Programs往往是由多条指令构成的,不同的指令需要不同的执行时间来完成,每个像素必须在应用在它“身上”的Pixel Shader 操作完成后才能由像素流水线写入到帧缓存里。故此,对于应用了Piexl Shader的像素实际上是需要多个以上的周期才能写入到帧缓存里,如果采用8 条完整的渲染流水线的话, 流水线后面的雾化、色彩混合等单元很多时候都会处在等待阶段,这部分单元需要占用的晶体管数量不在少数,如果这样浪费就怪可惜 的,砍掉后其中的雾化等单元后,对整体的性能虽然有一些影响,但是却可以把节省下来的晶体管用于加强Pixel Shader的功能和性能上来,同时可以 保证比较高的多重纹理效率,利大于弊。
简单的,这个有点诡异的体系节省晶体管的同时能确保相对较好的Pixel Shader效能,同时还有极高的多重贴图效能
nVidia本指望4条Pixel管线+ 12条Shader流水线的设计能够在现在以及未来较长的一段时间的游戏里提供超过4条甚至8条 Pixel Pipeline显卡的效能。不过,实际情况却与nVidia的初衷有些背道而驰,Shader的完美应用带来的一个结果就是越来越好的非多 纹理光效果,传统的多纹理贴图才能表现的很好的光效果现在只需要进行一次贴图或者直接使用Shader就可以达到,这使得NV3X的设计成为了空架子,实 用意义大大降低,而在单纹理处理过程中由于NV3X的后续效果单元被削减,它的渲染效能注定没有传统的完整流水线高,另外,由于DX9中的最终FP精度被 定义为FP24,这导致了NV3X的相对低下的FP效能。最终,本来“先进”的NV3X构架落的个整体效能低下的下场
从本质上来讲,图形数据在NV3X中的实际处理过程依然是沿着顶点处理器—Setup Engine—像素流水线的顺序进行的,这与R3XX以及所有的第二代GPU是相同的
天堂的入口—可编程Shader3.0,DriectX Next以及未来的GPU
在微软刚刚公布的Driect9.0C中,Vertex Shader和Piexl Shader已经具有了几乎相同的能力,而在nVidia新发布的第 四代GPU—NV40中,我们发现Vertex Shader包含了4个纹理取样器,可以使用texld指令进行查表操作, NV40可以在一个 shader pass里完成4个纹理的读取,这个对于通用替换贴图而言相当的重要,有了vertex texturing功能后, vertex shader就能读取纹理信息直接映射到顶点上,以实现displacement mapping(位移映射)等等效果,用不同的纹理和较 少的顶点传输时间就能实现外形复杂、平滑的模型,这表明GPU中Vertex Shader的功能正在逐渐接近Piexl Shader。随着GPU的发 展,未来GPU中的Vertex Shader和Piexl Shader最终将被合并成一个统一的处理单元—Intergrated Shader,两 种处理单元将使用完全相同的语法以及指令集,Shader的统一将带来完全不同与现在的数据执行处理方式,GPU的内部结构将发生本质的变化, Intergrated Shader带来了更低晶体管数目的解决方案,以更少的晶体管数目来完成现在需要数亿晶体管才能完成的功能,同时统一 Shader将引出类似全通用I/O接口的设计以利资源的更合理的传输和分配,同时,为了解决越来越庞大的数据量,虚拟显存、无限资源访问以及帧缓冲操作 等技术的引入也势在必行。另外,我们在DirectX Next中还发现了整数指令集,处理器等特殊的定义,这些新颖的设计为我们勾勒出了未来GPU的轮 廓
整数指令集
在编程中不必在担心指令限制是一个很大的进步,不过想使得GPU更为通用还需要更多的工作。一个需要提高的主要区域就是整数处理能力。目前基于在着色器中 处理的所有数据都是浮点,这对于大多数显卡操作而言是没有问题的,不过不适合动态分支预测、非内插式显存搜索(如顶点缓冲的索引)等操作。在目前的GPU 中,唯一的内存寻址就是纹理查找,使用的也是浮点值。这样的情况对于纹理定位而言没有什么问题,不过对于通用内存寻址而言就不合适了,这里的连续内存块可 以完全彼此没有关联,采用内插式查找没有任何意义。微软对于这样的情况,在4.0版的Shader模型中引入了全新的、完整的整数指令集。拓扑处理器实际 上,目前的显卡可以在某些情况下新生成三角形,比如在用到直线以及点的时候。大多数的娱乐级显卡只具备对三角形进行光栅化处理的能力,这也就意味着所有的 点、线就必须转化为三角形。点和线在最后都将以2个三角形结束,这样就需要用到2-6个顶点(根据索引方式的不同而变化)。从本质上来说,这样的做法是有 益处的,通过可编程的管线,显示先前应该遮蔽的场景也就无需通过CPU,而可以通过微软的“拓扑处理器”直接完成。从逻辑上来说,这个拓扑处理器和镶嵌单 元是相互独立的,这个处理器在两种操作集中均可以使用。由目前的趋势来看,未来的GPU将向着高运算能力,高精度,高通用性的方向发展,GPU在工作方式 上将越来越接近CPU,由于高通用性等CPU特性的引入,GPU可能在一定程度上替代一部分CPU在非绘图领域的工作,也许在未来我们会看到由全GPU组 成的图形工作站。尽管未来GPU需要面对由于这些改进而带来得的诸多问题,尤其是通用性导致的效率低下,比如Intergrated Shader的效率 低下,但随着时间的推移,各种问题都将会得到妥善的解决。