计算机图形学第二章_第1页
计算机图形学第二章_第2页
计算机图形学第二章_第3页
计算机图形学第二章_第4页
计算机图形学第二章_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机图形学第二章第一页,共七十一页,编辑于2023年,星期二回顾概念:Computergraphicsistheartorscienceofproducinggraphicalimagewiththeaidofcomputer.研究对象:图形试图从非图像形式的图形数据描述来生成(逼真的)图像。

第二页,共七十一页,编辑于2023年,星期二回顾参数法:

以计算机中所记录图形的形状参数与属性参数来表示图形的一种方法。形状参数(几何要素):方程或分析表达式的系数,线段的端点坐标等属性参数(非几何要素):颜色、材质、线型等图形(Graphics)直线A的端点为(x1,y1),(x2,y2),红色,实线,宽度2个象素第三页,共七十一页,编辑于2023年,星期二回顾计算机图形系统的功能与结构

计算输出输入图形输出设备存储数据库图形输入设备交互显示器第四页,共七十一页,编辑于2023年,星期二回顾光栅扫描显示器的特点可把光栅图像显示器看做许多离散点组成的矩阵,每个点都可以发光。除非特殊情况,一般在矩阵中是不能直接从一个点到另一个点画一条笔直的直线,但可以用一系列的点来近似的表示这条直线。第五页,共七十一页,编辑于2023年,星期二回顾显然,只有画水平、垂直或正方形的对角线时,才能用点或像素画出一条真正的直线,其他情况下的直线均呈阶梯状,这种现象称为走样或锯齿(如下图所示)。采用反走样技术可适当减轻阶梯效果。CABDAB第六页,共七十一页,编辑于2023年,星期二回顾双缓存(双缓冲):一个缓存用来刷新的同时,另一个写入数据信息,而后这两个缓存可互换角色。这种方式称为双缓存,它可以使得显示的动画更流畅。第七页,共七十一页,编辑于2023年,星期二回顾屏幕坐标系。第八页,共七十一页,编辑于2023年,星期二第二章、图形系统概述3D视觉是如何产生的电脑屏幕上的3D是如何产生的坐标系介绍三维观察流水线OpenGL图形库简介OpenGL渲染管线简介

第九页,共七十一页,编辑于2023年,星期二计算机图形软件系统3D概念3D是指被描述或显示的对象具有三个维度:宽度、高度和深度。人有两只眼,两只眼有一定距离,这就造成物体的影象在两眼中有一些差异,大脑会根据这种差异感觉到立体的景象。第十页,共七十一页,编辑于2023年,星期二计算机图形软件系统

第十一页,共七十一页,编辑于2023年,星期二计算机图形软件系统三维立体画的原理第十二页,共七十一页,编辑于2023年,星期二计算机图形软件系统

第十三页,共七十一页,编辑于2023年,星期二计算机图形软件系统

第十四页,共七十一页,编辑于2023年,星期二计算机图形软件系统

第十五页,共七十一页,编辑于2023年,星期二计算机图形软件系统

第十六页,共七十一页,编辑于2023年,星期二计算机图形软件系统

第十七页,共七十一页,编辑于2023年,星期二计算机图形软件系统计算机屏幕上的3D2D+透视=3D第十八页,共七十一页,编辑于2023年,星期二着色颜色+明暗。

第十九页,共七十一页,编辑于2023年,星期二纹理贴图把存储在内存里的位图包裹到3D渲染物体的表面。纹理贴图给物体提供了丰富的细节,用简单的方式模拟出了复杂的外观。

第二十页,共七十一页,编辑于2023年,星期二混合(Blending)将不同的颜色混在一起。

第二十一页,共七十一页,编辑于2023年,星期二计算机图形软件系统坐标表示笛卡尔坐标系模型坐标系(物体坐标系)世界坐标系观察坐标系(摄像坐标系)规范化坐标系设备坐标或屏幕坐标第二十二页,共七十一页,编辑于2023年,星期二计算机图形软件系统笛卡尔坐标系

在数学里,笛卡儿坐标系(Cartesian坐标系),也称直角坐标系,是一种正交坐标系。左手坐标系与右手坐标系

任何两个2D笛卡尔坐标都可以通过平移和旋转使两个坐标系重合,但是3D笛卡尔坐标就不一定了,实际上存在两种完全不同的3D笛卡尔坐标系,左手系和右手系。第二十三页,共七十一页,编辑于2023年,星期二计算机图形软件系统左手坐标系与右手坐标系

第二十四页,共七十一页,编辑于2023年,星期二计算机图形软件系统模型坐标系(物体坐标系)和特定物体相关联的坐标系每个物体都有它们独立的坐标系。当物体移动或者改变方向时,和该物体相关联的坐标系就随之移动或者改变方向。“前”“后”“左”“右”只有在物体坐标系中才有意义物体坐标系也能像指定方向一样指定位置

