计算机图形学第四章图形标准.ppt
第四章 图形标准4.1 图形标准的分类建立图形标准的目的是使图形与计算机硬件无关,实现程序的可移植和数据的可交换。图形标准的分类:n 应用程序接口n 图形数据交换n 图形设备接口4.2 应用程序接口标准1)GKS(Graphics Kernel System)1985年,第一个国际计算机图形信息标准:计算机图形核心系统(GKS)正式颁布。GKS提供了在应用程序和图形输入输出设备之间的功能接口,定义了一个独立于语言的图形核心系统。GKS是一个二维图形标准,使用GKS编制出来的应用程序可方便地在具有GKS的不同图形系统之间移植。以后又开发出了三维图形核心系统(GKS-3D)。2)PHIGS(Programmers Hierarchical Interactive Graphics System)PHIGS(Programmers Hierarchical Interactive Graphics System)是ISO于1986年公布的计算机图形系统标准。PHIGS是为具有高度动态性,交互性的三维图形应用而设计的图形软件工具库,其最主要的特点是能够在系统中高效率地描述应用模型,迅速修改图形模型的数据,并能绘制显示修改后的图形模型,它也是在程序与图形设备之间提供了一种功能接口。4.3 图形数据交换标准 1)CGM(Computer Graphic Metafile)1980年开始,美国国家标准委员会ANSI和国际标准化组织ISO专门成立了标准化组着手计算机图元文件(CGM)标准的制定,并于1987年正式成为ISO标准,CGM提供了一个在虚拟设备接口上存贮与传输图形数据及控制信息的机制。它具有广泛的适用性,大部分的二维图形软件都能够通过CGM进行信息存贮和交换。CGM标准是由一套标准的与设备无关的定义图形的语法和词法元素组成。Windows的图元文件(不同于CGM)windows图元文件是用来表示矢量图形的二进制记录。它主要用来通过剪贴板在程序之间传递图形数据,也可以存储在硬盘上(*.WMFWindows Metafile),它将一组图形命令形成一个矢量绘图文件:hdcMeta=CreateMetaFile(NULL)/这里是内存hBrush=CreateSolidBrush(RGB(0,0,255);Rectangle(hdcMeta,0,0,100,100);MoveToEx(hdcMeta,0,0,NULL);LineTo(hdcMeta,100,100);MoveToEx(hdcMeta,0,100,NULL);LineTo(hdcMeta,100,0);SelectObject(hdcMeta,hBrush);Ellipse(hdcMeta,20,20,80,80);hmf=CloseMetaFile(hdcMeta);以后可以使用hmf在指定矩形区域中绘图。2)IGES(Initial Graphics Exchange Specification)随着CAD/CAM技术的广泛应用,企业间、企业内部不同的职能部门间经常需要进行产品信息的交换,由于CAD/CAM系统的不同,直接影响到设计和制造部门和企业间的产品信息的交换和流动。导致了产品数据交换标准的制订。1980年,由美国国家标准局(NBS:National Bureau of Standards)主持成立了由波音公司和通用电气公司参加的技术委员会,制订了基本图形交换规范IGES,并于1981年正式成为美国的国家标准。从1981年的IGES 1.0版本到现在的版本,IGES逐渐成熟,日益丰富,包括了CSG模型和实体的边界模型,覆盖了CAD/CAM数据交换的越来越多的应用领域。作为较早颁布的标准,IGES被许多CAD/CAM系统接受,成为应用最广泛的数据交换标准。3)DXF(Drawing Exchange Format)DXF为AutoCAD系统的图形数据文件,DXF虽然不是标准,但由于AutoCAD系统的普遍应用,使得DXF成为事实上的数据交换标准。DXF是具有专门格式的ASCII码文本文件,它易于被其它程序处理,主要用于实现高级语言编写的程序与AutoCAD系统的连接,或其它CAD系统与AutoCAD系统交换图形文件。4)STEP(Standard for the Exchange of Product Model Data)作为数据交换的国际标准IGES发表以后,成为应用最广泛的数据交换标准。但在应用过程中,IGES缺点逐渐暴露出来,不能满足复杂的工业生产数据交换的要求。1984年,IGES组织设置了一个研究计划,称为PDES(Product Data Exchange Specification)。PDES计划的长期目标是为产品数据交换规范的建立开发一种方法论,并运用这套方法论开发一个新的产品数据交换标准,新标准要求能克服IGES中已经意识到的弱点,这些弱点包括文件过长,处理时间长,一些几何定义影响数值精度,交换的是数据而不是信息。PDES计划与IGES相比的一个显著特点是着重于产品模型信息的交换而不是象IGES那样仅传递一些几何和图形数据。1983年国际标准化组织ISO开始制定产品模型数据交换标准。STEP的制定主要基于PDES计划,1988年ISO把美国的PDES文本作为STEP标准的建议草案公布,随后PDES的制定工作并入STEP的制定中,PDES计划从PDES的制定转向STEP标准的应用,PDES也因此改名为“应用STEP进行产品数据交换(Product Data Exchange using STEP)”。由于PDES计划和STEP密切相关,习惯上常将两者合在一起为PDES/STEP。STEP是一个关于产品数据计算机可理解的表示和交换的国际标准,目的是提供一种不依赖于具体系统的中性机制,能够描述产品整个生命周期中的产品数据。产品生命周期包括产品的设计、制造、使用、维护、报废等。产品在各过程产生的信息既多又复杂,而且分散在不同的部门和地方。这就要求这些产品信息以计算机能理解的形式表示,而且在不同的计算机系统之间进行交换时保持一致和完整。产品数据的表达和交换,构成了STEP标准。4.4 图形设备接口标准CGI(Computer Graphics Interface):CGI是一个针对图形设备的ISO接口标准,是设备级的计算机图形标准。CGI的目标是使应用程序和图形库直接作用在各种不同的图形设备上,使其在各种图形设备上不经修改就可以运行。即在用户程序和虚拟设备之间以一种独立于设备的方式提供图形信息的描述和通信。CGI规定了发送图形数据到设备的输出和控制功能,用图形设备接收图形数据的输入、查询和控制功能。在二维图形设备中可以找到CGI支持的功能,但没有一个图形设备包含由CGI定义的所有功能。4.5 实际工业标准OpenGLOpenGL的前身是SGI公司为其图形工作站设计的一个图形开发软件库IRIS GL(Graphics Library),由于其性能优越,因此受到了用户的一致推崇。SGI公司有针对性地对GL进行了改进,特别是扩展了GL的可移植性,使之成为一个跨平台的开放式图形编程接口,这就是OpenGL(Open Graphics Library)。OpenGL是目前实际上的底层图形应用程序接口标准,由OpenGL ARB(Architecture Review Board体系结构评审委员会)管理,目前的最新版本是4.1,主流是2.x。微软支持到1.1(注:并不影响在windows中使用高版本,例如可以使用glew扩展)。OpenGL是一个功能强大的图形库,用户可以很方便地利用它开发出高度真实和交互的三维图形。从程序开发人员的角度来看,OpenGL是一组绘图命令的API集合。利用这些API能够方便地描述二维和三维几何物体,并控制这些物体按某种方式绘制到显示缓冲区中。对OpenGL实现者来说,OpenGL是影响图形硬件操作的一组命令。如果硬件只包含显存,Open GL的指令完全依赖主机的CPU来实现。通常情况下,图形硬件有不同水平的图形加速能力,OpenGL实现者的任务是在CPU和图形硬件之间对图形命令进行合理的划分,以便充分利用图形硬件的处理能力。1)OpenGL 的 API 结构 2)Windows环境下OpenGL有关库函数 核心库(OpenGL),包含最基本的函数,其前缀是gl;这部分函数用于常规的、核心的图形处理。实用库(OpenGL utility library,GLU),包含的函数功能更高一些,如绘制复杂的曲线曲面、高级坐标变换、多边形分割等,前缀为glu。Glu函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。辅助库(OpenGL auxiliarylibrary,GLAUX),包括简单的窗口管理、输入事件处理、某些复杂三维物体(球、茶壶)绘制等函数,前缀为aux。它是为快速学习OpenGL而设计的,但是windows only。实用工具包(OpenGL Utility Toolkit),第三方开发的函数库,函数名前缀为glut。这些函数用于简单的窗口操作和消息处理,使用它可以不涉及具体的窗口系统。WGL函数,专门用于OpenGL和Windows窗口系统的联接,其前缀为wgl。它使OpenGL和windows窗口系统紧密结合。另外,还有五个Win32函数(ChoosePixelFormat,DescribePixelFormat,SetPixelFormat,GetPixelFormat,SwapBuffers)用来处理像素格式和双缓存,它们是对Win32系统的扩展,没有特定前缀。3)OpenGL函数举例glTranslatef(-1.5f,0.0f,-6.0f);/Move Left 1.5 Units And Into The Screen 6.0glRotatef(rtri,0.0f,1.0f,0.0f);/Rotate The Triangle On The Y axisglBegin(GL_TRIANGLES);/Start Drawing TrianglesglColor3f(1.0f,0.0f,0.0f);/RedglVertex3f(0.0f,1.0f,0.0f);/Top Of Triangle(Front)glColor3f(0.0f,1.0f,0.0f);/GreenglVertex3f(-1.0f,-1.0f,1.0f);/Left Of Triangle(Front)glColor3f(0.0f,0.0f,1.0f);/BlueglVertex3f(1.0f,-1.0f,1.0f);/Right Of Triangle(Front)glEnd();/Done Drawing The PyramidglTranslatef(1.5f,0.0f,-7.0f);/Move Right 1.5 Units And Into The Screen 7.0glRotatef(rquad,1.0f,1.0f,1.0f);/Rotate The Quad On The X axis(NEW)glBegin(GL_QUADS);/Draw A QuadglColor3f(0.0f,1.0f,0.0f);/Set The Color To GreenglVertex3f(1.0f,1.0f,-1.0f);/Top Right Of The Quad(Top)glVertex3f(-1.0f,1.0f,-1.0f);/Top Left Of The Quad(Top)glVertex3f(-1.0f,1.0f,1.0f);/Bottom Left Of The Quad(Top)glVertex3f(1.0f,1.0f,1.0f);/Bottom Right Of The Quad(Top)glEnd();/Done Drawing The QuadSwapBuffers(hDC);4.6虚拟现实造型语言(VRML)VRML(Virtual Reality Markup Language)是为了实现三维网络界面而提出的一种类似HTML的标识语言。最初,它的主要功能是对模型的描述,因此也被解释为虚拟现实造型语言(Virtual Reality Modeling Language)。这种文件格式是Silicon Graphics公司(SGI)所开发的Open Inventor软件的开放式三维文件格式。1995年,VRML1.0版本正式推出。1996年,在对1.0版本进行重大改进的基础上推出了2.0版本,其中添加了场景交互、多媒体支持,碰撞检测等功能。1997年,经过标准组织的评估后,VRML2.0成为国际标准,并改称VRML97。VRML一例():#VRML V2.0 utf8Shapeappearance Appearancematerial MaterialemissiveColor 1 0 0geometry Sphere radius 1