《计算机图形学_第二章讲解》由会员分享,可在线阅读,更多相关《计算机图形学_第二章讲解(73页珍藏版)》请在金锄头文库上搜索。
1、第一章、计算机图形学综述回顾 v计算机图形学概念 v计算机图形学简史 v计算机图形学的应用 v计算机图形系统的功能与结构 v图形显示设备 回顾 v概念:Computer graphics is the art or science of producing graphical image with the aid of computer. v研究对象:图形 v试图从非图像形式的图形数据描述来生成(逼 真的)图像。 回顾 v参数法: 以计算机中所记录图形的形状参 数与属性参数来表示图形的一种方法。 形状参数(几何要素):方程或分析表达式 的系数,线段的端点坐标等 属性参数(非几何要素):颜色、材
2、质、线 型等 图形(Graphics) 直线A的端点为(x1, y1), (x2, y2), 红色,实线,宽度2个象素 回顾 v计算机图形系统的功能与结构 计算 输出 输入 图形输出设备 存储 数据库 图形输入设备 交互显示器 回顾 v光栅扫描显示器的特点 可把光栅图像显示器看做许多离散点组成的 矩阵,每个点都可以发光。除非特殊情况,一 般在矩阵中是不能直接从一个点到另一个点画 一条笔直的直线,但可以用一系列的点来近似 的表示这条直线。 回顾 v显然,只有画水平、垂直或正方形的对角线 时,才能用点或像素画出一条真正的直线, 其他情况下的直线均呈阶梯状,这种现象称 为走样或锯齿(如下图所示)。采
3、用反走样 技术可适当减轻阶梯效果。 C AB D A B 回顾 v双缓存(双缓冲):一个缓存用来刷新的同 时,另一个写入数据信息,而后这两个缓存 可互换角色。这种方式称为双缓存,它可以 使得显示的动画更流畅。 回顾 v屏幕坐标系。 第二章、图形系统概述 v3D视觉是如何产生的 v电脑屏幕上的3D是如何产生的 v坐标系介绍 v三维观察流水线 vOpenGL图形库简介 vOpenGL渲染管线简介 计算机图形软件系统 v3D概念 3D是指被描述或显示 的对象具有三个维度: 宽度、高度和深度。 人有两只眼,两只眼有 一定距离,这就造成物 体的影象在两眼中有一 些差异,大脑会根据这 种差异感觉到立体的景
4、 象。 计算机图形软件系统 计算机图形软件系统 v三维立体画的原理 计算机图形软件系统 计算机图形软件系统 计算机图形软件系统 计算机图形软件系统 计算机图形软件系统 计算机图形软件系统 v计算机屏幕上的3D 2D+透视=3D 着色 v颜色+明暗。 纹理贴图 v把存储在内存里的位图包裹到3D渲染物体的表 面。纹理贴图给物体提供了丰富的细节,用简 单的方式模拟出了复杂的外观。 混合(Blending) v将不同的颜色混在一起。 计算机图形软件系统 v坐标表示 笛卡尔坐标系 模型坐标系(物体坐标系) 世界坐标系 观察坐标系(摄像坐标系) 规范化坐标系 设备坐标或屏幕坐标 计算机图形软件系统 v笛卡
5、尔坐标系 在数学里,笛卡儿坐标系(Cartesian坐标 系),也称直角坐标系,是一种正交坐标 系。 v左手坐标系与右手坐标系 任何两个2D笛卡尔坐标都可以通过平移和旋 转使两个坐标系重合,但是3D笛卡尔坐标就 不一定了,实际上存在两种完全不同的3D笛 卡尔坐标系,左手系和右手系。 计算机图形软件系统 v 左手坐标系与右手坐标系 计算机图形软件系统 v模型坐标系(物体坐标系 ) 和特定物体相关联的坐标系 每个物体都有它们独立的坐 标系。当物体移动或者改变 方向时,和该物体相关联的 坐标系就随之移动或者改变 方向。 “前”“后”“左”“右” 只有在物体坐标系中才有意 义 物体坐标系也能像指定方向
6、 一样指定位置 3D游戏中常用的坐标系 v世界坐标系(全局坐标系宇宙坐标系) 建立了描述其他坐标系所需要的参考框架。从非技术意义上 讲,它是我们关心的的最大坐标系,所以世界坐标系不必是 整个世界 世界坐标的典型问题: 每个物体的位置和方向 摄像机的位置和方向 世界中每一点的地形是什么 物体从那里来到那里去。 3D游戏中常用的坐标系 v摄像机坐标系 是和观察者密切相关的坐标系。该坐标系定义在摄像机的 屏幕可视区域。 摄像坐标系的典型问题: 3D空间中给定点在摄像机前方吗 ? 3D空间中的给定点在视锥区域内 还是在视锥区域外? 物体是完全在视锥内还是部分在 视锥内? 两个物体,谁在前面? 计算机图
7、形软件系统 v设备坐标(DC)或屏幕坐标:显示设备的 坐标系称为设备坐标,该坐标系依赖于具体 的显示设备。 v规范化坐标系:指独立于具体物理设备的一 种坐标系,它的坐标范围在x和y上的范围都 是0到1,主要用于在计算机内部处理图形, 对一个具体物理设备,规范化坐标和设备坐 标仅仅相差一个比例因子,规范化坐标可以 看成是一个抽象的图形设备。 三维观察流水线 拍照流程 在摄影棚中布置场景 确定照相机位置 调焦 拍照 冲洗照片 计算机图形软件系统 v观察流水线 模型坐标系 绘制流水线 v 图形子系统的图形绘制功能常常采用流水线结构绘 制。 v 绘制流水线的基本结构从概念上包括三个阶段 应用程序阶段
8、几何阶段 光栅阶段 应用程序阶段几何阶段 光栅阶段 OpenGL简介 vOpenGL(Open Graphics Library)是一个 跨编程语言、跨平台的程序接口它用于生成 二维、三维图像。 v其前身是SGI公司为其图形工作站开发的 IRIS GL。为了能够更加容易的移植到不同 的硬件平台和操作系统,SGI开发了 OpenGL vOpenGL已成为开放的国际图形标准。 OpenGL简介 vSGI( Silicon Graphics 、硅图图):侏 罗纪公园 、玩具总动员 、泰坦尼 克号 vSGI图形工作站、IRIS操作系统、IRIS GL 。 OpenGL简介 vOpenGL并非是一种语言
9、,而是一种图形开 发API与微软的Directx类似。 v利用这些API能够方便的描述二维和三维几 何物体,并控制这些物体按某种方式绘制到 显示缓存中。 vAPI集提供了物体描述、平移、旋转、缩 放、关照、纹理、材质、像素、位图、文 字、交互以及提高显示性能等方面的功能, 基本涵盖了开发二维、三维图形程序所需的 各个方面。 OpenGL与DirectX OpenGL的实现方式 v软件实现 Mesa 3D OpenGL的实现方式 v硬件实现 OpenGL相关库 vOpenGL核心库:gl opengl32.lib opengl32.dll gl.h vOpenGL实用程序库:glu glu32.
10、lib glu32.dll glu.h vOpenGL编程辅助库:aux glaux.lib glaux.dll glaux.h vOpenGL实用程序工具包:glut glut32.lib glut32.dll glut.h OpenGL命名规则 v OpenGL函数都遵循一个命名约定,采用如下格式 : 例如函数glColor3f(),gl表示这个函数来自库gl.h, 根命令是Color表示该函数用于颜色设定,3f表示这个 函数采用三个浮点数为参数。 v 符号常量的表示:GL开头,下划线“_”分开,大写。 例如:GL_RGB,GL_POLYGON OpenGL数据类型 OpenGL安装 1、
11、将OpenGL文件夹拷到某一路径下 2、打开VS2012开发环境, 新建项目,或打开已有项目 OpenGL安装 3、打开属性对话框,选择VC+目录 OpenGL安装 4、打开“包含目录”配置对话框,并加入你的OpenGL安 装路径中“include”文件夹的路径。 注意:如果是win8系统需要加入以下路径: C:Program Files (x86)Microsoft SDKsWindowsv7.1AInclude OpenGL安装 5、打开“库目录”配置对话框,并加入你的OpenGL安装 路径中“Lib”文件夹的路径。 注意:如果是win8系统需要加入以下路径: C:Program File
12、s (x86)Microsoft SDKsWindowsv7.1ALib OpenGL状态机 v OpenGL是一种状态机模式 v 状态机是一个抽象的模型,表示一组状态变量的集合。 v 打开状态 glEnable(GLenum capability) v 关闭状态 glDisable(GLenum capability) OpenGL渲染管线 OpenGL渲染管线 v顶点准备(Vertex) v顶点着色(Vertex Shader) v细分曲面着色(Tessellation Shader) v几何着色(Geometry Shader) v图元装配(Primitive Setup) v裁剪(Cl
13、ipping) v光栅化(Rasterization) v片段着色(Fragment Shader) v最终图像生成 渲染的概念概念 v渲染(Rendering) 渲染是指:计算机根据图形信息(顶点坐标、法向 量、视点、纹理以及照明信息等)生成图像的过 程。 v预渲染(pre-rendering/ offline rendering) 预渲染的计算强度很大,需要大量的服务器运算 完成,通常被用于电影制作,对渲染速度没有限 制。 v实时渲染(real-time rendering/ online rendering) 常用于三维视频游戏,要求最少每秒渲染24帧图 像 顶点 顶点 v顶点(Vert
14、ex) 构成三维模型的基本要素,简单来说,顶点就是 空间中的一个点。顶点上通常会包含位置信息,也 可以附加其它信息,如纹理坐标(如何映射纹理 )、发向量(如何计算光照)、颜色等。 顶点着色器 着色器(Shader) v什么是着色器? v什么是顶点着色器? v什么是顶点变换和投影变换? 着色器(Shader) vShader(着色器)是用来实现图像渲染的替代固 定渲染管线的可编辑程序。程序员将着色器应 用于图形处理器(GPU)的可编程流水线,来 实现三维应用程序 v着色器替代了传统的固定渲染管线,可以实现 3D图形学计算中的相关计算,由于其可编辑性 ,可以实现各种各样的图像效果而不用受显卡 的固
15、定渲染管线限制。这极大的提高了图像的 画质。 顶点着色器(Vertex Shader) v顶点着色器运行于GPU上,会作用于每个顶点 ,其用途主要有两个: 对顶点进行坐标变换,例如将世界坐标系中的点变 换到观察坐标系(模型视图变换)。 将三维空间中的点投影到二维空间,即投影变换。 顶点着色器(Vertex Shader) 变换(Transformation)和投影(Projection) v变换矩阵 对顶点进行旋转平移等操作。 v投影矩阵 投影意味着降低维度,在计算机图形学中,投影 矩阵用于将3D 坐标转换成二维屏幕坐标。 曲面细分着色器 细分曲面着色器(Tessellation Shader
16、) v 光栅化图形渲染技术的核心是绘制大量三角形来组成3D 模型,而Tessellation技术就是利用GPU硬件加速,将 现有3D模型的三角形拆分得更细小、更细致,也就是大 大增加三角形数量,使得渲染对象的表面和边缘更平 滑、更精细。 几何着色(Geometry Shader) 几何着色(Geometry Shader) v 几何着色器以完整的图元作为输入数据。例如,当我们 绘制三角形列表时,输入到几何着色器的数据是构成三 角形的三个点。(注意,这三个点是从顶点着色器传递 过来的。)几何着色器的主要优势是它可以创建或销毁 几何体。例如,输入图元可以被扩展为一个或多个其他 图元,或者几何着色器可以根据某些条件拒绝输出某些 图元。这一点与顶点着色器有明显的不同:顶点着色器 无法创建顶点,只要输入一个顶点,那么就必须输出一 个顶点。几何着色器通常用于将一个点扩展为一个四边 形,或者将一条线扩展为一个四边形。 几何着色(Geometry Shader