第二十五页,共七十一页,编辑于2023年,星期二3D游戏中常用的坐标系世界坐标系(全局坐标系∕宇宙坐标系)建立了描述其他坐标系所需要的参考框架。从非技术意义上讲,它是我们关心的的最大坐标系,所以世界坐标系不必是整个世界世界坐标的典型问题:每个物体的位置和方向摄像机的位置和方向世界中每一点的地形是什么物体从那里来到那里去。第二十六页,共七十一页,编辑于2023年,星期二3D游戏中常用的坐标系摄像机坐标系是和观察者密切相关的坐标系。该坐标系定义在摄像机的屏幕可视区域。摄像坐标系的典型问题:3D空间中给定点在摄像机前方吗?3D空间中的给定点在视锥区域内还是在视锥区域外?物体是完全在视锥内还是部分在视锥内?两个物体,谁在前面?第二十七页,共七十一页,编辑于2023年,星期二计算机图形软件系统设备坐标(DC)或屏幕坐标:显示设备的坐标系称为设备坐标,该坐标系依赖于具体的显示设备。规范化坐标系:指独立于具体物理设备的一种坐标系,它的坐标范围在x和y上的范围都是0到1,主要用于在计算机内部处理图形,对一个具体物理设备,规范化坐标和设备坐标仅仅相差一个比例因子,规范化坐标可以看成是一个抽象的图形设备。第二十八页,共七十一页,编辑于2023年,星期二三维观察流水线拍照流程在摄影棚中布置场景确定照相机位置调焦拍照冲洗照片第二十九页,共七十一页,编辑于2023年,星期二计算机图形软件系统观察流水线模型坐标系第三十页,共七十一页,编辑于2023年,星期二绘制流水线图形子系统的图形绘制功能常常采用流水线结构绘制。绘制流水线的基本结构从概念上包括三个阶段应用程序阶段几何阶段光栅阶段应用程序阶段几何阶段光栅阶段第三十一页,共七十一页,编辑于2023年,星期二OpenGL简介OpenGL(Open

Graphics

Library)是一个跨编程语言、跨平台的程序接口它用于生成二维、三维图像。其前身是SGI公司为其图形工作站开发的IRISGL。为了能够更加容易的移植到不同的硬件平台和操作系统,SGI开发了OpenGLOpenGL已成为开放的国际图形标准。第三十二页,共七十一页,编辑于2023年,星期二OpenGL简介SGI(SiliconGraphics、硅图):《侏罗纪公园》、《玩具总动员》、《泰坦尼克号》SGI图形工作站、IRIS操作系统、IRISGL。第三十三页,共七十一页,编辑于2023年,星期二OpenGL简介OpenGL并非是一种语言,而是一种图形开发API与微软的Directx类似。利用这些API能够方便的描述二维和三维几何物体,并控制这些物体按某种方式绘制到显示缓存中。API集提供了物体描述、平移、旋转、缩放、关照、纹理、材质、像素、位图、文字、交互以及提高显示性能等方面的功能,基本涵盖了开发二维、三维图形程序所需的各个方面。第三十四页,共七十一页,编辑于2023年,星期二OpenGL与DirectX

第三十五页,共七十一页,编辑于2023年,星期二OpenGL的实现方式软件实现Mesa3D第三十六页,共七十一页,编辑于2023年,星期二OpenGL的实现方式硬件实现第三十七页,共七十一页,编辑于2023年,星期二OpenGL相关库OpenGL核心库:gl opengl32.libopengl32.dllgl.hOpenGL实用程序库:glu glu32.libglu32.dllglu.hOpenGL编程辅助库:aux glaux.libglaux.dllglaux.hOpenGL实用程序工具包:glut glut32.libglut32.dllglut.h第三十八页,共七十一页,编辑于2023年,星期二OpenGL命名规则OpenGL函数都遵循一个命名约定,采用如下格式:

<库前缀><根命令><可选参数个数><可选参数类型>

例如函数glColor3f(…),gl表示这个函数来自库gl.h,根命令是Color表示该函数用于颜色设定,3f表示这个函数采用三个浮点数为参数。符号常量的表示:GL开头,下划线“_”分开,大写。

例如:GL_RGB,GL_POLYGON第三十九页,共七十一页,编辑于2023年,星期二OpenGL数据类型

第四十页,共七十一页,编辑于2023年,星期二OpenGL安装1、将OpenGL文件夹拷到某一路径下2、打开VS2012开发环境,

新建项目,或打开已有项目第四十一页,共七十一页,编辑于2023年,星期二OpenGL安装3、打开属性对话框,选择VC++目录第四十二页,共七十一页,编辑于2023年,星期二OpenGL安装4、打开“包含目录”配置对话框,并加入你的OpenGL安装路径中“include”文件夹的路径。注意:如果是win8系统需要加入以下路径:C:\ProgramFiles(x86)\MicrosoftSDKs\Windows\v7.1A\Include第四十三页,共七十一页,编辑于2023年,星期二OpenGL安装5、打开“库目录”配置对话框,并加入你的OpenGL安装路径中“Lib”文件夹的路径。注意:如果是win8系统需要加入以下路径:C:\ProgramFiles(x86)\MicrosoftSDKs\Windows\v7.1A\Lib第四十四页,共七十一页,编辑于2023年,星期二OpenGL状态机OpenGL是一种状态机模式状态机是一个抽象的模型,表示一组状态变量的集合。打开状态glEnable(GLenumcapability)关闭状态glDisable(GLenumcapability)第四十五页,共七十一页,编辑于2023年,星期二OpenGL渲染管线

