版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机图形学教 师:杨 朝 霞2004年8月中山大学科学计算与计算机应用系教学内容: 概述 计算机图形学的研究、应用、发展;计算机图形系统;三维图形显示流程 几何变换、坐标变换、投影变换真实感图形 光照模型;纹理处理;光栅图形 图元生成;裁剪;反走样;消隐;几何造型 曲线曲面;形体模型;求交;Subdivsion算法综合讲座教材:计算机图形学基础教程, 孙家广、胡家民编著, 清华大学出版社。参考书:计算机图形学,何援军,上海交 通大学要求:平时分占30%,期末成绩占70%。 计算机图形学基础知识数学 方法、算法、代数、几何、近似理论等数据结构 树结构、链表结构等、排序和分类算法等 专业知识 工
2、程知识、美术、剧本创作、动画设计等计算机系统知识 OS、C等本课程的目的对计算机图形学有一个大概的了解对算法和数据结构进行实际的训练独立科研能力的培养和提高团队合作精神的培养和提高计算机图形学的应用和进一步研究的一个入门第一章 计算机图形学概述一. 什么叫计算机图形学?二. 应用三. 发展1.1 什么是计算机图形学 图形是传递信息最主要的媒体之一。人们使用图形来表达与交流思想有着悠久的历史,工程领域和各个科学分支都离不开图。它能使人们通观全局,一目了然。人的眼睛从一张图纸中吸收信息比从一张数据表格吸收信息快得多。若图形和数字互为补充,则可使人们更深刻地认识事物的本质及其内在联系。计算机图形处理
3、使计算机在处理复杂问题后输出离散数据的同时,有可能以图形的形式输出其连续模型。计算机图形学的发展和应用在某种意义上已成为计算机软、硬件发展水平的标志。它已成为一门成熟的学科,是信息技术中不可缺少的重要内容和发展基石。计算机图形学之所以能在它短短的40多年历史中获得飞速发展,其根本原因是图形为传递信息的最主要媒体之一。所有现代科学和工程领域几乎都可以采用计算机图形以加强信息的传递和理解。计算机图形学来源于生活、科学、工程技术、艺术、音乐、舞蹈、电影制作等,反过来,它又大大促进了这些领域的发展。计算机图形学涉及怎样用计算机去产生、表示、操作和处理图示物体。它与一般的科学计算不同。在一般的科学计算中
4、,涉及的是数字运算,在计算机图形学中则是以基本的几何元素为其运算对象的。这些几何元素描述物体的模拟图示表示:符号、线图、阴影区域和物体等。计算机图形学的定义:是研究怎样利用计算机表示、生成、处理和显示图形的原理、算法、方法和技术的一门学科。IEEE定义:Computer graphics is the art or science of producing graphical images with the aid of computer.1.2计算机图形学与其他学科的关系计算机图形学与其他学科CAD(及计算机绘图)、计算几何/计算机辅助几何设计(CAGD)、图像(及识别)等的关系是界线模糊、
5、相互交叉、相互渗透的。图像(image):计算机中以具有颜色信息的点阵来表示的图形,它强调图形由哪些点组成,记录点及它的灰度或色彩。图形(graphics):计算机中由场景的几何模型和景物的物理属性表示的图形,它更强调场景的几何表示,记录图形的形状参数与属性参数。它的显示形式是基于线条信息的矢量图和基于明暗(Shading)处理后的图像图。计算机图形学最直观目的是将具有属性信息的几何模型(以图像形式)显示在计算机上。在CAD/计算机绘图等应用中,常通过图像识别和反求工程等得到几何模型。处理几何模型的主要理论是计算几何/计算机辅助几何设计(CAGD)和计算机图形学。计算几何/计算机辅助几何设计(
6、 CAGD) 集中在曲线、曲面的生成和处理。而几何造型等常被认为是计算机图形学的工作。处理图像信息的主要理论是数字图像处理。上述各种理论、方法和技术的基础是数学、数据结构和程序设计等。1.3计算机图形学发展简史1950年,第一台图形显示器作为美国麻省理工学院(MIT)旋风I号(Whirlwind I)计算机的附件诞生了。该显示器用一个类似于示波器的阴极射线管(CRT)来显示一些简单的图形。1958年美国Calcomp公司由联机的数字记录仪发展成滚筒式绘图仪,GerBer公司把数控机床发展成为平板式绘图仪。到50年代末期,MIT的林肯实验室在“旋风”计算机上开发SAGE空中防御体系,第一次使用了
7、具有指挥和控制功能的CRT显示器,操作者可以用笔在屏幕上指出被确定的目标。在整个50年代,计算机图形学处于准备和酝酿时期,并称之为:“被动式”图形学。1962年,MIT林肯实验室的Ivan E.Sutherland发表了一篇题为“Sketchpad:一个人机交互通信的图形系统”的博士论文, 首次使用“Computer Graphics”这个术语,证明了交互计算机图形学是一个可行的、有用的研究领域。1964年MIT的教授Steven A. Coons提出了被后人称为超限插值的新思想,通过插值四条任意的边界曲线来构造曲面。同在60年代早期,法国雷诺汽车公司的工程师Pierre Bzier发展了一套
8、Bzier曲线、曲面的理论,成功地用于几何外形设计。Coons方法和Bzier方法是CAGD最早的开创性工作。70年代是计算机图形学发展过程中一个重要的历史时期。光栅显示器的产生,图形学进入了第一个兴盛的时期,并开始出现实用的CAD图形系统。1977、1979年开始,计算机图形学标准制定: CGI(Computer Graphics Interface) CGM(Computer Graphics Metafile) GKS(Graphics Kernel system) PHIGS(Programmers Hierarchical Interactive Graphics Standard)
9、等。70年代,计算机图形学另外两个重要进展是真实感图形学和实体造型技术的产生。1970年Bouknight提出了第一个光反射模型。1971年Gourand提出“漫反射模型插值”的思想,被称为Gourand明暗处理。1975年Phong 提出了著名的简单光照模型Phong模型。 这些可以算是真实感图形学最早的开创性工作。从1973年开始,相继出现了英国剑桥大学CAD小组的Build系统、美国罗彻斯特大学的PADL-1系统等实体造型系统。1980年Whitted提出了一个光透视模型Whitted模型,并第一次给出光线跟踪算法的范例,实现Whitted模型。1984年,美国Cornell大学和日本广
10、岛大学的学者分别将热辐射工程中的辐射度方法引入到计算机图形学中,用辐射度方法成功地模拟了理想漫反射表面间的多重漫反射效果。光线跟踪算法和辐射度算法的提出,标志着真实感图形的显示算法已逐渐成熟。从80年代中期以来,超大规模集成电路的发展,为图形学的飞速发展奠定了物质基础。计算机的运算能力的提高,图形处理速度的加快,使得图形学的各个研究方向得到充分发展。图形学已广泛应用于动画、科学计算可视化、CAD/CAM、影视娱乐等各个领域。最后, 强调一下SIGGRAPH 会议, “The Special Interest Group on Computer Graphics and Interactive
11、Techniques”ACM SIGGRAPH会议是计算机图形学最权威的国际会议,每年在美国召开,参加会议的人在50,000人左右。世界上没有第二个领域每年召开如此规模巨大的专业会议,SIGGRAPH会议很大程度上促进了图形学的发展。1974 年在Colorado 大学召开了第一届SIGGRAPH 年会。因为每年只录取大约50篇论文,在Computer Graphics杂志上发表,因此论文的学术水平较高,基本上代表了图形学的主流方向。1.4计算机图形学的应用领域计算机辅助设计与制造科学计算可视化虚拟现实计算机艺术计算机动画图形用户接口1.4.1计算机辅助设计与制造计算机辅助设计( Comput
12、er Aided Design) 和计算机图形学( Computer Graphics)是紧密联系在一起的。国内计算机辅助设计和图形学学报国外Computer Aided Design CAD/CAM是计算机图形学在工业界最广泛、最活跃的应用领域,比如飞机、汽车、土建、机械、船舶、化工等等。CAD系统中的一个难点参数设计问题,几何约束满足问题( Geometric Constraint Satisfaction Problem,GCSP):给定一组几何元素和一组描述几何元素间关系的约束条件,求解这组几何元素以满足这组约束。GCSP的求解是智能CAD系统中参数化设计的核心问题,也是人工智能、软件
13、工程、工程设计等领域的研究课题。在网络环境下进行异地、异构系统的协同设计,已经成为CAD领域最热门的课题之一。异地设计、异地制造、异地装配为企业在市场竞争中赢得了宝贵的时间。三维几何造型系统基本上代表了CAD技术的发展方向。CAD另一个非常重要的研究领域就是基于工程图纸的三维形体重建。目前的重建算法主要是针对多面体和对主轴方向有严格限制的二次曲面体的。任意曲面体的三维形体重建,至今仍是一个未解决的难题。1.4.2科学计算可视化科学技术的迅猛发展,数据量的与日俱增,如果能将这些数据用图形形式表示出来,常常会使问题迎刃而解。1986年,美国科学基金会(NSF)专门召开了一次研讨会, 会上提出了“科
14、学计算可视化(Visualization in Scientific Computing,简称为ViSC)”。第二年,美国计算机成像专业委员会向NSF提交了“科学计算可视化的研究报告”后,ViSC就迅速发展起来了。科学计算可视化广泛应用于医学、流体力学、有限元分析、气象分析当中。在医学领域,可视化有着广阔的发展前途。1.4.3虚拟现实简单地说,虚拟现实技术就是利用计算机生成一个逼真的三维虚拟环境,通过自然技能使用传感设备与之相互作用的新技术。 q它与传统的模拟技术完全不同,是将模拟环境、视景系统和仿真系统合三为一,利用头盔显示器、图形眼镜、数据服、立体声耳机、数据手套及脚踏板等传感装置,把操作
15、者与计算机生成的三维虚拟环境连结在一起。与传统计算机相比,虚拟现实系统具有三个重要特征:临境性、交互性、想象性。虚拟现实建模语言VRML是描述虚拟环境中场景的一种标准,可以利用它在INTERNET建立交互式的三维多媒体环境。 qVRML的基本特征包括分布式、交互式、平台无关、三维、多媒体集成和逼真自然等,国际标准化组织1998年1月正式将其批准为国际标准。1.3.4计算机艺术可用于美术创作的软件很多,如二维平面的画笔程序(如CorelDraw,Photoshop,PaintShop)、专门的图表绘制软件(如Visio)、三维建模和渲染软件包(如3DMAX,Maya)、以及一些专门生成动画的软件
16、(如Alias,SoftImage)等。这些软件不仅提供多种风格的画笔、画刷,而且提供多种多样的纹理贴图,甚至能对图像进行雾化/变形等操作。很多功能是一个传统的艺术家无法实现也不可想象的。当然,传统艺术的一些效果也是上述软件所不能达到的。例如钢笔素描的效果,由于钢笔素描与传统的图形学绘制方法差别很大,所以研究起来难度也颇大,很多学者已在这方面做了卓有成效的工作,取得了一定的成果。1.3.5计算机动画计算机动画是计算机图形学和艺术相结合的产物,它综合利用计算机科学、艺术、数学、物理学和其它相关学科的知识在计算机上生成绚丽多彩的连续的虚拟真实画面,给人们提供了一个充分展示个人想象力和艺术才能的新天
17、地。1.3.6图形用户接口用户接口是人们使用计算机的第一观感。一个友好的图形化的用户界面能够大大提高软件的易用性,在DOS时代,计算机的易用性很差,编写一个图形化的界面要费去大量的劳动,过去软件中有60的程序是用来处理与用户接口有关的问题和功能的。进入80年代后,随着Xwindow标准的面世,苹果公司图形化操作系统的推出, 特别是微软公司Windows操作系统的普及,标志着图形学已经全面融入计算机的方方面面。目前几个大的软件公司都在研究下一代用户界面,开发面向主流应用的自然、高效多通道的用户界面。研究多通道语义模型、多通道整合算法及其软件结构和界面范式是当前用户界面和接口方面研究的主流方向,而
18、图形学在其中起主导作用。人机交互技术通常是以WIMP为特征的图形用户界面: qW(Window,窗口):用户可以随意在屏幕上创建、移动和缩放窗口,在不同的窗口中可以执行不同的任务。 qI(Icon,图标):它形象化地标示一个对象或功能。 qM(Menu,菜单):提供选项功能,避免命令记忆之苦。 qP(Pointing Devices,指点设备):便于用户对屏幕对象进行直接操作。1.4计算机图形学研究的基本问题图形描述 基本几何:直线、圆弧等;高级几何:曲线、曲面等图形变换 二、三维变换、三维到二维、观察流程、几何变换等图形运算 基本几何间的计算、裁剪、布尔运算等图形显示/输出 基本图形生成算法
19、、消隐、绘图、光照模型等图形输入 交互技术、参数化设计、造型技术等算法和算法复杂性分析 空间和时间等1.4.1 图形描述一个物体的计算机描述叫做模型,它能被计算机所懂得,并在一定的条件下(变换和投影)被转换成相应的图形在显示屏幕或绘图机上输出;图形是模型的一个具体可见像,是人们所看到的模型的表征。不能把两者混为一谈。在三维空间,描述的是几何形体和几何曲面,只有在平面上,它才是人们通常所称的图形。一个几何形体在空间上应是完备的(几何性和拓扑性),而且包含足够的用于推导的任何空间函数(如直线方程、平面方程、曲面构造等)以及进行各种形体运算与处理的信息。在多面体表示中,有关的基本元素(体、面、环、棱
20、和顶点)的信息分为二大类: q几何信息:用以确定每个分量在欧氏空间中的几何位置(如点坐标)和描述(如平面方程系数); q拓扑信息:用来定义几何元素的数目及相互间的连接关系。几何信息只考虑点、线和无限面。拓扑信息将点看作顶点,将线限制为棱(线段),由外环和内环定义出面和内孔。一个完全的三维几何体描述,几何信息和拓扑信息两者都是必要的。描述一个多面体各元素之间的拓扑关系可以互相推导。故理论上只需存储一种关系就行了,但由于关系的推导要付出代价,所以一般的系统常同时存储若于种拓扑关系。这些拓扑关系,既要足够地表示出几何形体的构造,又要尽量压缩信息的存储量,且要便于检索和修改,而十分重要的是要便于计算机
21、的自动生成。对于曲表面的几何形体,需分别研究自由曲线和自由曲面的建立;用于插值和数学放样的三次样条函数是应用得最早研究得最详尽的一种。Bezier曲线和曲面与B样条曲线和曲面是在计算机辅助几何设计应用最广的曲线和曲面几何构型方法。关于这些方面的研究,至今仍在继续发展中。平面上图形的描述是基于直线和圆弧的描述。仅用这两种基本几何元素就可构成平面上的任何图形。因而直线段和圆弧段也叫基本几何段,本教程将详加阐述。数据结构技术在图形描述中起着关键的作用。线性链接表、树结构、堆栈、队列等将广泛应用于几何模型的描述、运算和显示中。1.4.2 图形输入图形输入需要解决的问题是: 交互输入的方法。 工程设计图
22、纸直接输入(矢量识别)的方法。 将自由手书的立体构造或三视图重构的方法。 计算机自动生成方法。 从物体的多幅深度图像重建三维几何模型。 通过三维激光扫描仪在物体表面测得一些离散 点,再用重构算法生成网格模型等等。图形输入的常规方法是将事先写好的源程序(指令)在屏幕上输入,即所谓的编程输入,使得人、机之间的交互作用缓慢。对于工程上常用的一类规格化图形,可以编制一个通用程序,采用格式数据输入的办法得到图形。但是在处理三维的,或是形状复杂的物体时还有较多的困难,输入数据太多就是一个障碍。除了这种图形的直接输入之外,通过对基本体元的构型产生新的、复杂的三维物体也是一种输入的手段,当然这需要涉及更多的研
23、究。从计算机图形学的发展情况看,对图形输出的研究多于对图形输入的研究,许多人往往被计算机输出的美妙图形所迷惑,却看不到为得到这些图形所做的大量数据输入的准备工作。图形输入的工作量和难度并不亚于几何算法和图形输出。随着时间的推移,图形输入将越来越成为计算图形学应用中的主要障碍。1.4.3图形变换一个图形系统需具有图形变换的功能。这种变换包括二维变换、三维变换和三维向二维的变换三种。对应于几何元素及其选定的坐标系来说,则包括几何变换和坐标系变换两种。这些变换系统称为图形变换。在构造、产生、处理和输出图形的各个环节,图形变换起着重要的作用。人们可以直接定义一个几何图形或几何体,也可通过对某些几何体的
24、变换去构造新的几何体或其中的某个部份。这种变换可以是平移、放大(缩小)、旋转、反射、错切等。一个三维场景通常就是由一些基本几何元素通过上述操作构造的。例如,可以通过平移的办法装配一幢建筑物的大部份窗子,这使得图形输入大为简化。在进行图形处理的过程中,还可以放大一个图形以便使其某一部份能更清楚地显示;缩小图形以便看到图形更多的部份。在显示或绘制一个环境的时候,需要将三维信息映射到二维屏幕上。轴测投影、平行投影和透视投影用于完成这项工作。在视点改变得非常快或物体相对运动的应用场合,变换必须反复运用。因此,找到一个有效的方法去实现图形变换是十分重要的。采用向量、矩阵和齐次坐标的形式去描述图形变换是一
25、种比较好的办法,它允许将线性代数的一些基本理论应用到图形变换中。 q例如一个矩阵对应于一个变换,图形的连续变换可由矩阵的相乘实现,而逆矩阵对应于一个逆变换。所有的变换都基于点变换,例如对一条线段的变换只需考虑其两个端点的变换就可以了。基本几何元素描述的变换也和点的变换有密切的联系。 q例如描述一条直线的方程系数在不同坐标下的关系也可由点变换的相应变换矩阵求得。在三维空间,图形的运算是一种几何形体的运算,它是CAGD的一个重要操作,这种操作通常叫做物体造型,或几何造型。设计人员可通过修改立方体,圆柱体之类的基本体元来生成形体。例如通过缩放,通过用集合论中的并、交、非、差等概念所进行的各种布尔运算
26、把一些基本物体体元组合起来。设计人员的职责是把各体元正确地定位下来,使得这些运算能进行下去。另一方面几何造型系统还负责估计各体元之间的相互作用,各种相交出现的位置以及它们之间的相互关系,以确保生成法定的三维形体。系统还必须正确地、在计算机限制下内尽可能精确地完成相交分析。几何造型系统常处理一些比较简单的体元:立方体、圆柱体、楔、嵌条,以直线或圆弧为边界的薄片等。 q所涉及的线和面在几何上是简单的直线、圆弧、平面和圆柱面,处理这些由一个正确的方式构造出来的物体的相交,从概念上是比较容易的。但主要困难在于:虽然几何简单,但多个元素的拼合却是复杂的。 q故对于确实复杂的形体的组合问题,所需的几何算法
27、的效率就变得十分重要,需进行几何复杂性分析。几何造型系统较之早期图形系统的显著优越之处在于:无需人为干预就能预定形体与执行一连串运算。即具有高度自动化的图形定义或构造、产生处理或演变功能。 r几何元素的定向在图形运算中起着相当大的作用。 q例如平面图形的几何运算就是建立在以向量为基本几何元素的环的基础上实现的。直线和圆弧这两种基本几何段的相贯运算是平面图形运算的基础,保证这些算法的准确性,提高这些算法的效率是计算机图形系统一项基础性的工作。1.4.4 图形输出图形输出是人 机交互系统中人们能够得到的最直观的结果。它直接向人们显示出计算机图形系统的效果。相对而言,图形输出是计算机图学中研究得最早
28、、最深入、解决得最好的一部份工作。一个物体的制造者可以从一张多视图的图样里了解到许多内容。因此,一个能在二维参考平面里提供综合的,绘制直线和曲线的系统也就提供了画出一个复杂而详细的图形或物体的基础。但是,图形只是三维物体的某一个特定的不完整的表示。而物体有一种图里没有的,与众不同的特性 完全的三维定义。人们可以随意地在三维空间中把物体旋转和平移以及物体的综合,但一般不能用图形做到这一点。基本几何(点、直线、圆及圆弧等)和文字的光栅化显示,几何裁剪算法基本几何的描述、相交算法,曲线拟合和双圆弧逼近算法,动态显示的插值算法。图形显示中的裁剪算法,通常称为窗口算法;隐藏线、隐藏面消除算法。光照模型及
29、算法。纹理贴图;大规模场景显示算法;图形显示软件和打印机、绘图机等的图形输出后处理软件等等。1.4.6 几何算法、几何复杂性和计算效率一个动画程序,一个游戏程序,用户的起码要求是“流畅”;支撑它的是几何算法,几何复杂性问题及计算的效率。许多通过交互设计各种形体的系统,其成功的主要断依据是凭视觉。例如套料问题,这在造船、服装等行业是极为有用的,然而至今存在的系统还是由人机交互作用来完成。而几何造型系统在相交问题的正确算法和处理组合比较复杂问题的能力,这种系统的发展表明,需要多多研究几何算法。降低几何复杂性是几何算法的一个努力目标,它可以提高算法的效率。过去开发仅仅能“工作”的算法就常常足够了,即
30、使在某些情况下效率低也无妨。随着使用计算机进行几何设计的增加,以及要解决问题的范围之扩大,效率、精度和正确性的问题就变得非常重要了。1.5计算机图形学的相关开发技术计算机图形学经过几十年的发展,已经达到了比较高的水平,目前已有若干图形学软件开发技术。利用这些开发技术,编写图形程序就容易多了,不必从底层开始,而只需将精力集中到图形程序本身上。1.5.1 OpenGLOpenGL:OpenGL 是OpenGraphicsLib的缩写,是一套三维图形处理库,也是该领域的工业标准。OpenGL源于SGI公司为其图形工作站开发的IRIS GL,在跨平台移植过程中发展成为OpenGL。OpenGL被设计成
31、独立于硬件,独立于窗口系统的,在运行各种操作系统的各种计算机上都可用,并能在网络环境下以客户/服务器模式工作,是专业图形处理、科学计算等高端应用领域的标准图形库。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实际上是一个开放的三维图形软件包,它独立于窗口系统和操作系统
32、,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL与C+紧密接合,便于实现图形的相关算法,并可保证算法的正确性和可靠性;OpenGL使用简便,效率高。1.5.2 ACISACIS是美国Spatial Technology公司推出的三维几何引擎,为各种3D造型应用的开发提供了几何造型平台,目前的最高本版已经到了R13。ACIS 能够安装在多种平台上,包括Windows, Linux, Unix, Solaris, AIX等。ACIS采用了软件组件技术,用C+技术构造,它包含一整套的C+类和函数,开发人员可以使用这些类和函数构造一个面向终端用户的2/3维软件系统。ACIS是一个
33、基于边界表示法的造型引擎,集线框、曲面和实体造型于一体,并允许这三种表示共存于统一的数据结构中。1.5.3 DirectXDirectX是一种图形应用程序接口(API),它是一个提高系统性能的加速软件,由微软公司创建开发,微软将其定义为“硬件设备无关性”。DirectX 就是一系列的DLL(Dynamic Link Lib),通过这些DLL,程序员可以在无视于设备差异的情况下访问底层的硬件。DirectX并不是一个单纯的图形API,它是一个用途广泛的API, 它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、DirectPlay、D
34、irect Sound、Direct Show、DirectSetup和Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。DirectX主要应用于游戏软件的开发。微软公司给众多的软、硬件商家提供一个共同开发的标准平台(就是DirectX),大家都遵循这个标准,硬件制造商按照此标准研发制造更好的产品,游戏程序员根据这套标准开发游戏。无论硬件是否支持某特殊效果,只要DirectX标准中有,程序员就可以把它写到游戏中,当这个游戏在硬件上运行,如果此硬件根据DirectX标准把这个效果做到了此硬件驱动程序中,驱动程序驾驭其硬件算出此效果,用户就可以欣赏到此效果。1.5
35、.4 Java3DJava3D API是Sun定义的用于实现3D显示的接口。3D技术是底层的显示技术,Java3D提供了基于Java的上层接口。Java3D把OpenGL和DirectX这些底层技术包装在Java接口中。这种全新的设计使3D技术变得不再繁琐并且可以加入到J2SE、J2EE的整套架构,这些特性保证了Java3D技术强大的扩展性。是一个独立的可选组件,可以单独下载1.5.5 VRML与以上四种图形API不同, VRML(Virtual RealityModeling Language)是一种标记语言,而不是一种API开发包。它使用VRML浏览器能读懂的ASC文本格式来描述世界和链接
36、。VRML既可以用来建立真实世界场景的模型,也可以建立虚构的三维世界,就像许多游戏那样。VRML的设计是从在Web上欣赏实时的3D图像开始的。VRML浏览器,既是插件,又是帮助应用程序,还是独立运行的应用程序,它是传统的虚拟现实中同样也使用的实时3D着色引擎。这使得VRML应用从三维建模和动画应用中分离出来,在三维建模和动画应用中可以预先对前方场景进行着色,但是没有选择方向的自由。VRML提供了6+1个自由度,可以沿着三个方向移动,也可以沿着三个方位旋转,同时还可以建立与其他3D空间的超链接。因此VRML是超空间的。VRML使用场景图(Scene Graph)数据结构来建立3D实境, 这种数据
37、结构是以SGI开发的Open Inventor 3D工具包为基础的一种数据格式。VRML在许多方面是与HTML平行的。VRML的文件.wrl是由可阅读的ASC文本构成的。这样一个文本编辑器就可以变成一个VRML世界的生成工具。程序员可以通过直接操作场景图来得到完全的控制权和高度的灵活性。总结光栅图形学:经典基础算法基本几何的表示和计算:算法的基础数据结构:计算机图形学的基础图形变换:新的叙述方法图形输入:三维造型、曲线、曲面图形输出:光照模型虚拟现实:计算机图形学的极致应用第二部分:三维图形显示流程图模型坐标模型变换场景坐标观察变换投影坐标投影变换观察坐标视口变换设备坐标图形变换一个图示系统需
38、要运用各种图形变换。例如可以放大一个图形以便使某一部分能更清楚地显示,缩小图形以便看到图形更多的部分。在几何造型中,可用图形变换改变物体间的相对位置,可用透视变换和投影变换产生同一三维景物在各种不同视点位置和视线方向下的不同影像,在视点改变非常快或物体相对运动的应用场合,变换必须反复运用。因此,找到一个有效的方法去实现图形变换是十分必要的。所有的变换均基于点的变换。例如,一条线段的变换只要考虑它的两个端点的变换就行了采用向量、矩阵和齐次坐标的形式来描述图形的变换十分方便。一个变换是一个单一的数学实体,能够用一个单一的名或符号标识。两个变换能够被结合而产生一个具有二者功效的单一变换。例如变换T是
39、平移,而变换R是旋转,则变换的结合允许决定一个变换A=TR,其功效是先平移然后旋转变换。为了能用矩阵的形式统一描述图形变换,在计算机图形学中常采用齐次坐标的形式来描述空间的点。二维点(x,y)的齐次表示是(hx,hy,h),这里h是任何一个非零因子,有时叫做比例因子。齐次点(a,b,c)被投射回复到二维时简单地就是(a/c,b/c),由比例因子c去除。在计算机中处理一个三维空间的“无穷远点”是困难的,但是可以容易地处理一个四维齐次空间的解析点,例如可以用向量:(1 0 0 0) 表示x轴方向无穷远点(0 1 0 0) 表示y轴方向无穷远点(0 0 1 0) 表示z轴方向无穷远点(0 0 0 1
40、) 表示坐标原点 这4个向量将构成四维齐次空间的单位矩阵齐次变换矩阵提供一个三维空间中包括平移、旋转、透视、投影、反射、错切和比例等变换在内的统一表达式,使得物体的变换可在统一的矩阵形式下进行。窗口与视区窗口(window):在投影平面中定义一个矩形区域,该区域内的对象将予以显示。视区(viewport):在VC中定义一个矩形区域,所有在窗口内的对象都将显示在该区域中。显示流程图窗口与视区第二部分三维变换每个三维点(x,y,z)对应于一个齐次坐标xh,yh,zh,h。所有的三维变换都可通过乘以一个44的变换矩阵来进行。下面介绍四种基本三维变换:平移变换 缩放变换 旋转变换对称变换 三维图形三维
41、变换 平移变换平移变换点(x,y,z)沿x轴方向平移Tx距离, 沿y轴方向平移Ty距离,沿z轴方向平移Tz距离, 变成点(x,y,z),这一变换过程的变换矩阵为:T3(Tx,Ty,Tz)= =T3Tx,Ty,Tz 1 0 0 Tx 0 1 0 Ty 0 0 1 Tz 0 0 0 1TxTzTy三维图形三维变换 xyz1xyz1缩放变换几何图形的三维缩放变换是通过对构成图形的各个点同时进行坐标值的缩放来实现的。 设一个点沿x,y,z轴缩放的比例分别为Sx,Sy,Sz,则缩放变换矩阵可表示为: S3(Sx,Sy,Sz)=Sx 0 0 00 Sy 0 00 0 Sz 00 0 0 1三维图形三维变换
42、 xyz1xyz1= S3(Sx,Sy,Sz) 旋转变换旋转角度为正时,点的旋转方向:在右手坐标系中 旋转轴 相应的旋转方向 x轴从y轴到z轴 y轴从z轴到x轴 z轴从x轴到y轴在左手坐标系中从旋转轴的正向看去,旋转方向是顺时针方向。这样定义旋转方向的原因是为了保证无论在右手坐标系中还是在左手坐标系中,所用的旋转矩阵是相同的。yzx三维图形三维变换 yzxy绕z轴旋转的变换矩阵是Rz()=绕x轴旋转的变换矩阵是Rx()=绕y轴旋转的变换矩阵是Ry()=cos -sin 0 0 sin cos 0 0 0 0 1 0 0 0 0 11 0 0 00 cos -sin 00 sin cos 00
43、0 0 1cos 0 sin 0 0 1 0 0-sin 0 cos 0 0 0 0 1三维图形三维变换 旋转变换绕任意轴旋转yzxP1P2P1P2yxz P2yxz三维图形三维变换 zyxP2(a, b, c) P2abc绕任意轴旋转绕直线P1P2旋转角的过程可分解为下列步骤:把点P1 (x1, y1, z1)移至原点(其它的点做相应的平移);绕x轴旋转,使直线与xz平面重合;绕y轴旋转,使直线与z轴重合;绕z轴旋转角;执行步骤(3)的逆变换;执行步骤(2)的逆变换;执行步骤(1)的逆变换;三维图形三维变换 绕任意轴旋转步骤(1)把点P1(x1,y1,z1)移至原点: 变换矩阵为:T3(-x
44、1,-y1,-z1)=步骤(2)绕x轴旋转,使直线与xz平面重合:设此刻P2(x2,y2,z2) 的坐标变为P2(a,b,c)。可知 cos=c/(b2+c2)1/2;sin=b/(b2+c2)1/2;设d1=(b2+c2)1/2,则变换矩阵为: Rx()=1 0 0 00 c/d1 -b/d1 00 b/d1 c/d1 00 0 0 11 0 0 -x1 0 1 0 -y1 0 0 1 -z1 0 0 0 1yzxP1P2P1P2x三维图形三维变换 zyP2(a, b, c)P2abc绕任意轴旋转步骤(3)绕y轴旋转,使直线与z轴重合:此刻P2的坐标为P2(a,0,d1),可知:cos=-d
45、1/(a2+d12)1/2=-(b2+c2)1/2/(a2+b2+c2)1/2;sin=a/(a2+b2+c2)1/2;令d2 =(a2+b2+c2)1/2,则变换矩阵为: Ry()=步骤(4)绕z轴旋转角,变换矩阵为: Rz()=-d1/d20a/d2 00 1 0 0-a/d2 0-d1/d2 00 0 0 1cos -sin 0 0sin cos 0 0 0 1 0 0 0 0 0 1yxzyxzP2(a,0,d1)三维图形三维变换 绕任意轴旋转步骤(5)执行步骤(3)的逆变换,变换矩阵为Ry(-);步骤(6)执行步骤(2)的逆变换,变换矩阵为Rx(-);步骤(7)执行步骤(1)的逆变换
46、,变换矩阵为T3(x1,y1,z1);综上,绕直线P1P2旋转角的变换矩阵为:R()=T3(x1,y1,z1) Rx(-) Ry(-) Rz() Ry() Rx() T3(-x1,-y1,-z1)注意:变换的过程有多种选择,但如果中间的几个旋转次序变了,则各个矩阵参数的对应矩阵参数也会完全不同。三维图形三维变换 对称变换三维图形三维变换 关于xy平面对称的变换矩阵是SYxy=关于yz平面对称的变换矩阵是SYyz=关于zx平面对称的变换矩阵是SYzx=关于任意平面的对称变换(思考)1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 1-1 0 0 0 0 1 0 0 0 0 1 0 0
47、 0 0 11 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 1坐标系变换同一物体在不同的坐标系中描述时,会有不同的坐标值。在甲坐标系中定义一个物体,那么只要把乙坐标系的坐标轴变换成甲坐标系的坐标轴,就可以在乙坐标系中定义物体了。坐标系平移例1:新坐标系xoy的原点o在坐标系xoy的坐标为(2, 4), 则从xoy到xoy的变换矩阵为T2(-2, -4), xoy坐标系中一点P(4, 5), 在xoy坐标系中的坐标矢量为: T2(-2, -4) =yyooxxP(4,5)(2,4)三维图形坐标系变换 451211坐标系变换坐标系旋转例2:xoy坐标系与xoy坐标系原点重合,将xoy
48、坐标系逆时针旋转45就变成了xoy坐标系,则变换矩阵为: R(/4)= =cos/4-sin/4 0 sin/4cos/4 000 121/2/2-21/2/2021/2/221/2/2000 1yxxyo(o)45。三维图形坐标系变换 坐标系变换坐标系复合变换例3:求变换矩阵为平移矩阵和旋转 矩阵的乘积矩阵: R2(/4) T2(-2,-4)分析根据旋转矩阵,其中,第一行(cos/4, -sin/4, 0)和第二行(sin/4, cos/4, 0)分别是新坐标x轴和y轴在原坐标系中的方向矢量,且为正交单位矢量。cos/4-sin/4 0 sin/4 cos/4000 1yyooxx三维图形坐
49、标系变换 坐标系变换三维坐标系的推广比较适合于给出了旋转角度或很容易求出旋转角度的情况在新坐标系的旋转角度没有给出时,且不易计算。这时一般会给出新坐标系的原点坐标和三个坐标轴的单位方向矢量。三维图形坐标系变换 坐标系变换把给出的新坐标的3个方向矢量分别规格化,得到用原坐标系定义的3个正交单位矢量: u=(ux,uy,uz) v=(vx,vy,vz)w=(wx,wy,wz)新的坐标原点位置是(x,y,z),则变换矩阵为:R3 T3 = ux uy uz 0 vx vy vz 0 wxwy wz 00 0 0 1XYZWZVYUX(X,Y,Z)三维图形100 -x 010 -y 001 -z 0
50、0 0 1坐标系变换 投影变换要把现实世界的三维物体在计算机的二维屏幕上显示出来,必须经过投影变化这一步骤,把物体从三维表示形式转化为二维表示形式。投影变换常用的有平行投影以及透视投影。投影面投影中心投影线ABAB投影面投影中心投影线ABAB三维图形投影变换 投影变换投影变换根据投影线是否平行,可分为:平行投影透视投影平行投影的投影线是平行的;透视投影的投影线是从视点(观察点)出发,投影线是不平行的。三维图形投影变换 平行投影根据投影线与投影平面是否垂直,可分为:正平行投影斜平行投影正平行投影投影方向垂直于投影平面时称为正平行投影三视图(正视图、俯视图、侧视图)和正轴侧(等轴侧、正二侧、正三侧
51、)均属于正平行投影正平行投影俯视图侧视图正视图三维图形投影变换 斜平行投影如果投影方向不垂直于投影平面,则称为斜平行投影。在斜平行投影中,投影平面一般取垂直于坐标平面。yzx(xs,ys)(x,y,z)(xp,yp,zp )三维图形投影变换 一点透视两点透视透视投影单位立方体透视投影的视线是从视点(观察点)出发,视线是不平行的,透视投影按照主灭点的个数分为一点透视,两点透视和三点透视。任何一束不平行于投影平面的平行线的投影将汇聚在一点称之为灭点,平行于坐标轴的平行线的灭点称为主灭点,它的个数由与投影平面相交的坐标轴个数决定。三维图形投影变换 一点透视假设投影中心为原点,投影面平行于xy平面,方
52、程为z=D。设物体上一点 P(x1,y1,z1),它的投影点为P(x,y,z),则z=D。投影线的方程为:x=x1ty=y1t z=z1t:把z =D代入的,得t=D/z1,则: x1 y1 x= D; y= D z1 z1yxDzP(x,y,z)P(x1,y1,z1)三维图形投影变换 一点透视得到投影点的坐标为:(x1/z1)D, (y1/z1)D,D), 即:x1 y1x= D ; y= D; z=D z1 z1若D固定,z1,则x,y即对象越远,成像越小。若视点取无穷远(z1D)时,则: x=x1 ,y=y1此时,透视投影变为正平行投影Doyzz1P(x,y,z)P(x1,y1,z1)投
53、影面Doxzz1P(x,y,z)P(x1,y1,z1)投影面三维图形投影变换 一点透视由上面分析,一点透视投影的变换矩阵为: Per(D)=齐次点Px,y,z,1乘以矩阵Per(D),得到:x=x D /zy=y D /zz=D与前面的结果相吻合。10 0 001 0 000 1 0001/D 0 xyDzP(x,y,z)P(x1,y1,z1)三维图形投影变换 投影变换参数观察坐标系uvn:在进行投影变换时,需要一系列的参数来确定投影面的位置、方向和投影中心的位置。这些参数用来定义观察坐标系。定义视平面(也称投影面):由平面上的一点和平面的法线来定义。视平面上的点为视图参考点(VRP),视平面
54、法线为平面方向(VPN)定义观察坐标系:(用于投影变换)轴n:其方向就是视平面的法线方向轴v:先指定观察正向VUP(它是用来标志物体朝上的方向),其 在视平面上的投影即为v轴,即:v=VUP-(VPNVUP)VPN轴u:使得u, v, n形成一个右手坐标系,即:u= v nVPNVUPVRPuv COP投影平面投影平面窗口三维图形投影变换参数窗口和投影中心定义了一个无限四棱锥体,称为视体积只有在视体积内的物体才会被投影到视平面窗口内显示出来通过制定平行于视平面的前后剪取平面来截取视体积,以删除离视平面过近和过远的物体这样视平面体积是有限的视变换参数后剪取窗口视平面窗口前剪取窗口BFCOP三维图
55、形例:假设有一个场景如下图:定义方法可选用如下两种:直接定义。每一个图形单独定义(模型坐标),然后变换到场景下(世界坐标)。具体步骤见下页。1221例:现将三角形A(1,1,1)B(1,5,5)C(5,5,5)沿着x、y、z轴分别平移2、4、6,求平移后的三角形ABC 。解:将三角形ABC用齐次坐标表示下的矩阵来表示:则平移过程可刻画为: 计算得 因此平移后的三角形ABC的顶点坐标分别为(3,5,7)、(3,9,11)、(7,9,11)。例:求相对于点P的缩放变换矩阵A。解:这一变换可分解为三个基本变换:先平移(T1),再缩放(S),最后再平移(T2)。因此A=T2S T1(这里点的位置矢量必
56、须是列向量形式,如果是行向量,则A=T1S T2)。第二章 光栅图形学 扫描转换 区域填充 字符 裁剪 反走样 消隐 2.1 扫描转换点的扫描转换直线段的扫描转换 圆弧的扫描转换 多边形的扫描转换 第二部分扫描转换2.1.1点的扫描转换几何定义的点(x,y) 实数域像素点(x,y) 整数域 点的扫描转换方法: (1)x=floor(x),y=floor(y) floor的返回值为小于等于参数值的最大整数。 (2)x=round(x),y= round(y) 第二部分扫描转换线画图元生成2.1.2直线段的扫描转换扫描转换直线段:是指计算出落在直线段上或充分靠近它的一串像素,并以此像素集近似代替原
57、连续直线段在屏幕上显示的过程。本节我们只讨论具有1个像素宽度的直线段的扫描转换。 即当该线段的斜率落在-1到1之间时,它在每个扫描列上仅有一个像素;当该线段的斜率的绝对值大于1时,它在每个扫描行上仅有一个像素。为了讨论方便,我们将像素看作是中心为网格点(x,y)的圆点,像素间的距离是均匀的,像素相互不重叠。扫描转换线画图元生成第二部分斜率在-1到 1之间,每个扫描列上仅有一像素。斜率绝对值大于1 ,若每个扫描列上仅有一像素,出现断裂。斜率绝对值大于1 ,若每个扫描行上仅有一像素。直线段的扫描转换在学习直线段的扫描转换时,了解运算速度快慢是评价一个算法好坏的标准。为了简化讨论,假定直线段的顶点为
58、整数坐标点,且 直线段的斜率为 。对 的情况,转化为 即可。第二部分扫描转换线画图元生成直线段的扫描转换生成直线段的 DDA算法: yi+1=kxi+1+b =k(xi+1)+b =yi+k (xi,yi) (xi,yi,r) yi,r=round(yi)第二部分扫描转换线画图元生成0 xyP0P1x0=x0 xn=x1xixi+1=xi+1yiyi+1扫描转换直线段的扫描转换生成直线段的中点算法yi,r=round(yi) yi yi,r-1/2,yi,r+1/2) yi+1 yi,r-1/2,yi,r+3/2) yi,r 当 yi+1yi,r+1/2 yi,r+1 其它第二部分扫描转换线画
59、图元生成假定k 0,1yi+1,r=直线段的扫描转换生成直线段的中点算法 yi+10 (由直线的正负划分性决定) 这里F(x,y)=ax+by+c=0为直线段的方程,具体定义见书19页。 令di=2 F(xi+1,yi,r+1/2) ,则 yi,r 当 di 0 yi,r+1 其它 di+2a 当 di 0 di+2a+2b 其它第二部分扫描转换线画图元生成yi+1,r=F(x,y)=0F(x,y)0F(x,y)0直线的正负划分性di+1=直线段的扫描转换生成直线段的中点算法 (1)初始值(x0,y0,r)=(x0,y0); (2)d0=2F(x1,y0,r+1/2)=2a+b,判别y1,r;
60、 (3)利用递推公式计算di,判别yi+1,r第二部分扫描转换线画图元生成直线段的扫描转换三. 生成直线段的Bresenham算法rBresenham算法是计算机图形学典型的直线光栅化算法。r从另一个角度看直线光栅化显示算法的原理:由直线的斜率确定选择在x方向或y方向上每次递增(减)1个单位,另一变量的递增(减)量为0或1,它取决于实际直线与最近光栅网格点的距离,这个距离的最大误差为0.5。假定直线斜率k在01之间。此时,只需考虑x方向每次递增1个单位,决定y方向每次递增0或1。r设直线的q当前点为(xi,yi)q当前光栅点为(xi,yi,r)r下一个q直线的点应为(xi+1,yi+k)q直线
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届吉林省高中数学高二上期末学业水平测试试题含解析
- 2024年党史知识竞赛题库150题及答案
- 江苏省扬州市江大桥高级中学2025届高三语文第一学期期末学业质量监测模拟试题含解析
- 河北省唐山市十一中2025届高三语文第一学期期末学业质量监测模拟试题含解析
- 2025届云南省玉溪民族中学数学高三第一学期期末教学质量检测模拟试题含解析
- 2025届江苏省江阴市石庄中学高一上数学期末监测试题含解析
- 河北省保定市重点初中2025届生物高二上期末考试模拟试题含解析
- 2025届广东省珠海市示范名校英语高三上期末教学质量检测试题含解析
- 河北省邢台市南和一中2025届高二生物第一学期期末教学质量检测模拟试题含解析
- 2025届北京市丰台区市级名校高三语文第一学期期末调研试题含解析
- 《毒虫咬伤》课件
- 工程施工施工现场材料消耗与管理
- 公司独立董事述职报告编写范文格式
- 八年级上册(语文)期中复习必刷题 14.文言文 试卷(解析)
- 正常胃镜报告
- 正确开具放射科影像检查单课件
- 《企业VI设计》课件
- 中职班主任培训课件
- 优生优育指导工作
- 预防母婴传播
- 水泥的营销方案和策略
评论
0/150
提交评论