西北工业大学计算机图形学重点.doc

上传人:xin****828 文档编号:6670693 上传时间:2020-03-02 格式:DOC 页数:18 大小:2.82MB
返回 下载 相关 举报
西北工业大学计算机图形学重点.doc_第1页
第1页 / 共18页
西北工业大学计算机图形学重点.doc_第2页
第2页 / 共18页
西北工业大学计算机图形学重点.doc_第3页
第3页 / 共18页
点击查看更多>>
资源描述
第一章 绪论计算机图形学是研究怎样用计算机生成、处理和显示图形的一门学科。生成:在计算机内表示客观世界物体的模型,即图形建模;显示:模型对象在计算机显示设备或其他输出设备上的显示;处理:利用计算机实现客观世界、对象模型和输出图形这三者之间映射的一系列操作和处理过程。1.点阵法:枚举出图形中所有的点来表示,强调图形由点及其点的属性(颜色)构成:像素图、位图或图像。一般地,一个图像就是一个矩阵,该矩阵的每一个元素都表示图像某行某列一个点的颜色值,矩阵的维数就是图像的宽度和高度 缺点:点阵图形需要大量的存储空间;对点阵图形进行编辑、修改较困难; 点阵图的放大操作会使图形失真;JPEG, BMP, Tif, GIF, PNG2.参数法:由图形的形状参数和属性参数来表示图形(矢量图、图形) 形状参数(必须有):几何,方程或分析表达式的系数,线段的端点坐标等 属性参数(可选):非几何,颜色、线形等 DXF, OBJ, 3DS几何要素:刻画对象的轮廓、形状、几何元素组成等。 非几何要素:刻画对象的颜色、材质、纹理等。图像:图像一定是二维的。基本单位是像素:组成图像的颜色点(或亮度点),是数字图像的最小信息单位,通常是一个整数,其大小称为像素值。 基本参数图幅参数:也称图像空间分辨率,通常用“行数列数”表示 灰度级分辨率、颜色分辨率 图像分为两色图(黑白)、灰度图、彩色图、真彩色图图形:图形可以是二维的、或者三维的,图形的基本信息包括它的基本几何元素(必须),拓扑关系,以及颜色、材质、纹理等可选要素第二章 图形系统与图像生成计算机图形系统是进行图形处理的计算机系统,是计算机图形硬件和图形软件的集合。图形硬件包括具有图形处理能力的计算机主机、图形显示器以及鼠标和键盘等基本交互工具,还有图形输入板、绘图仪、图形打印机等输入输出设备,以及磁盘、光盘等图形存储设备。图形软件分为图形数据模型、图形应用软件和图形支撑软件三部分。涵盖了计算机系统软件、高级语言和专业应用软件等方面。一个计算机图形系统至少应当具有计算、存储、对话、输入、输出五个方面的基本功能图形系统的硬件就是指执行以上不同功能的各种设备,如计算机、鼠标、扫描仪、显示器、硬盘、绘图仪等。根据具体的业务需求,组成系统的设备是可选的。在系统中,计算机处于核心地位,其他设备与其直接相连。星型设备,其他可选图形输入设备从逻辑上分为六种,但实际的往往是某些逻辑输入功能的组合名称相应典型设备基本功能定位叉丝、鼠标输入一个点的坐标笔划图形输入板输入一系列点的坐标数值键盘输入一个整数或实数选择功能键、光笔、鼠标由一个整数得到某种选择拾取光笔、鼠标、叉丝通过一种拾取状态来判断一个显示的图形字符串键盘输入字符串图形处理器:在图形系统硬件中,为了减轻主机负担,加快图形处理速度,一般都有两个以上的处理器部件,采用流水线、并行处理等技术。除了中央处理器(CPU)之外,还有一个专用的显示处理机(DPU),它与CPU协同工作,并控制显示设备的操作。图形处理器是图形系统结构的重要元件,是连接计算机和显示终端的纽带;早期的图形处理器只包含简单的存储器和帧缓冲区,它们实际上只起了一个图形的存储和传递作用,一切操作都必须有CPU来控制;现在的图形处理器不单单存储图形,而且能完成大部分图形函数,专业的图形卡已经具有很强的3D处理能力,大大减轻了CPU的负担,提高了显示质量和显示速度。图形卡将用于图形显示的处理器(DPU)、视频处理控制器、显示处理存储器以及接口电路等集成在一起,单独做成一块板卡,称为图形显示适配器(简称显卡)。工作站的特点:具有高速的科学计算、丰富的图形功能处理、灵活的窗口界面及网络管理功能的交互式计算机系统。比微机高一个等级的计算机。1.具有32位或64位字长的CPU,广泛采用精简指令系统(RISC);2.配备大容量的内存和外存,运算速度很高,可达20MIPS和5MFLOPS以上;3.一般采用UNIX及类似的操作系统,配有高性能的窗口管理系统,如Motif或OpenLook等;4.具有很强的图形图像处理功能,配有专用的图形图像处理器,大尺寸高分辨率的显示器,如19英寸或21英寸,1280X1024以上的分辨率,颜色深度可达100个位面以上;5.具有网络功能,支持TCP/IP协议;6.基本用户是工程和产品的设计师,主要用于工程和产品的设计与绘图、工业模拟和艺术设计等。从用户角度来看,除工作站比大、中、小型计算机价格便宜外,更主要的是工作站将多种功能集于一身,体积小,通常配有高分辨率的大屏幕显示器及容量很大的内存储器和外部存储器,并且具有较强的信息处理功能和高性能的图形、图像处理功能以及联网功能,为程序设计人员提供一个功能强大、使用方便的工作环境。根据工作站本身的特点,从使用的方便性来讲,它更类似于PC机,有人说:工作站是高档的PC机;从功能和性能方面,它越来越多地覆盖了大、中、小型计算机的应用领域。CRT工作原理:由电子枪发射电子束(阴极射线),通过聚焦系统(电子透镜)和偏转系统,射向涂覆荧光层的屏幕上的指定位置。在电子束冲击的每个位置,荧光层发出一个小亮点,从而产生可见图形。CRT结构功能CRT主要由电子枪、聚焦系统、偏转系统、和荧光屏四部分组成。彩色CRT和单色显示器的不同是由于荧光粉的缘故。目前大多使用的是荫罩式彩色CRT,荫罩是安装在荧光屏的内侧的上面刻有40多万个孔的薄钢板。荫罩孔的作用在于保证三束电子共同穿过同一个荫罩孔,准确的激发荧光粉,使之发出红、绿、蓝三色光。CRT产生彩色显示有两种技术:电子束穿透法,荫罩法。光栅扫描原理:光栅扫描方式中,电子束总是不断地从左至右、从上到下反复扫描整个屏幕,在扫描过程中,只要在对应时刻在对应位置控制电子束的强度就能显示所要的图形。电子束横向从左到右扫描一次称为一条扫描线,在每条扫描线末端,电子束返回到屏幕的左边,又开始显示下一条扫描线。一帧图像是光栅显示系统执行一次全屏幕循环扫描(一次屏幕刷新)所产生的图像。光栅扫描式显示器的特点:光栅扫描显示器是画点设备,可以看作是一个点阵单元发生器,并可控制每个点阵单元的亮度。它不能直接从单元阵列中的一个可编址的像素画一条直线到另一个编址的像素,只能用尽可能靠近这条直线路径的像素点集来近似地表示这条直线。为了得到稳定的画面,光栅扫描显示器每秒要刷新。通常刷新频率至少应为30帧/每秒。随着刷新频率的降低,会出现闪烁。屏幕上每个光点维持发光的时间一般在毫秒或微秒数量级之间,荧光屏的亮度随着时间按指数衰减,整个画面必须在一秒钟内重复显示,才能得到稳定而不闪烁的图形,所以必须重复使荧光物质发光,即使电子束迅速地回到同一点。这称为屏幕刷新。屏幕坐标:光栅扫描显示器的屏幕可分为m行扫描线,每行扫描线有n个像素。这样整个屏幕就分为m*n个像素,m*n 就是显示器的分辨率。为了得到稳定的画面,光栅扫描显示器每秒要刷新。通常刷新频率至少应为30帧/每秒。随着刷新频率的降低,会出现闪烁。要显示世界坐标系中指定对象的几何形状,就需要调整数学输入点到有限像素区域的映射;映射方法有两种:一是按对象边界与像素区域的覆盖量来调整显示物体的尺寸,即对象与像素中心对准;二是对象映射到像素间的屏幕位置,以使物体边界与像素边界对准。光栅扫描生成的图像所有像素的强度值都要存放在一块连续的存储器中,这个存储器称为帧缓冲器或刷新存储器,俗称显示存储器。光栅扫描系统的帧缓冲器对屏幕上每一点都有存储强度/颜色信息的能力。帧缓冲器的单元个数至少与显示器能显示的像素总数相同,且存储单元一一对应于可寻址的屏幕像素位置。对于黑白单灰度显示器每一象素需要一位存储器,对一个10241024象素组成的黑白单灰度显示器所需要的最小缓存为220,并在一个位面上。一个位面的缓存只能存储黑白图象。3个位面、分辨率1024*1024像素阵列的显示器,需3*1024*1024 bit的存储器每种原色电子枪有8个位面的帧缓存和8位的数模转换器,每种原色可有256种灰度,三种原色的组合将是(28)3=224,分辨率是1024*1024个像素阵列的显示器,帧缓存1024*1024*24彩色查找表或颜色索引技术是不断增加缓冲器存储容量而得到更多颜色的一种技术,它在帧缓冲器与显示屏的数/模转换器之间加一个查色表。彩色查找表可看成是一维线性表,每一项(元素)对应于一种颜色。帧缓冲器中每个单元存储的是对应于某一像素颜色在彩色查找表中的地址,而不是颜色值。彩色表的地址长度由帧缓冲器每个存储单元的位数决定,这确定了一幅画面能同时显示的颜色种类数。彩色表的元素位长由帧缓冲器每个存储单元的基色数决定,这决定了显示器可选择的显示的颜色种类总数。光栅扫描系统:交互式光栅图形系统通常使用几个处理部件。除了中央处理器(cpu)以外还使用一个视频控制器或显示控制器来控制显示设备的操作。帧缓冲器可在系统存储器的任意位置,视频控制器访问帧缓冲器,以刷新屏幕。除了视频控制器,更复杂的光栅系统运用其它处理器作协处理器和加速器,并执行各种图形操作。最简单的光栅扫描系统:帧缓冲器使用系统存储器的固定区域,视频控制器主要用于屏幕的基本刷新操作计算机将要显示的图形、图像转化为位图,经过接口电路送入帧缓存,视频控制器控制电子束依照固定的扫描顺序,自上而下,从左到右扫描整个屏幕,同时,把一帧画面中的每个像素的值从帧缓存中读出。读出的值控制电子束能量的大小,决定像素的亮度。具有显示处理器的光栅扫描系统:除了系统存储器外,还提供独立的显示处理器存储区域。上图表示了建立包含独立显示处理器的光栅扫描系统的结构。显示处理器的主要任务是将应用程序给出的图形定义数字化为一组像素强度值,存放在帧缓冲器,这个过程称扫描转换。显示处理器的用途是使cpu从图形杂务中解脱出来。除了系统存储器外,还提供独立的显示处理器存储区域。上图表示了建立包含独立显示处理器的光栅扫描系统的结构。显示处理器的主要任务是将应用程序给出的图形定义数字化为一组像素强度值,存放在帧缓冲器,这个过程称扫描转换。例如,直线段的扫描转换意味着必须确定最接近于直线路径的像素位置,并把每个位置的强度值存入帧缓冲器。显示配置是指显示器和显示卡这两方面的内容。显示器又叫监视器。最简单显示卡将显示器控制适配器,它将显示处理器、存储器、显示控制器制作在一块板卡或者芯片上,它与显示器一起构成一个显示系统。从显示标准的角度说,每一种标准都包含有一种或多种显示模式,每一种显示模式都规定了模式的类型、字符尺寸、字符格式、屏幕分辨率、色彩等指标。PAL, NTSC显示卡又名显示适配器,当前显示卡主要由显示芯片、显示内存、RAMDAC芯片、输入输出系统接口、显示器插座、连接主板总线的接口等组成显示主芯片图形处理器,显卡的核心,俗称GPU(类似DPU),它的主要任务是对系统输入的视频信息进行构建和渲染视频控制器,建立帧缓存与屏幕像素之间的一一对应,负责刷新屏幕显示缓存用来存储将要显示的图形信息以及保存图形运算的中间数据显存的大小和速度直接影响着主芯片性能的发挥数字模拟转换器(RAMDAC)它的作用就是把二进制的数字转换成为和显示器相适应的模拟信号显示卡的作用:将CPU送来的图像信号经过处理后输送至显示器,这个过程通常由四个步骤1) CPU将数据通过总线传送到显示芯片。2) 显示卡上的芯片对数据进行处理,并将处理结果存放在显示卡的内存中。3) 显示卡从内存中将数据传送到数/模转换器进行数/模转换。4) 数/模转换器将模拟信号通过VGA接口输送到显示器。扫描转换大多数图形学应用中采用点、线、面表示来建立图形对象模型,然而,对于光栅图形显示而言,点、线、面表示又不能直接用于显示,因为在光栅显示器上的任何一种图形,实际上都是一些具有一种或多种颜色的图象(像素的集合)。将图形对象表示转换成点阵表示,即确定一个像素集合及其颜色,用于显示一个图形的过程,称为图形的扫描转换或光栅化。也就是说,从图形对象的几何信息出发,求出构成图形对象的各个像素,并将其颜色值写入帧缓冲器中相应的单元。一般基本几何元素由显示卡的显示处理器完成图形到图像的转化。第三章 图形编程基础OpenGL特点 OpenGL是由SGI公司设计的一套底层三维图形API。它不是一种编程语言,而是提供了一些预封装的函数,c语言可以调用这些函数。 OpenGL是一个开放图形库,目前在Windows、MacOS、OS/2、Unix/X-Windows等系统下均可使用,因此具有良好的可移植性,同时调用方法简洁明了,深受好评,应用广泛。 OpenGL(Open Graphics Library)是独立于操作系统和硬件环境的三维图形软件库。由于其开放性和高度的可重用性,目前已成为业界标准. 很多优秀的软件都是以它为基础开发出来的,象著名的产品有动画制作软件3DMAX,Soft Image,VR软件和GIS软件等等 工业标准OpenGL功能:1.几何建模,2.坐标变换,3.颜色模式设置,4.光照和材质设置,5.图像功能,6.纹理映射,7.实时动画OpenGL主要包括三个函数库: OpenGL核心库GL:其中包含了OpenGL最基本的命令函数。这些函数都以gl为前缀。(115个)OpenGL实用库GLU:它是比OpenGL核心库更高一层的函数库,实用程序库中的所有函数都是由OpenGL的核心库函数编写。函数都以glu为前缀。(43个)OpenGL辅助库AUX:提供了一些基本的窗口管理函数、事件处理函数和简单的事件函数。函数都以aux为前缀。(31个)处理窗口和输入:void glutDisplayFunc(void(*func)(void);该函数用于绘制当前窗口。参数void(*func)为绘制当前窗口时所调用的函数名。任何时候当窗口的内容需要被重新绘制,则调用该函数。void glutReshapeFunc(void(*func)(int width,int height); 表示在窗口尺寸改变时,指定了所调用的函数。width, height指定了窗口新的宽度和高度。运行程序void glutMainLoop(void);这个函数开始启动主GLUT处理循环。事件循环包括所有的键盘、鼠标、绘制及窗口的事件等。glColor3f(1.0,1.0,1.0) 命令, gl前缀代表该函数来自gl库(说明该函数来自哪个库); 根命令Color代表对颜色的设定; 后缀3f表示该函数需要3个浮点型的参数;(后缀中的 数字表示该函数需要的参数个数,字母表示该函数的需要的参数类型) Glfloat color=1.0,1.0,1.0glColor3fv(color);若函数的后缀中带有一个字母v,表示该命令带有一个指向矢量或数组值的指针作为参数。 编译OpenGL程序需要头文件gl.h,glu.h,GLAUX.h,库opengl32.lib,glu32.lib, GLAUX.lib,若使用GLUT还需要glut.h 和glut32.lib。运行OpenGL程序,需要在windowssystem目录下有动态连接库opengl32.dll和glu32.dll, GLAUX.dll,若使用GLUT还需要glut32.dll。函数glViewport()定义窗口内的作图区域(即视区)。函数如下:void glViewport(GLint x,Glint y,Glsizei width,Glsizei height);功能:设置窗口中的作图区域,用于OpenGL绘图。参数说明:(x,y)为绘图区域左下角的坐标,参数width和height为绘图区宽度和高度的像素数,即视区的尺寸。所有的几何图最终都是通过一组有序顶点来描述的。OpenGL中有十种基本图元,从空间中绘制的简单的点到任意边数的封闭多边形。用glBegin命令可告诉OpenGL开始把一组顶点解释为特定图元。然后用glEnd命令结束该图元的顶点列表。 void glBegin(Glenum mode);此函数标志描述一个几何图元的顶点列表的开始。图元的类型由mode来决定。共有GL_POINTS,GL_LINES,GL_LINE_STRIP等十种图元 void glEnd(void);此函数标志着顶点列表的结束。第四章 图形观察与变换平移:将物体沿直线路径从当前坐标位置移到另一个坐标位置的重定位过程。平移是不产生变形而移动物体的刚体变换,即物体上的每一点移动相同量的坐标二维物体旋转是指将物体沿某个定点转动某个角度的重定位过程旋转变换是不产生变形地移动物体的刚体变换。物体上所有的点旋转相同的角度 void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z); void glRotatef(GLdouble angle, GLfloat x, GLfloat y,GLfloat z);angle指定逆时针方向旋转的角度,范围0360,xyz与原点相连,产生旋转轴。对于二维图形,由于只能在xy平面内旋转。因此只能绕z轴旋转,即相当于在二维平面内绕原点旋转。这时参数可取为:x=0,y=0,z=1。angle角度:,旋转轴:xyz,eg:(30,1,0,0)绕x轴逆时针旋转30比例x= sx *x,y= sy*y void glScaled(GLdouble x,GLdouble y,GLdouble z); void glScalef(GLfloat x,GLfloat y,GLfloat z);x,y,z分别表示对象沿三个坐标轴缩放的比例因子。对于二维图形z坐标值等于0。glScale(x,y,0)所生成的二维变换矩阵为:glScale(1,-1,0)glScale(-1,-1,0)对称:对称变换也称为反射变换,相对于反射轴的对称变换是通过将物体绕反射轴旋转180而生成的。它的基本变换包括对坐标轴、原点和45线的变换。X轴Y轴Z轴Y=X Y=-X 错切变换也称为错位或错移变换,变换结果将使目标图形失真。沿x方向的错切:变换的结果是使图形的y坐标不变,而x坐标有一个增量,图形沿x轴产生错切变形。x=x+cy y=y 其中,c=tga沿x方向的错切:当c0时,如y0,沿+x方向错切;y0,沿-x方向错切。 当c0,沿-x方向错切; y0时,如x0,沿+y方向错切;x0,沿-y方向错切。当b0,沿-y方向错切; x0,沿+y方向错切。 复合变换:复合变换矩阵T也可由一系列基本几何变换矩阵Ti的乘积来表示,即:T= T1 T2 Tn例1:平面图形绕任意点P(xp,yp)旋转q角,可以经过以下几个步骤实现:1. 将旋转中心移到原点,变换矩阵为:2. 将图形绕原点旋转角,变换矩阵为:3. 将旋转中心平移回原来的位置,变换矩阵为:例2:平面图形相对于任意点P(xp,yp)作比例变换可通过以下几个步骤来完成:1. 将p点平移到坐标原点,变换矩阵为:2. 关于原点作比例变换,变换矩阵为:3. 将旋转中心平移回原来的位置,变换矩阵为:图形的二维观察是通过指定一个在图形中要显示的部分以及在显示器显示位置,并执行从世界坐标系到设备坐标系的图形变换及删除位于显示区域范围以外的图形部分而实现的。 世界坐标系:用户用来定义图形的坐标系称为世界坐标系,也称为用户坐标系;它的定义域是实数域,二维的世界坐标系通常用表示。设备坐标系:在显示器和绘图仪等图形的输出设备上也有一个自身的坐标系,该坐标系称为设备坐标系或物理坐标系,简称为DC。设备坐标系是一个二维坐标系,对于显示器而言它的度量单位是像素。规格化设备坐标系:它独立于设备坐标系和世界坐标系,又可容易地转变成设备坐标系的一个坐标系,是一个中间坐标系。在该坐标系中,x和y轴的坐标被规格化为01间的量。在世界坐标系中要显示的区域称为窗口;窗口映射到显示设备上的坐标区域称为视区。标准窗口与视区一般都采用矩形,其各边分别与坐标平行。窗口定义了我们要显示的内容。视区决定在显示设备上的显示位置,我们可以在输出设备的不同位置观察物体;也可以通过改变视区的尺寸来改变显示对象的尺寸和位置。窗口和视区分别处在不同的坐标系内,它们所用的长度单位及大小位置等不同。因此要将窗口内的内容在视区中显示出来,必须经过从窗口到视区的变换处理,这种变换即称为观察变换二维观察变换流程:在世界坐标系中生成图形裁剪,得到要显示的内容窗口到视区的变换:窗口规格化设备坐标系中的视区设备坐标系中的视区显示图形识别图形在指定区域内或指定区域外的过程称为裁剪。gluOrtho2D(0.0, 0.0, (GLdouble)w,(GLdouble)h) 该函数定义窗口的大小。 左上角x,y; 窗口w,h 世界坐标系 glViewport(0,0,(GLsizei)w,(GLsizei)h) 该函数定义视口的大小 屏幕三维几何变换1. 平移 2. 比例 3. 旋转绕z轴旋转: 绕x轴旋转 绕y轴旋转 4. 对称:关于坐标平面对称:空间中一点关于xoy坐标平面的对称变换:点的x和y向的坐标保持不变,只改变z坐标的正负号关于坐标轴对称:空间中一点关于x轴作对称变换时,则点的x坐标保持不变,只改变y和z方向的坐标的正负号5.错切:沿x轴错切:例三维物体绕平行于x轴的直线旋转角将旋转轴平移至x轴,将物体绕旋转轴旋转角,将旋转轴平移至最初位置三维投影变换:把三维物体变为二维图形表示。投影:平行投影、透视投影在平行投影中,物体的坐标位置沿平行线变换到投影平面上。在透视投影中,定义投影平面后的一点为投影中心,将投影中心和三维物体上的各点的连线称为投影线。投影线与投影面的交点即称为各点的投影。平行投影保持物体的大小比例不变,物体各个面的精确视图可有平行投影得到,但无法给出三维物体的真实性表示。根据平行投影与投影平面的间的夹角也可分为正平行投影与斜平行投影两类,当投影线垂直于投影平面时,得到的投影称为正平行投影;否则为斜平行投影。平行投影中,物体投影大小与物体距投影面的距离无关,与人的视觉成像不符。而在透视投影中,离投影面近的物体较远的物体生成的图像大,生成真实感图形。投影中心又称为视点,相当于观察者的眼睛。投影面置于视点与物体之间,将物体上的各点与视点相连所得的投影线与投影面的交点就是三维物体上相应点的透视变换结果。观察空间:定义了观察窗口的大小,可以利用窗口边界来定义观察空间。只有在观察空间中的物体才会在输出设备中显示,而其它的景物将被裁剪掉。平行投影观察空间:无限长的长方体管道;透视投影观察空间:无限长的棱锥 三维观察流程:OpenGL中的图形变换分为四类:视点变换、模型变换、投影变换、视区变换(还有裁剪变换)这些图形变换函数都是通过矩阵操作来实现的。入栈函数:void glPushMatrix(void) 功能:把当前的矩阵拷贝到栈中;出栈函数:void glPopMatrix(void) 最后压入栈的矩阵恢复为当前矩阵。作用:保护当前矩阵现场。void glTranslate*(TYPE x,TYPE y,TYPE z); 该函数以平移矩阵乘当前矩阵void glRotate*(TYPE angle,TYPE x,TYPE y,TYPE z);该函数以旋转矩阵乘当前矩阵,其中:angle 指定旋转的角度(以度为单位)。x,y,z 指定旋转轴向量的三个分量(该向量位于世界坐标系中)。视点变换也可以称为视图变换,是指改变对象观察点的位置和方向。视图变换改变视点的位置和方向,也就是改变视觉坐标系。在世界坐标系中,视点和物体的位置是一个相对的关系,对物体作一些平移、旋转变换,必定可以通过对视点作相应的平移、旋转变换来达到相同的视觉效果。投影变换:透视投影,正交(平行)投影透视投影:其取景体积是一个截头锥体,在这个体积内的物体投影到锥的顶点,用glFrustum()函数定义这个截头锥体,这个取景体积可以是不对称的,计算透视投影矩阵M,并乘以当前矩阵C,使C=CM。void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); 该函数以透视矩阵乘当前矩阵left, right 指定左右垂直裁剪面的坐标。bottom,top 指定底和顶水平裁剪面的坐标。near,far 指定近和远深度裁剪面的距离,两个距离一定是正的。视区变换:视口就是窗口中矩形绘图区。用窗口管理器在屏幕上打开一个窗口时,已经自动地把视口区设为整个窗口的大小,可以用glViewport命令设定一个较小的绘图区,利用这个命令还可以在同一窗口上同时显示多个视图,达到分屏显示的目的。void glViewport(Glint x,Glint y,Glsize width,Glsize height);该函数设置视口的大小。x,y 指定视口矩形的左下角坐标(以象素为单位),缺省值为(0,0)。width,height 分别指定视口的宽和高。第五章 三维物体的表示曲线曲面的参数化表示:曲线的参数化表示:空间曲线上一点P的每个坐标被表示为某个参数u的函数: 曲面的参数化表示:曲面可用参数u、v的矢函数 P=P(u,v)描述。曲面的范围常用两个参数的变化区间所表示的uv参数平面上的一个矩形区域给出曲面上一点P的每个坐标被表示为参数u、v的函数:曲线曲面的基本类型:规则曲线和规则曲面:圆、抛物线、螺旋线等曲线和球、圆柱、圆锥等曲面都很容易用数学方程式表示出来,这类曲线和曲面分别称为规则曲线和规则曲面。自由曲线和自由曲面:曲线和曲面的形状相当自由又不规则,如飞机机翼、汽车车身、人体外形、卡通形象等,很难用数学式表示。什么事自由曲线/曲面?一种非解析表达的曲线/曲面,属于参数曲线。自由曲线/曲面的生成:自由曲线和自由曲面一般通过少数分散的点生成。常用三种类型的点:控制点:用来确定曲线和曲面的位置与形状,相应的曲线和曲面不一定经过的点。型值点:用来确定曲线和曲面的位置与形状,而相应的曲线和曲面一定经过的点。插值点:为提高曲线和曲面的输出精度,在型值点之间插入的一系列点。然后根据应用要求得到最贴近这些点(即少数分散的点)的函数式描述插值曲线/曲面:利用数学方法构造的曲线曲面按要求通过已知的型值点,称为对这些已知型值点进行插值。所构造的曲线或曲面称为揑值曲线或曲面。当型值点较多时,构造的插值函数通过所有的型值点是相当困难的。逼近曲线/曲面:人们往往选择一个次数较低的函数,使其在某种意义上最为接近于给定的数据点,称之为对这些数据点的逼近。所构造的曲线或曲面称为逼近曲线或曲面。 插值和逼近统称为拟合三次Hermite样条:Hermite插值样条是一个分段三次多项式,并在每个控制点有给定切线。它的每个曲线段仅依赖于端点约束,可以通过调整每段曲线两端点切矢量来控制曲线的形状。下图所示为在控制点pk和pk+1之间的曲线段。 rk和rk+1是在控制点pk和pk+1处相应的导数值(曲线的斜率)。 Hermite曲线的边界条件是: 贝塞尔曲线由一组控制点构成的特征多边形唯一的定义。贝塞尔曲线的起点与终点和特征多边形的起点与终点重合,且多边形的第一条边和最后一条边表示了曲线在起点和终点处的切矢方向。曲线的形状趋向于控制多边形的形状,可以通过调整顶点的位置来控制曲线的形状。给定n+1个控制顶点的位置,则贝塞尔曲线可表示为:其中Pi构成了该曲线的特征多边形, PiBi,n是伯恩斯坦基函数,贝塞尔曲线是控制顶点Pi关于伯恩斯坦基函数的加权和。贝塞尔曲线的递推算法:Bezier的递推算法,即德卡斯特里奥算法对于一给定参数u0,1,已知控制点,i=0,1,n,构成n条边的控制多边形。求其在Bezier曲线上对应的点C(u)。依次对控制多边形进行定比分割,分割比例为u:(1-u),得到第一级递推的中间顶点,i=0,1,2,.,n再对上述得到的这些中间顶点构成的控制多边形执行同样的定比分割,得到第二级递推的中间顶点,i=0,1,2,.,n。如此继续,直到n次分割得到一个中间顶点,即为所求的Bezier曲线上对应的点C(u)。Bezier曲线有以下缺点:不能作局部修改,修改某一控制顶点将影响整条曲线;控制多边形的顶点数决定了Bezier曲线的阶次,即n+1个控制点必将产生一段n次的Bezier曲线。当控制顶点的数目n+1较大时,由其构成的特征多边形对曲线形状的控制也将减弱。 Bezier曲线是B样条的特例以B样条基函数代替Bernstein基函数而获得的B样条曲线曲面克服了上述缺点。B样条仍采用控制点来定义曲线,曲线方程可写为:第六章 真实感图形的生成与处理要消除上述二义性,在显示三维图形物体时,就要决定物体上每条棱边在视图中的位置和它的可见性,对不可见的就必须加以抹掉或区别。这种找出并消除物体中不可见的部分的过程,称为消隐图。若消除的是物体上不可见的线段,即棱边,称为线消隐。若消除的是物体上不可见的面,就称为面消隐。隐藏面消除算法也称为可见面判别算法。可见面辨别算法:后向面判别,画家算法,区域细分算法后向面判别:多面体的表面可分为内侧和外侧。对观察者而言,外侧是可见的,而内侧不可见。我们可利用表面外法线的方向性来进行判别,当某一表面的外法线与观察点和表面上任意一点之间的连线的夹角在090之间时,该表面就是可见的,否则, 当90180,为不可见,该多边形表面为后向面。画家算法也称列表优先算法,需要先把屏幕置成背景色,再把根据距离观察点的远近构成的优先表逐个地取出多边形在屏幕上进行投影。先投影的线或点会被后投影的线或点所取代。直到最高优先级的多边形的图形送入了帧缓冲器以后,整幅图就画好了。需要建立深度优先表。对于复杂画面,简单的深度易出错,特别是多个面交互重叠的情形,需把有关的面分割后再进行排序。区域细分算法是在图像空间中实现的,基本思想:把物体投影到窗口上,然后递归地对窗口进行分割,直到窗口内的目标简单到足够可以显示为止。其中,窗口是指整个屏幕;同时,利用递归过程,每一次把矩形的窗口等分成的四个相等的小矩形也称为窗口。D是窗口,多边形是A、B、C和E。关系:内含、包围、相交和分离。光照:反射光,透射光,热能转化;只有透射光和反射光能够进入人眼而产生视觉效果,并且反射光和透射光决定了物体所呈现出来的颜色。具体说来,反射光和透射光的强弱决定了物体表面的明暗程度,同时,这些光所含的不同波长的光的比例则决定了物体表面的颜色。反射光:环境光,镜面反射,漫反射。Phone模型:环境光: Ee是物体表面上的一点由于受到环境光照明而反射出来的光能,称为环境光反射强度。Ia为物体在漫射照明时所受到的光能强度,称为环境光的强度。Ka为环境光的漫反射系数,也就是物体表面对环境光的反射系数,0Ka1镜面反射:其中Es为镜面反射光在观察方向上的光强;Is为点光源的强度;为视点方向与镜面反射方向的夹角;Ks为物体表面的反射率,也称为镜面反射系数;n是一个与物体表面光滑度有关的常数,用以模拟各种表面反射光的空间分布情况,表面越是光滑,其值就越大。漫反射:其中Ed为表面漫反射光的亮度;Id为从点光源发出的入射光的强度;Kd为入射光的漫反射系数;是入射光与表面上点的法向量N之间的夹角。马赫带效应:如果采用的离散精度不够高,相邻的多边形交接处会出现马赫带效应。造成物体表面颜色过渡不自然。颜色过渡不均匀产生明显边界。阴影是指那些景物中没有被光源照射到而形成的暗区。由于阴影是由物体遮挡了光线而产生的,所以阴影总是背对光源的一侧。阴影一般分为自身阴影和投射阴影两种。自身阴影:由于物体本身的遮挡而使得光线照不到某些面而形成的阴影。(例如面ABC)透射阴影:由于物体的遮挡而使得场景中位于它后面的物体得不到光照而形成的阴影。(例如CBD区域)光线跟踪算法利用光线的可逆性,从视点出发,沿着视线进行追踪,模拟光的传播路径来确定反射、折射和阴影等,更好地表现物体表面的细节。它是沿着到达视点的光线的反方向跟踪,经过屏幕上每一像素,找出与视线所交的物体表面点,并继续跟踪,找出影响该点光强的所有光源,从而算出该点上精确的光照强度。光线跟踪二叉树:树的结点代表物体表面与跟踪线的交点,结点间连线代表跟踪线。每个结点左侧代表反射产生的跟踪线,右侧代表透射产生的跟踪线,线末空箭头表示跟踪线射出场景。纹理是指物体的表面细节。木质的家具表面、建筑面上的拼花图案等是颜色纹理;而桔子的褶皱表皮、老人的皮肤等这些由于不规则的细小凹凸而造成的纹理是几何纹理。从视觉的角度看,颜色有其色彩(hue)、饱和度(saturation)和亮度(lightness)决定。色彩:指的是这种颜色是红的、绿的、还是蓝的,它是一种颜色区别于另一种颜色的最重要特征。饱和度:颜色的纯度,是在单色光中掺入白光的度量。单色光的饱和度是100%。亮度:即是指光的强度。RGB:彩色阴极射线管和彩色光栅图形显示器。红、绿、蓝三种原色光叠加在一起产生复合色。因此对于一种颜色C,在RGB颜色系统下表示为:C=rR+gG+bBCYMK:以红、绿、蓝的补色青(Cyan)、品红(Magenta)、黄(yellow)为原色构成的CMY颜色系统,常用于从白光中滤去某种颜色,故称为减色系统。HSV(hue,saturation,value)颜色模型则是面向用户的。H:表示颜色点与红色间的夹角S:饱和度V:表示颜色的明暗值纹理和材质区别:纹理更偏向于“图”,而材质更偏向于“属性”。比如对同一个立方体模型进行处理:1,加纹理信息,可以认为是贴上图,比如木头的纹理图,大理石的纹理图。2,加材质信息,可以认为是为这个立方体加上属性(这些属性主要是指反射系数、折射系数等),比如木头的属性或大理石的属性。加了纹理的模型是静态的和表面的,不会因为外界环境变化而变化(比如光照)。但是加了材质的模型是动态的和本质的,当外界环境变化的时候能做出相应的变化,所以更真实。Eg:一个有大理石光泽(材质)的木头模型(纹理)。第七章 计算机动画动画分类:实时动画:用算法来实现物体的运动控制。 逐帧动画:也称为帧动画或关键帧动画,即一帧一帧显示动画的图像序列而实现运动的效果。双缓冲技术:这项技术能使你执行绘图代码时能够在一个屏幕之外的缓冲区内进行渲染,然后用交换命令把图形放到屏幕上。在Windows编程环境下调用下面函数:SwapBuffers(dc);在控制台编程环境下调用下面函数:glutSwapBuffers();glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);/指定一个双缓冲窗口,这使得所有绘图代码都在画面外缓冲区进行渲染。第八章 虚拟现实技术任何一个虚拟现实系统都可以用三个“I”来描述其特性沉浸(Immersion) 交互(Interaction) 想象(Imagination)分布式虚拟现实系统又称为分布式虚拟环境DVE或分布式虚拟现实环境。分布式虚拟现实系统(DVR)是单用户虚拟现实系统网络化、多用户化的发展。传统的虚拟现实系统实现了单个用户在虚拟环境中的漫游、与虚拟环境及其中的物体进行交互。分布式虚拟现实系统旨在将不同的局部虚拟环境通过空间关联以构造大范围的虚拟环境,并与之进行交互。DVR应具备下列关键特性:(l) DVR允许一组分布在不同地理位置上的用户进行实时交互。这个用户组能同时容纳几千个用户,甚至更多。例如,一个正在演播室中演奏的音乐家应该可以走进一个虚拟的音乐会场中,与正在听他演奏的数万名世界各地的观众见面。(2) DVR所构造出的虚拟环境对用户的视觉和听觉来说都应该是三维的。当用户在虚拟环境中漫游时,用户的视觉和听觉透视效果也会同时发生变化。与视频会议系统不同,所有的DVR用户被封装在同一个虚拟世界中。例如,他们同坐在一个房间的会议桌周围,或同在一个虚拟建筑物内走动。(3) DVR的每个用户在计算机环境中都以替身的形式出现,这个替身或者是一个自定义的图形描述,或者是用户的视频,或者是两个的组合。(4) 用户除与其他用户交互之外,还可以与其它计算机仿真的虚拟生物交互。虚拟世界的一个最吸引人的地方在于它允许用户超越现实的局限,允许现实中不存在或不能存在的一些事情发生。(5) 用户能够相互说话,也能与计算机生成的虚拟生物或对象说话,虚拟生物也能作出反映。总之,动态、交互、沉浸、分布化四个词应该能在一定程度上总结DVR所应具备的特性。18
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!