第四十六页,共七十一页,编辑于2023年,星期二OpenGL渲染管线顶点准备(Vertex)顶点着色(VertexShader)细分曲面着色(TessellationShader)几何着色(GeometryShader)图元装配(PrimitiveSetup)裁剪(Clipping)光栅化(Rasterization)片段着色(FragmentShader)最终图像生成

第四十七页,共七十一页,编辑于2023年,星期二渲染的概念概念渲染(Rendering)渲染是指:计算机根据图形信息(顶点坐标、法向量、视点、纹理以及照明信息等)生成图像的过程。预渲染(pre-rendering/offlinerendering)预渲染的计算强度很大,需要大量的服务器运算完成,通常被用于电影制作,对渲染速度没有限制。实时渲染(real-timerendering/onlinerendering)常用于三维视频游戏,要求最少每秒渲染24帧图像

第四十八页,共七十一页,编辑于2023年,星期二顶点

第四十九页,共七十一页,编辑于2023年,星期二顶点顶点(Vertex)

构成三维模型的基本要素,简单来说,顶点就是空间中的一个点。顶点上通常会包含位置信息,也可以附加其它信息,如纹理坐标(如何映射纹理)、发向量(如何计算光照)、颜色等。

第五十页,共七十一页,编辑于2023年,星期二顶点着色器

第五十一页,共七十一页,编辑于2023年,星期二着色器(Shader)什么是着色器?什么是顶点着色器?什么是顶点变换和投影变换?

第五十二页,共七十一页,编辑于2023年,星期二着色器(Shader)Shader(着色器)是用来实现图像渲染的替代固定渲染管线的可编辑程序。程序员将着色器应用于图形处理器(GPU)的可编程流水线,来实现三维应用程序着色器替代了传统的固定渲染管线,可以实现3D图形学计算中的相关计算,由于其可编辑性,可以实现各种各样的图像效果而不用受显卡的固定渲染管线限制。这极大的提高了图像的画质。

第五十三页,共七十一页,编辑于2023年,星期二顶点着色器(VertexShader)顶点着色器运行于GPU上,会作用于每个顶点,其用途主要有两个:对顶点进行坐标变换,例如将世界坐标系中的点变换到观察坐标系(模型视图变换)。将三维空间中的点投影到二维空间,即投影变换。

第五十四页,共七十一页,编辑于2023年,星期二顶点着色器(VertexShader)

第五十五页,共七十一页,编辑于2023年,星期二变换(Transformation)和投影(Projection)变换矩阵

对顶点进行旋转平移等操作。投影矩阵投影意味着降低维度,在计算机图形学中,投影矩阵用于将3D坐标转换成二维屏幕坐标。

第五十六页,共七十一页,编辑于2023年,星期二曲面细分着色器

第五十七页,共七十一页,编辑于2023年,星期二细分曲面着色器(TessellationShader)光栅化图形渲染技术的核心是绘制大量三角形来组成3D模型,而Tessellation技术就是利用GPU硬件加速,将现有3D模型的三角形拆分得更细小、更细致,也就是大大增加三角形数量,使得渲染对象的表面和边缘更平滑、更精细。

第五十八页,共七十一页,编辑于2023年,星期二几何着色(GeometryShader)

第五十九页,共七十一页,编辑于2023年,星期二几何着色(GeometryShader)几何着色器以完整的图元作为输入数据。例如,当我们绘制三角形列表时,输入到几何着色器的数据是构成三角形的三个点。(注意,这三个点是从顶点着色器传递过来的。)几何着色器的主要优势是它可以创建或销毁几何体。例如,输入图元可以被扩展为一个或多个其他图元,或者几何着色器可以根据某些条件拒绝输出某些图元。这一点与顶点着色器有明显的不同:顶点着色器无法创建顶点,只要输入一个顶点,那么就必须输出一个顶点。几何着色器通常用于将一个点扩展为一个四边形,或者将一条线扩展为一个四边形。

第六十页,共七十一页,编辑于2023年,星期二几何着色(GeometryShader)

第六十一页,共七十一页,编辑于2023年,星期二图元装配(PrimitiveSetup)

第六十二页,共七十一页,编辑于2023年,星期二图元装配(PrimitiveSetup)前几个着色阶段都使用相关的信息操作顶点,这些信息关于顶点如何被组织成几何图元,继而被送到OpenGL内部。图元装配阶段将顶点装配成它们关联的几何图元,即根据顶点数据生成线段、三角形等基本图元。

第六十三页,共七十一页,编辑于2023年,星期二裁剪(Clipping)

第六十四页,共七十一页,编辑于2023年,星期二裁剪(Clipping)接着对装配好的图元进行裁剪(clip):保留完全在视锥体中的图元,丢弃完全不在视锥体中的图元,对一半在一半不在的图元进行裁剪;接着再对在视锥体中的图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论