1、,第一章 计算机图形学 综述,图形是传递信息最主要的媒体之一。 人们使用图形来表达与交流思想有着悠久的历史,工程领域和各个科学分支都离不开图。它能使人们通观全局,一目了然。 人的眼睛从一张图纸中吸收信息比从一张数据表格吸收信息快得多(一幅画胜千言万语)。 若图形和数字互为补充,则可使人们更深刻地认识事物的本质及其内在联系。,计算机图形处理使计算机在处理复杂问题后输出离散数据的同时,有可能以图形的形式输出其连续模型。 计算机图形学的发展和应用在某种意义上已成为计算机软、硬件发展水平的标志。 它已成为一门成熟的学科,是信息技术中不可缺少的重要内容和发展基石。计算机图形学课程也已成为大学计算机、机械
2、等相关学科的一门主干课程。,计算机图形学之所以能在它短短的40多年历史中获得飞速发展,其根本原因是图形为传递信息的最主要媒体之一。 所有现代科学和工程领域几乎都可以采用计算机图形以加强信息的传递和理解,因此当今的科学家和工程师都需要具备计算机图形学的基本知识。 计算机图形学来源于生活、科学、工程技术、艺术、音乐、舞蹈、电影制作等,反过来,又大大促进了这些领域的发展。,计算机图形学涉及怎样用计算机去产生、表示、操作和处理图示物体。它与一般的科学计算不同。 在一般的科学计算中,涉及的是数字运算, 在计算机图形学中则是以基本的几何元素为其运算对象的。这些几何元素描述物体的模拟图示表示:符号、线图、阴
3、影区域和物体等。 研究计算机图形学的主要工具是图形显示系统和绘图机、打印机等,乃至三维虚拟环境。,什么是计算机图形学,Computer Graphics (CG),计算机图形学是研究怎样用计算机表示、生成、处理和显示图形的原理、算法、方法和技术的一门学科。,国际标准化组织(ISO)的定义: 计算机图形学是研究通过计算机将数据转换为图形,并在专门显示设备上显示的原理、方法和技术的学科。它是建立在传统的图学理论、应用数学和计算机科学基础上的一门边缘学科。,1.1 计算机图形学及它与其他学科的关系,计算机图形学与其他学科CAD(及计算机绘图)、计算几何/计算机辅助几何设计(CAGD)、图像(及识别)
4、等的关系是界线模糊、相互交叉、相互渗透的。,图像(image):计算机中以具有颜色信息的点阵来表示的图形,它强调图形由哪些点组成,记录点及它的灰度或色彩。,图形(graphics):计算机中由场景的几何模型和景物的物理属性表示的图形,它更强调场景的几何表示,记录图形的形状参数与属性参数。它的显示形式是基于线条信息的矢量图和基于明暗(Shading)处理后的图像图。,1.1 计算机图形学及它与其他学科的关系,1.1 计算机图形学及它与其他学科的关系,计算机图形学最直观目的是将具有属性信息的几何模型(以图像形式)显示在计算机上。,在CAD/计算机绘图等应用中,常通过图像识别和反求工程等得到几何模型
5、。,1.1 计算机图形学及它与其他学科的关系,处理几何模型的主要理论是计算几何/计算机辅助几何设计(CAGD)和计算机图形学。,计算几何/计算机辅助几何设计( CAGD) 集中在曲线、曲面的生成和处理。,而几何造型等常被认为是计算机图形学的工作。,1.1 计算机图形学及它与其他学科的关系,处理图像信息的主要理论是数字图像处理。,上述各种理论、方法和技术的基础是数学、数据结构和程序设计等,1950年,第一台图形显示器作为美国麻省理工学院(MIT)旋风I号(Whirlwind I)计算机的附件诞生了。该显示器用一个类似于示波器的阴极射线管(CRT)来显示一些简单的图形。1958年美国Calcomp
6、公司由联机的数字记录仪发展成滚筒式绘图仪,GerBer公司把数控机床发展成为平板式绘图仪。 到50年代末期,MIT的林肯实验室在“旋风”计算机上开发SAGE空中防御体系,第一次使用了具有指挥和控制功能的CRT显示器,操作者可以用笔在屏幕上指出被确定的目标。 在整个50年代,计算机图形学处于准备和酝酿时期,并称之为:“被动式”图形学。,1.2计算机图形学发展简史,1962年,MIT林肯实验室的Ivan E.Sutherland发表了一篇题为“Sketchpad:一个人机交互通信的图形系统”的博士论文, 首次使用“Computer Graphics”这个术语,证明了交互计算机图形学是一个可行的有用
7、的研究领域。 1964年MIT的教授Steven A. Coons提出了被后人称为超限插值的新思想,通过插值四条任意的边界曲线来构造曲面。同在60年代早期,法国雷诺汽车公司的工程师Pierre Bzier发展了一套Bzier曲线、曲面的理论,成功地用于几何外形设计。Coons方法和Bzier方法是CAGD最早的开创性工作。,1.2计算机图形学发展简史,70年代是计算机图形学发展过程中一个重要的历史时期。光栅显示器的产生,图形学进入了第一个兴盛的时期,并开始出现实用的CAD图形系统。 1977、1979年开始,计算机图形学标准制定: CGI(Computer Graphics Interface
8、) CGM(Computer Graphics Metafile) GKS(Graphics Kernel system) PHIGS(Programmers Hierarchical Interactive Graphics Standard)等。,1.2计算机图形学发展简史,70年代,计算机图形学另外两个重要进展是真实感图形学和实体造型技术的产生。 1970年Bouknight提出了第一个光反射模型, 1971年Gourand提出“漫反射模型插值”的思想,被称为Gourand明暗处理。 1975年Phong 提出了著名的简单光照模型Phong模型。 这些可以算是真实感图形学最早的开创性工作
9、。 从1973年开始,相继出现了英国剑桥大学CAD小组的Build系统、美国罗彻斯特大学的PADL-1系统等实体造型系统。,1.2计算机图形学发展简史,1980年Whitted提出了一个光透视模型Whitted模型,并第一次给出光线跟踪算法的范例,实现Whitted模型。 1984年,美国Cornell大学和日本广岛大学的学者分别将热辐射工程中的辐射度方法引入到计算机图形学中,用辐射度方法成功地模拟了理想漫反射表面间的多重漫反射效果。,1.2计算机图形学发展简史,光线跟踪算法和辐射度算法的提出,标志着真实感图形的显示算法已逐渐成熟。 从80年代中期以来,超大规模集成电路的发展,为图形学的飞速发
10、展奠定了物质基础。计算机的运算能力的提高,图形处理速度的加快,使得图形学的各个研究方向得到充分发展。图形学已广泛应用于动画、科学计算可视化、CAD/CAM、影视娱乐等各个领域。,1.2计算机图形学发展简史,最后, 强调一下SIGGRAPH 会议, “The Special Interest Group on Computer Graphics and Interactive Techniques” ACM SIGGRAPH会议是计算机图形学最权威的国际会议,每年在美国召开,参加会议的人在50,000人左右。世界上没有第二个领域每年召开如此规模巨大的专业会议,SIGGRAPH会议很大程度上促进了
11、图形学的发展。1974 年在Colorado 大学召开了第一届SIGGRAPH 年会。 因为每年只录取大约50篇论文,在Computer Graphics杂志上发表,因此论文的学术水平较高,基本上代表了图形学的主流方向。,1.2计算机图形学发展简史,1.3计算机图形学的应用领域,1.3.1 图形用户接口,用户接口是人们使用计算机的第一观感。一个友好的图形化的用户界面能够大大提高软件的易用性,在DOS时代,计算机的易用性很差,编写一个图形化的界面要费去大量的劳动,过去软件中有60的程序是用来处理与用户接口有关的问题和功能的。 进入80年代后,随着Xwindow标准的面世,苹果公司图形化操作系统的
12、推出, 特别是微软公司Windows操作系统的普及,标志着图形学已经全面融入计算机的方方面面。 目前几个大的软件公司都在研究下一代用户界面,开发面向主流应用的自然、高效多通道的用户界面。研究多通道语义模型、多通道整合算法及其软件结构和界面范式是当前用户界面和接口方面研究的主流方向,而图形学在其中起主导作用。,人机交互技术通常是以WIMP为特征的图形用户界面: W(Window,窗口):用户可以随意在屏幕上创建、移动和缩放窗口,在不同的窗口中可以执行不同的任务。 I(Icon,图标):它形象化地标示一个对象或功能。 M(Menu,菜单):提供选项功能,避免命令记忆之苦。 P(Pointing D
13、evices,指点设备):便于用户对屏幕对象进行直接操作。,1.3.1 图形用户接口,计算机辅助设计( Computer Aided Design)和计算机图形学( Computer Graphics)是紧密联系在一起的。 国内计算机辅助设计和图形学学报 国外Computer Aided Design CAD/CAM是CG在工业界最广泛、最活跃的应用领域。 飞机、汽车、船舶、机电、轻工、服装的外形设计 集成电路、印刷电路板的设计 建筑设计 基于工程图纸的三维形体重建,1.3.2 计算机辅助设计与制造工业领域,CAD系统中的一个难点参数设计问题,几何约束满足问题( Geometric Const
14、raint Satisfaction Problem,GCSP):给定一组几何元素和一组描述几何元素间关系的约束条件,求解这组几何元素以满足这组约束。GCSP的求解是智能CAD系统中参数化设计的核心问题,也是人工智能、软件工程、工程设计等领域的研究课题。 在网络环境下进行异地、异构系统的协同设计,已经成为CAD领域最热门的课题之一。异地设计、异地制造、异地装配为企业在市场竞争中赢得了宝贵的时间。,1.3.2 计算机辅助设计与制造工业领域,三维几何造型系统基本上代表了CAD技术的发展方向。CAD另一个非常重要的研究领域就是基于工程图纸的三维形体重建。目前的重建算法主要是针对多面体和对主轴方向有严
15、格限制的二次曲面体的。 任意曲面体的三维形体重建,至今仍是一个未解决的难题。,1.3.2 计算机辅助设计与制造工业领域,(a)工程图,应 用 举 例,(b)线框图,(c)实体图,Boeing 777, 无纸设计,无纸制造,在飞机工业中,美国波音飞机公司已用有关的CAD系统实现波音777大型客机的整体设计和模拟,其中包括飞机外型、内部零部件的安装和检验。使其设计制造成本下降30%以上 。,计算机动画是计算机图形学和艺术相结合的产物,它综合利用计算机科学、艺术、数学、物理学和其它相关学科的知识在计算机上生成绚丽多彩的连续的虚拟真实画面,给人们提供了一个充分展示个人想象力和艺术才能的新天地。 简单地
16、讲,计算机动画是指用绘制程序生成一系列的景物画面,其中当前帧画面是对前一帧画面的部分修改。 动画是运动中的艺术,正如动画大师John Halas所讲的,运动是动画的要素。计算机动画所生成的是一个虚拟的世界,动画师可以随心所欲地创造他的虚幻世界,为我们的世界增添更多的色彩。 3D射击游戏例子,1.3.3 计算机动画商业领域,影视制作,计算机动画技术还被广泛用于电影电视中的特技镜头的制作,产生以假乱真而又惊险的特技效果,如模拟大楼被炸、桥梁坍塌等。,影片珍珠港剧照。由电脑制作出的灾难景象。,1.3.3 计算机动画商业领域,1.3.4 计算机艺术艺术领域,含义很广 以计算机为工具,可以完成多种艺术品
17、的制作和设计,如绘画(平面图形)、雕塑(立体图形)、音乐、平面构成、空间结构,还有体操舞蹈设计等等。其中,美术作品占比重最大 因此,计算机艺术由主要指计算机美术,计算机平面绘画艺术 计算机绘画(Computer Painting) 主要指人们利用鼠标或数字压感光笔直接在屏幕或数字化板上进行的绘画 软件包括:Corel Painter 或 Adobe Photoshop 等 该类绘画最接近于传统绘画,其画风细腻、形象生动自然。但画幅一般较小,要求绘画者有较高的美术功底。 优势为:易于修改、效果丰富、成本较低、但对于电脑设备要求较高。 近期广泛应用于手绘动画和漫画创作。,1.3.4 计算机艺术艺术
18、领域,计算机平面合成艺术 计算机数字图像合成艺术(Computer Image Editing and Montage Art) 主要指利用电脑对扫描或数字相机导入的图像素材进行编辑和合成,以及进行后期特技处理所产生的新视觉作品 软件包括:Corel Painter 或 Adobe Photoshop 等。 该类作品接近于传统摄影特技,并带有“蒙太奇艺术”的特点,许多合成图像带有荒诞、刺激、搞笑、离奇和超现实主义风格的效果。 优势为:易于掌握和普及、效果丰富、成本较低。 广泛应用于影视后期和多媒体创作。和应用美术及广告设计的关系十分密切。,1.3.4 计算机艺术艺术领域,可用于美术创作的软件很
19、多,如二维平面的画笔程序(如CorelDraw,Photoshop,PaintShop)专门的图表绘制软件(如Visio)、三维建模和渲染软件包(如3DMAX,Maya)、以及一些专门生成动画的软件(如Alias,SoftImage)等。 这些软件不仅提供多种风格的画笔、画刷,而且提供多种多样的纹理贴图,甚至能对图像进行雾化/变形等操作。很多功能是一个传统的艺术家无法实现也不可想象的。 当然,传统艺术的一些效果也是上述软件所不能达到的。例如钢笔素描的效果,由于钢笔素描与传统的图形学绘制方法差别很大,所以研究起来难度也颇大,很多学者已在这方面做了卓有成效的工作,取得了一定的成果。,1.3.4 计
20、算机艺术艺术领域,1.3.5 非真实感绘制(NPR Non-Photorealistic Rendering ),非真实感图形比真实感图形应用更广泛,如文学读物插图,其中儿童读物插图量最大; 用数字方法对传统绘画进行模拟以掌握其规律性的东西; 传统动画都是非真实感的,现在需要用计算机技术再现它们,钢笔画效果,钢笔素描产生于中世纪,从19世纪开始成为一门艺术,然而用计算机模拟钢笔绘画却是20世纪90年代的事情。,铅笔画效果,油画效果,水彩画效果,基于图像的NPR,石油化工、金属冶炼、电网控制的工作人员根据设备关键部位的传感器送来得图像和数据,对设备运行过程进行监控机场、铁路的调度人员通过计算机产
21、生运行状态信息来调整空中交通和铁路运输,1.3.6 过程控制,飞行模拟舱用光栅扫描器产生驾驶员在驾驶舱中预期所能看到的景象,对飞行员进行单飞前的地面训练和飞机格斗训练等,1.3.7 系统环境模拟,绘制表示经济信息的各类二、三维统计管理图表 信息可视化:信息流量,商业统计数据,股市行情,1.3.8 事务和商务数据图形显示,地理信息系统(GIS) 数字地球,地形数据作为载体,(70)全球信息化. 军事,政府决策,旅游,资源调查。 地理图、地形图、矿藏分布图、气象气流图、植物分布图,1.3.9 地形地貌和自然资源的图形显示,不同于可视化计算 科学计算可视化是 将科学计算过程中的数据及结果数据转换为图
22、像 实际上也包括了工程计算可视化和测量数据可视化 其核心是三维数据场的可视化。 可应用于气象预报、(CT)医学图象重建、流场、湍流、激波、石油地质勘探、环境保护、核爆炸模拟、计算流体力学、天体物理、分子生物学、有限元分析、等许多领域。,1.3.10 科学计算可视化,将医用CT扫描的数据转化为三维图象,并通过一定的技术生成在人体内漫游的图象,使得医生能够看到并准确地判别病人的体内的患处,然后通过碰撞检测一类的技术实现手术效果的反馈,帮助医生成功完成手术。 台湾pcexpert公司研制的LSVR系统逼真地模拟了腹腔手术,进行过程教学、手术成果检验等,1.3.11 虚拟手术仿真,CAI, 教学娱乐。
23、 在计算机控制下,对多种媒体信息进行生成、操作、表现、存储、通信、或集成的信息系统 计算机处理的常见媒体:文本、图形、图像、语音、音频、视频、动画 特点:媒体的多样性、操作的交互性、系统的集成性,1.3.11 多媒体应用,1.4计算机图形学研究的基本问题,图形描述基本几何:直线、圆弧等;高级几何:曲线、曲面等图形变换二、三维变换、三维到二维、观察流程、几何变换等图形运算基本几何间的计算、裁剪、布尔运算等图形显示/输出基本图形生成算法、消隐、绘图、光照模型等图形输入交互技术、参数化设计、造型技术等算法和算法复杂性分析空间和时间等,1.4.1 图形描述,一个物体的计算机描述叫做模型,它能被计算机所
24、懂得,并在一定的条件下(变换和投影)被转换成相应的图形在显示屏幕或绘图机上输出; 而图形是模型的一个具体可见像,是人 们所看到的模型的表征。不能把两者混为一谈。 在三维空间,描述的是几何形体和几何曲面,只有在平面上,它才是人们通常所称的图形。 几何形体以封闭的表面表示,一般为一个由平面和曲面围成的多面体。 一个几何形体在空间上应是完备的(几何性和拓扑性),而且包含足够的用于推导的任何空间函数(如直线方程、平面方程、曲面构造等)以及进行各种形体运算与处理的信息。,在多面体表示中,有关的基本元素(体、面、环棱和顶点)的信息分为二大类: 几何信息:用以确定每个分量在欧氏空间中的几何位置(如点坐标)和
25、描述(如平面方程系数); 拓扑信息:用来定义几何元素的数目及相互 间的连接关系。 几何信息只考虑点、线和无限面。 拓扑信息将点看作顶点,将线限制为棱(线段),由外环和内环定义出面和内孔。 一个完全的三维几何体描述,几何信息和拓扑信息两者都是必要的。,1.4.1 图形描述,1.4.1 图形描述,描述一个多面体各元素之间的拓扑关系可以互相推导。故理论上只需存储一种关系就行了,但由于关系的推导要付出代价,所以一般的系统常同时存储若于种拓扑关系。 这些拓扑关系,既要足够地表示出几何形体的构造,又要尽量压缩信息的存储量,且要便于检索和修改,而十分重要的是要便于计算机的自动生成。 对于曲表面的几何形体,需
26、分别研究自由曲线和自由曲面的建立; 用于插值和数学放样的三次样条函数是应用得最早研究得最详尽的一种。,1.4.1 图形描述,Bezier曲线和曲面与B样条曲线和曲面是在计算机辅助几何设计应用最广的曲线和曲面几何构型方法。 关于这些方面的研究,至今仍在继续发展中。 平面上图形的描述是基于直线和圆弧的描述。仅用这两种基本几何元素就可构成平面上的任何图形。因而直线段和圆弧段也叫基本几何段,本教程将详加阐述。 数据结构技术在图形描述中起着关键的作用。线性链接表、树结构、堆栈、队列等将广泛应用于几何模型的描述、运算和显示中。,1.4.2 图形输入,图形输入需要解决的问题是: 交互输入的方法。 工程设计图
27、纸直接输入(矢量识别)的方法。 将自由手书的立体构造或三视图重构的方法。 计算机自动生成方法。 从物体的多幅深度图像重建三维几何模型。 通过三维激光扫描仪在物体表面测得一些离散点,再用重构算法生成网格模型等等。,图形输入的常规方法是将事先写好的源程序(指令)在屏幕上输入,即所谓的编程输入,使得人、机之间的交互作用缓慢。 对于工程上常用的一类规格化图形,可以编制一个通用程序,采用格式数据输入的办法得到图形。 但是在处理三维的,或是形状复杂的物体时还有较多的困难,输入数据太多就是一个障碍。,1.4.2 图形输入,除了这种图形的直接输入之外,通过对基本体元的构型产生新的、复杂的三维物体也是一种输入的
28、手段,当然这需要涉及更多的研究。 从计算机图形学的发展情况看,对图形输出的研究多于对图形输入的研究,许多人往往被计算机输出的美妙图形所迷惑,却看不到为得到这些图形所做的大量数据输入的准备工作。 图形输入的工作量和难度并不亚于几何算法和图形输出。随着时间的推移,图形输入将越来越成为计算图形学应用中的主要障碍。,1.4.2 图形输入,1.4.3 图形变换,一个图形系统需具有图形变换的功能。这种变换包括二维变换、三维变换和三维向二维的变换三种。 对应于几何元素及其选定的坐标系来说,则包括几何变换和坐标系变换两种。这些变换系统称为图形变换。 在构造、产生、处理和输出图形的各个环节,图形变换起着重要的作
29、用。人们可以直接定义一个几何图形或几何体,也可通过对某些几何体的变换去构造新的几何体或其中的某个部份。这种变换可以是平移、放大(缩小)、旋转、反射、错切等。 一个三维场景通常就是由一些基本几何元素通过上述操作构造的。例如,可以通过平移的办法装配一幢建筑物的大部份窗子,这使得图形输入大为简化。 在进行图形处理的过程中,还可以放大一个图形以便使其某一部份能更清楚地显示;缩小图形以便看到图形更多的部份。,1.4.3 图形变换,在显示或绘制一个环境的时候,需要将三维信息映射到二维屏幕上。轴测投影、平行投影和透视投影用于完成这项工作。 在视点改变得非常快或物体相对运动的应用场合,变换必须反复运用。因此,
30、找到一个有效的方法去实现图形变换是十分重要的。采用向量、矩阵和齐次坐标的形式去描述图形变换是一种比较好的办法,它允许将线性代数的一些基本理论应用到图形变换中。 例如一个矩阵对应于一个变换,图形的连续变换可由矩阵的相乘实现,而逆矩阵对应于一个逆变换。 所有的变换都基于点变换,例如对一条线段的变换只需考虑其两个端点的变换就可以了。 基本几何元素描述的变换也和点的变换有密切的联系。 例如描述一条直线的方程系数在不同坐标下的关系也可由点变换的相应变换矩阵求得。,1.4.4 图形运算,在三维空间,图形的运算是一种几何形体的运算,它是CAGD的一个重要操作,这种操作通常叫做物体造型,或几何造型。 设计人员
31、可通过修改立方体,圆柱体之类的基本体元来生成形体。例如通过缩放,通过用集合论中的并、交、非、差等概念所进行的各种布尔运算把一些基本物体体元组合起来。设计人员的职责是把各体元正确地定位下来,使得 这些运算能进行下去。 另一方面几何造型系统还负责估计各体元之间的相互作用,各种相交出现的位置以及它们之间的相互关系,以确保生成法定的三维形体。系统还必须正确地、在计算机限制下内尽可能精确地完成相交分析。,几何造型系统常处理一些比较简单的体元:立方体、圆柱体、楔、嵌条,以直线或圆弧为边界的薄片等。 所涉及的线和面在几何上是简单的直线、圆弧、平面和圆柱面,处理这些由一个正确的方式构造出来的物体的相交,从概念
32、上是比较容易的。 但主要困难在于:虽然几何简单,但多个元素的拼合却是复杂的。 故对于确实复杂的形体的组合问题,所需的几何算法的效率就变得十分重要,需进行几何复杂性分析。,1.4.4 图形运算,1.4.4 图形运算,几何造型系统较之早期图形系统的显著优越之处在于:无需人为干预就能预定形体与执行一连串运算。即具有高度自动化的图形定义或构造、产生处理或演变功能。 几何元素的定向在图形运算中起着相当大的作用。 例如平面图形的几何运算就是建立在以向量为基本几何元素的环的基础上实现的。 直线和圆弧这两种基本几何段的相贯运算是平面图形运算的基础,保证这些算法的准确性,提高这些算法的效率是计算机图形系统一项基
33、础性的工作。,1.4.4 图形输出,图形输出是人 机交互系统中人们能够得到的最直观的结果。它直接向人们显示出计算机图形系统的效果。 相对而言,图形输出计算机图学中研究得最早、最深入、解决得最好的一部份工作。一个物体的制造者可以从一张多视图的图样里了解到许多内容。因此,一个能在二维参考平面里提供综合的,绘制直线和曲线的系统也就提供了画出一个复杂而详细的图形或物体的基础。 但是,图形只是三维物体的某一个特定的不完整的表示。而物体有一种图里没有的,与众不同的特性 完全的三维定义。人们可以随意地在三维空间中把物体旋转和平移以及物体的综合,但一般不能用图形做到这一点。,基本几何(点、直线、圆及圆弧等)和
34、文字的光栅化显示,几何裁剪算法。 基本几何的描述、相交算法,曲线拟合和双圆弧逼近算法,动态显示的插值算法。 图形显示中的裁剪算法,通常称为窗口算法; 隐藏线、隐藏面消除算法。 光照模型及算法。纹理贴图;大规模场景显示算法; 图形显示软件和打印机、绘图机等的图形输出后处理软件等等。,1.4.4 图形输出,1.4.6 几何算法、几何复杂性和计算效率,一个动画程序,一个游戏程序,用户的起码要求是“流畅”。 支撑它的是几何算法,几何复杂性问题及计算的效率。 许多通过交互设计各种形体的系统,其成功的主要断依据是凭视觉。例如套料问题,这在造船、服装等行业是极为有用的,然而至今存在的系统还是由人机交互作用来
35、完成。 而几何造型系统在相交问题的正确算法和处理组合比较复杂问题的能力,这种系统的发展表明,需要多多研究几何算法。,1.4.6 几何算法、几何复杂性和计算效率,几何相交问题在几何算法中占有较大的比重,在平面上,它处理直线和直线,圆弧和直线,圆弧和圆弧等基本几何的相交,在三维空间则是处理直线和平面,平面和平面的相互关系。 但是,并不是所有的处理直线和直线的相交都是简易的。 例如,考虑两个平面多边形相交的状态,按照Shamos (1978)算法,如果这两个多边形是凸的,对于n条边的多边形可以用O(n)的时间解决这个问题。而对于两个任意非凸多边形,为解决这个问题要花O(n2)的时间,可能形成达n2/
36、4个不相叠的凸多边形。,观察一个时间复杂性的例子: 问题:设给定n个已经排序的数的队列,现在要插入一个新的数到这个队列中,并保持队列原有的次序,几何复杂性为O(n)次主算。应用二分法,可降为O(log2n)次。 如果不计检索到元素后对其处理所花费的计算时间,而只对n的步数计算时间,那末当n=60时:n:610-5秒n2:3610-4秒n3:21610-3秒n5:13分钟2n:366世纪3n:1.31013世纪,1.4.6 几何算法、几何复杂性和计算效率,降低几何复杂性是几何算法的一个努力目标,它可以提高算法的效率。 过去开发仅仅能“工作”的算法就常常足够了,即使在某些情况下效率低也无妨。 随着
37、使用计算机进行几何设计的增加,以及要解决问题的范围之扩大,效率、精度和正确性的问题就变得非常重要了。,1.4.6 几何算法、几何复杂性和计算效率,1.5计算机图形学的相关开发技术,计算机图形学经过几十年的发展,已经达到了比较高的水平,目前已有若干图形学软件开发技术。 利用这些开发技术,编写图形程序就容易多了,不必从底层开始,而只需将精力集中到图形程序本身上。,1.5.1 OpenGL,OpenGL:OpenGL 是OpenGraphicsLib的缩写,是一套三维图形处理库,也是该领域的工业标准。OpenGL源于SGI公司为其图形工作站开发的IRIS GL,在跨平台移植过程中发展成为OpenGL
38、。 OpenGL被设计成独立于硬件,独立于窗口系统的,在运行各种操作系统的各种计算机上都可用,并能在网络环境下以客户/服务器模式工作,是专业图形处理、科学计算等高端应用领域的标准图形库。,1.5.1 OpenGL,Microsoft、SGI、IBM、DEC、SUN、HP等大公司都采用了OpenGL作为三维图形标准。 许多软件厂商也纷纷以OpenGL为基础开发出自己的产品,包括动画制作软件Soft Image和3D Studio MAX、仿真软件Open Inventor、VR软件World Tool Kit、CAD软件Pro/Engineer、GIS软件ARC/INFO等等。OpenGL实际上
39、是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL与C+紧密接合,便于实现图形的相关算法,并可保证算法的正确性和可靠性; OpenGL使用简便,效率高。,1.5.2 ACIS,ACIS是美国Spatial Technology公司推出的三维几何引擎,为各种3D造型应用的开发提供了几何造型平台,目前的最高本版已经到了R13。ACIS 能够安装在多种平台上,包括Windows, Linux, Unix, Solaris, AIX等。 ACIS采用了软件组件技术,用C+技术构造,它包含一整套的C+类和函数,开发人员可以使用这些
40、类和函数构造一个面向终端用户的2/3维软件系统。 ACIS是一个基于边界表示法的造型引擎,集线框曲面和实体造型于一体,并允许这三种表示共存于统一的数据结构中。,ACIS系统的造型方法有: 覆盖技术(covering):覆盖一个由曲线组成的闭合区域的曲面 放样技术(lofting):通过一系列的曲线和与这些曲线相关联的曲面来构造新曲面的一种技术 蒙面技术(skinning):在一系列曲线之间构造一个曲面,1.5.2 ACIS,网格曲面(net surfaces):用一族曲线网来定义曲面的u和v参数方向,这为控制最终的曲面形状提供了很大的自由度 规则(law)和图(graph):提供规则类,直接用
41、数学方程定义实体中的边和面 扫掠(sweeping):通过扫描一个轮廓(profile)来生成实体(solid body)或者薄片体(sheet body)。ACIS有三种不同的扫掠操作:规则扫掠、垂直扫掠以及刚性扫掠,1.5.2 ACIS,1.5.3 DirectX,DirectX是一种图形应用程序接口(API),它是一个提高系统性能的加速软件,由微软公司创建开发,微软将其定义为“硬件设备无关性”。DirectX 就是一系列的DLL(Dynamic Link Lib),通过这些DLL,程序员可以在无视于设备差异的情况下访问底层的硬件。DirectX并不是一个单纯的图形API,它是一个用途广泛
42、的API, 它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup和Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。,1.5.3 DirectX,DirectX主要应用于游戏软件的开发。 微软公司给众多的软、硬件商家提供一个共同开发的标准平台(就是DirectX),大家都遵循这个标准,硬件制造商按照此标准研发制造更好的产品,游戏程序员根据这套标准开发游戏。 无论硬件是否支持某特殊效果,只要DirectX标
43、准中有,程序员就可以把它写到游戏中,当这个游戏在硬件上运行,如果此硬件根据DirectX标准把这个效果做到了此硬件驱动程序中,驱动程序驾驭其硬件算出此效果,用户就可以欣赏到此效果。,1.5.4 Java3D,Java3D API是Sun定义的用于实现3D显示的接口。 3D技术是底层的显示技术,Java3D提供了基于Java的上层接口。 Java3D把OpenGL和DirectX这些底层技术包装在Java接口中。这种全新的设计使3D技术变得不再繁琐并且可以加入到J2SE、J2EE的整套架构,这些特性保证了Java3D技术强大的扩展性。,1.5.4 Java3D,Java3D实现了以下三维显示能够
44、用到的功能 生成简单或复杂的形体(也可以调用现有的三维形体) 使形体具有颜色、透明效果、贴图等 在三维环境中生成灯光、移动灯光等 具有行为处理判断能力(键盘、鼠标、定时等) 生成雾、背景、声音等。 使形体变形、移动、生成三维动画等。 编写非常复杂的应用程序,用于各种领域如VR(虚拟现实) Java3D是一个独立的可选组件,可以单独下载,1.5.5 VRML,与以上四种图形API不同, VRML(Virtual Reality Modeling Language)是一种标记语言,而不是一种API开发包。它使用VRML浏览器能读懂的ASC文本格式来描述世界和链接。VRML既可以用来建立真实世界场景
45、的模型,也可以建立虚构的三维世界,就像许多游戏那样。VRML的设计是从在Web上欣赏实时的3D图像开始的。 VRML浏览器,既是插件,又是帮助应用程序,还是独立运行的应用程序,它是传统的虚拟现实中同样也使用的实时3D着色引擎。这使得VRML应用从三维建模和动画应用中分离出来,在三维建模和动画应用中可以预先对前方场景进行着色,但是没有选择方向的自由。,1.5.5 VRML,VRML提供了6+1个自由度,可以沿着三个方向移动,也可以沿着三个方位旋转,同时还可以建立与其他3D空间的超链接。因此VRML是超空间的。 VRML使用场景图(Scene Graph)数据结构来建立3D实境, 这种数据结构是以
46、SGI开发的Open Inventor 3D工具包为基础的一种数据格式。VRML的场景图是 种代表所有3D世界静态特征的节点等级:几何关系、质材、纹理、几何转换、光线、视点以及嵌套结构。 几乎所有生产三维产品的厂商,无论是CAD、建模、动画、VR,还是VRML,它们的结构核心都有场景图。,VRML在许多方面是与HTML平行的。 VRML的文件.wrl是由可阅读的ASC文本构成的。这样一个文本编辑器就可以变成一个VRML世界的生成工具。 程序员可以通过直接操作场景图来得到完全的 控制权和高度的灵活性。,1.5.5 VRML,1.5.6 五种计算机图形开发技术比较,总结,光栅图形学:经典基础算法 基本几何的表示和计算:算法的基础 数据结构:计算机图形学的基础 图形变换:新的叙述方法几何表示 图形输入:三维造型、曲线、曲面 图形输出:光照模型 虚拟现实:计算机图形学的极致应用,