Advertisement

计算机图形学知识点汇总

阅读量:

一、计算机图形学定义与内容

1.图形

图形分为“图”和“形”两部分。

形态概念涵盖现实世界以及虚拟空间中的物体及其特征;其核心功能在于传达信息。图形由几何数据和属性参数构成的基础元素构建而成,在展示形态特征方面发挥着重要作用。图形不仅能够反映出形态在视觉上的呈现方式,并且通过这些基础元素构建出复杂的空间关系结构。其本质就是视觉效果的表现。

' 图 ' 与 ' 形 ' 的关系如下:' 形 ' 是 ' 图 ' 的来源之一说是' 图 ' 的根本所在也是构成' 图 ' 的基础上存的存在;而' 图 ' 则是以' 形 ' 为基础发展出的表现形式与具体体现。

综合理解,图形就是变现物体几何信息的图画。

计算机图形学中的图形对象通常由点、变、面、环、体等基本几何元素构成。

字符图形常见有两种表示方法,分别是矢量字符和点阵字符。

描述图形数据要包括两部分,一部分是几何信息,另一部分是拓扑信息。

形状作为计算机图形学的核心研究对象,在其表达方式中存在两类主要类型,在参数表达式中所占的比例最大。

2.图像

从广义上说,图像是对自然界的客观事物反映,也是一个不断发展的概念。

就其实质而言,在物理层面上来说,在物理层面上来说, 图像作为一种信息载体,是作为记录手段存在于物理世界中的客观对象的表现形式.在计算机这样的媒介环境下,其数字化呈现的形式即被定义为数字图像.例如通过电子屏幕展现的方式,这代表的是数字化呈现的形式.而具体到这一表现形式中,其本质是由像素构成的矩阵网格系统,每个像素都包含不同颜色信息.

屏幕上最小的显示单元叫做像素,它的多少叫做分辨率。

3.图形、图像对比

基本元素: 图形:点、线、面等几何元素;

图像:像素。

存储数据: 图形:各个矢量的参数(属性);

图像:各个像素的灰度或颜色分量。

处理方式: 图形:旋转、扭曲、拉伸等;

图像:对比度增强、边缘检测等。

缩放结果: 图形:不会失真,可以适应不同的分辨率;

图像:放大时会失真,可以看到颗粒状像素。

其他: 图形:不是客观存在的,是根据客观事物而主观形成的;

图像:对客观事物的真实描述。

图形和图像的实质是矢量图和点位图的关系。

4.计算机图形学的定义

国际标准化组织将其定义为:计算机图形学是一门涉及研究通过计算机将数据转换成图形,并在专用显示设备上呈现其形态的艺术与科学结合的技术学科。

国内常见的定义如下:基于计算机技术的学科涵盖了图形表示、生成、处理以及显示等多个方面;作为一门专业学科,在计算机环境中通过特定算法实现对图形对象的数据建模,并最终将其可视化展示的技术研究即为计算机图形学。

计算机图形学涵盖两大类内容:(1)将场景中的物体转化为图像形式(2)生成并呈现相应的图像

5.图形学相关学科

数据可视化、数字图像处理、机器视觉、计算几何、计算机辅助几何设计等。

与计算机图形学的研究内容形成互逆关系的学科是图像处理。

属于计算机图形学相关学科的有计算几何、图像处理以及计算机视觉等专业领域。而人工智能则不属于这些传统图形学相关的主干学科。

6.计算机图形学的应用领域

(1)计算机辅助设计与制造

(2)科学计算可视化

(3)虚拟现实

(4)动画

7.计算机图形学发展简史

(1)计算机图形学的诞生(1950--1960年)

(2)线框图形(1960--1970年)

伊凡·萨瑟兰(lvan E.Sutherland)最先在论文中提出了"计算机图形学"的概念,并确立了这一学科作为独立科学分支的基础。

(3)光栅图形学(1970--1980年)

(4)真实感图形学(1980--1990年)

(5)实时图形学(1990年至今)

二、图形系统

1.图形系统组成

图形软件:(1)图形应用软件:二维--AutoCAD、Illustrator;三维--Maya、3ds Max。

(2)图形软件平台包含功能模块与基础组件以及相关的图形接口模块。(OpenGL, WebGL, DirectX, Java 2D, Java 3D等)

(3)图形应用数据结构:图形数据文件、图形基元模型、几何描述数据。

常用的图形库OpenGL,属于图形系统的图形支撑软件部分。

OpenGL是一种多平台的图形应用编程接口。其主要应用于二维和三维图形渲染,并在Windows、Linux以及macOS等常见操作系统的家族中兼容。

在OpenGL中,glPushMatrix()和glPopMatrix()用来保存并恢复当前的矩阵状态。

图形硬件:(1)图形输入设备。

(2)图形处理设备:中央处理器CPU、图形处理器GPU。

(3)图形输出设备:图形显示设备、图形绘制设备。

在计算机图形系统中,负责捕捉用户输入的硬件设备是鼠标和键盘。

触摸屏是输入输出设备。

图形程序 = 图形算法 + 图形应用数据结构

2.图形显示方式

(1)随机扫描显示

(2)光栅扫描显示

计算机图形显示器一般使用RGB颜色模型。

计算机绘制设备一般使用CMY颜色模型。

3.图形流水线三阶段

应用程序阶段-----几何处理阶段-----光栅阶段(像素处理)

图像显示与图形复杂度之间的关联并非属于光栅扫描显示器的特征。画点设备及其存在的锯齿现象和真实感图形显示并非其特点。

图形流水线的光栅化阶段的主要任务为生成最终图像的像素。

4.图形流水线关键步骤

顶点----->几何处理器----->光栅化器----->片元处理器----->帧缓存----->显示

GLSL的全称(英文表达)是:OpenGL shading Language。

ODBC不属于图形标准,PHIGS、OpenGL、GKS属于图形标准。

GKS是计算机图形官方标准。

三、二维基本图形光栅化与裁剪

1.数值微分算法(DDA)

算法思想: 计算斜率k之后,在每一次迭代中沿着x轴方向增加小增量xn,在y轴方向增加小增量yn以获得下一个点的位置。

该方法能在极高的精度下生成完全准确的直线;然而,在受限于光栅显示器栅格的问题下,在每一次迭代中只能确保xn和yn取单位步长。

当k值小于1时,在x轴上的增长速度较快。计算下一个点时采用x=x+1和y=y+k的方式。首先计算出该点坐标的数值后进行四舍五入处理;特别地,在计算下一个点的y坐标(即y2)时,请使用前一时刻的y坐标加上当前增量k来确定。

伪代码:

b15461a1dac748e6910a46624907d86e.jpg

在平面坐标系内存在一条线段,在其两端分别标有确定的位置参数P₁坐标为(0, 0)以及P₂坐标为(5, 2)。采用DDA(Digital Differential Analyzer)算法对这条直线进行数字微分分析,在当前已绘制的像素点位于位置(2,1)时,则下一个应绘制的像素点应位于位置(3,1)。

2.Bresenham画线法

算法核心思想: 直线方程的一般形式为y = kx + b,在基于该直线进行分类时有以下特点:1)位于该直线之上的区域满足F(x, y) > 0;2)位于该直线上所有点都满足F(x, y) = 0;3)位于该直线之下的区域满足F(x, y) < 0

假设k的取值范围在0到1之间(包括端点),则x方向即为最大位移方向。如图所示,在Pu与Pd连线中间位置确定一点M;然后找出该直线与Pu至Pd网格线的交点位置确定一点Q;若该交点Q位于M之上方(即QM),则应选取Pu作为控制点;反之若交点低于M(即QM),则应选取Pd作为控制点。

42a7144dfba64852b10423f3fbc69e82.png

计算方法:

12c0cdce8aea40a9bfe2acd691a0d930.jpg

例题:

db60d7afd9544b1b972224b3b25251e7.jpg
f699f59641874d8a834771d6cf2e218f.jpg

伪代码:

566fb62122484e4d89cecef51185da3e.jpg

Bresenham画圆算法

Bresenham算法适用于生成完整圆形。基于对称性的原理,在绘制过程中仅计算位于90°至45°范围内的点,并在其x坐标递增而y坐标递减的方向上进行操作。

3. 中点画线算法

和Bresenham画线算法类似,但判别规则略有不同,绘制效率完全不同。

在0<k<1情况下:

(1)起点(x0,y0)终点(xn,yn)

(2)d0=(xn-x0)- 2(yn-y1);d<0时,d=d+2(xn-x1)-2(yn-y1);d>=0时,d=d-2(yn-y1)

52fda63f9c6a403eb7328d9cedbe232f.png

伪代码:

aff0ec1f0d0e40db8a13dcfef7e9f9d3.jpg

中点画圆法与Bresenham画圆法类似。

在进行直线光栅化的过程中,若某条目标直线上其斜率超过1,则沿该线走向上的增量变化主要发生在垂直于X轴的方向即Y轴上

3. 多边形扫描算法

(1)求交点:计算当前扫描线与多边形所有变得交点。

(2)排序与配对:将所有交点按照x值递增的顺序进行排序;随后通过排序后的交点进行配对形成区间。

(3)填色:将各区内的像素值设置为目标颜色值。

另一顶点的x y(max) 1/k next

例题:

604fa6c6f406440b955a338a9df263fd.png
d25cb18b568a4a24bd82b564b2c19dc3.png

在多边形扫描线填充算法的四个步骤中,确保正确填充的核心环节是交点配对。

多边形扫描算法旨在提升其运行效率,并引入了相应的数据结构以支持这一目标。

x扫描线算法的具体流程包括求交、排序、配对和填充。其中计算量较大且能够优化的重要环节是求交与排序。

4.种子填充算法

种子填充算法从起始点(通常位于要填充区域的内部位置)开始运行,在遵循四连通模式(上下左右)或八连通模式(上下左右及其对角线方向)时向整个区域传播颜色。

实现步骤:

(1)初始化,向堆栈压入种子点像素,当堆栈不为空时,重复执行以下步。

(2)从包含种子像素的堆栈中推出区段内的种子像素。

(3)沿着扫描线,对种子像素的左右像素进行填充,直至遇到边界像素为止。

在该区间范围内, 将该区段中最左和最右的像素分别标记为xlxr, 并对与其相邻的上一条及下一条扫描线进行核查判断是否均为边界像素或已填充完成.

如果经过测试显示这些扫描线上的像素区域需填充,则在x_l和x_r的检查范围内, 将每个像素区域的最右侧像素设为种子像素, 并将其压入堆栈中.

四联通区域内的每一像素可以通过上下左右四个方向组合到达。

5.反走样技术

(1)提高分辨率

(2)简单区域采样

(3)加权区域采样

反走样技术的主要目的为减少图形中的锯齿现象。

不能获得反走样效果的是:增强图像的显示亮度。

6.Cohen-Sutherland编码裁剪算法

将该窗口划分为九个区域,并对每个区域进行编号(如上图所示)。四个数字按照从上到下、从左到右的顺序进行排列。

取直线端点,按位与,判断直线“取之”或“弃之”。

217fb24910c9468ebe86c3e7939d4fcd.png

在Cohen-Sutherland直线段裁剪算法中, 该方法遵循特定的顺序(即上 下 左 右)来生成四位编码标识. 当线段的起始点编码确定为 (1001), 而终止点的编码被确定为 (0101) 时, 则该线段应被舍弃

三维Cohen-Surtherland裁剪算法中直线端点编码需要的位数是6。

7.Liang-Barsky参数化裁剪算法

a995efc665a74a5383ea5f1c11f3dd1a.png

Liang-Barsky算法的思想是把被裁剪的线段看成是有向线段。

8.多边形裁剪

多边形裁剪不能简单地用直线裁剪算法对多边形各边进行裁剪来实现。

主要针对两个关键问题:(1)当一个完全封闭的多边形被截断时,其形状往往会失去完整性,可以通过截取窗口边界的一部分来恢复其闭合性。

(2)一个凹多边形被裁剪后可能形成几个小多边形,要正确封闭他们。

通过连接位于多边形外部的一个点A与另一个点B之间的连线判断该点的位置:如果这条连线与多边形边界相交的次数是偶数次,则该点位于多边形之外;如果是奇数次,则该点位于内部。

**** 任意的简单多面体,其面(F)、边(E)、顶点(V)的数目需满足的公式为:V+F-E=2。

四、图形几何变换

1.其次坐标

在图形变换中引入齐次坐标的目的是:统一表示几种变换,便于计算。

二维几何的基本变换矩阵:

bb72fecbb3a1446e9d4f34d9d1d89908.png
bd6c60669ec94dd2bda07e816f7f1cc6.png

例题:

787b4af87092499d9cf15679fd950339.png
a90a3f642bd2465d8f9fc3769121cdfc.png

错切:被称为改变物体形状的一种方式;
经过错切的对象看起来像是由相互滑动的中间层结构组成;
而错切变换则是通过旋转与缩放变换组合而成。

二维几何变换的基本类型包括平移、旋转、缩放、对称和错切。

错切变换:可能引起图形角度改变,可能会发生图形畸变。

平移变换:不改变图形大小和形状,只改变图形位置。

旋转变换:各图形部分间的线性关系和角度关系不变,直线的长度不变。

比例变换:不改变图形的连接关系和平行关系。

2.逆变换

(1)逆平移变换

6db0a94c2bae42c8b24ca77f4904cda6.png

(2)逆旋转变换

2195812526b140d88a808ab524fbb1bb.png

(3)逆缩放变换

b6b3269aae6e47ca874c8aded475fe81.png

齐次坐标的特性主要体现在以下几个方面:一方面采用(n+1)维空间来表示(n)维空间中的点;另一方面通过将所有几何变换转化为相应的坐标变换矩阵来进行处理;此外还便于表达无穷远处的点。而关于齐次坐标的特性并不包括以下几点:即在通常情况下一个n维向量其对应的唯一的一组齐次坐标是其本身加上一个缩放因子所构成的空间点

三维空间点p(x,y,z)的规范化齐次坐标表示为(x,y,z,1)。

平面坐标转换、平面坐标系转换、空间几何转换、空间组合转换、空间坐标系转换中提到的相关内容不再详细阐述

五、三维观察

流程:模型坐标--->世界坐标--->观察坐标--->投影坐标--->屏幕坐标

一般情况下,片元着色器是进行模型变换、视图变换等工作的着色器。

模型变换:在将模型建立于局部坐标系(即个体的小范围内)后,在全局范围内归并到统一的世界坐标系的过程中,基于场景需求而实施的一系列组合变换。

在世界坐标系中建立了观察坐标系之后,在世界坐标系下的世界坐标通过建立对应关系转换为在观察坐标系下的观察坐标的投影过程也可称为投影变换或视图变换

(3)投影变换:确定了在观察坐标系中的投影平面(即观察平面)以及投影正交标架之后,在该框架下完成三维物体各点位置通过投射方式转换到相应正交标架下的映射过程。

(4)视口变换:基于投影系统中的观察窗口映射至特定区域内的设备坐标系统中的变换过程。

窗口到视区的映射是一个“保持比例”的映射。

会导致三维空间在变换前后维度发生变化的是投影变换;而建模变换、观察变换以及视口变换则不会发生这种变化

在三维观察流程中进行视图变换的主要目的是实现将物体从世界坐标系向观察者所在的观察坐标系进行转换。

三维观察流程中,坐标变换的正确次序应为:观察变换--->投影变换--->视口变换。

物体经过透视投影后可产生缩小的效果。

透视投影比平行投影更富有立体感和真实感。

太阳光线产生的投影为平行投影。

投影变换可分为平行投影和透视投影两大类。

透视投影中,主灭点的个数最多有3。

4f38603ad5a34b329872a0e6897eaf32.png

六、三维造型

1.计算机表示方法

(1)多边形网格表示:将物体表面看成由多边形网格拼接而成。

(2)曲线/曲面表示:曲面和曲线方程能表示为非参数形式或参数形式。

刻画曲线扭曲程度的参数是挠率。

在曲线、曲面的方程表示上,参数方程比显式、隐式方程有更多的优越性。

参数方程又分为代数和几何两种形式。

细分表示方法:基于一系列基础的空间单元来描述对象特征,在空间数据处理中占据重要地位。其中主要采用的方法有体素表示法和八叉树表示法等。

在规则化的建模技术中运用广泛的是八分树这一核心技术和重要方法。这种数据结构主要通过空间分割来进行复杂的几何体表达。

2.多边形网格表示

(1)基本集合元素:点、边、面、环和体。

(2)几何数据与拓扑结构:几何数据用于表征物体的形状特性和尺寸特征;拓扑结构则用于描述各元素之间的连接关系。

(3)常用的数据结构:翼边数据结构、对称数据结构、半边数据结构。

3.曲面/曲线造型

(1)插值与逼近的过程是基于一组有序的数据点展开的;通过构建一条曲线依次穿过这些数据点,并以此模拟已知曲线的变化趋势;这种过程即完成对这些数据点的插值操作;进而应用于曲面构建,则形成了相应的插值曲面

(2)Bezier曲面/曲线

01017176b39e494299896fabfdb26896.png
a4b9b27ad6394d36a561d1a1d2eecaee.png
fa84ea7f393a4d398f8d2c778d675e2a.png

Bezier曲线的性质: 端点性质、对称性、凸包性、仿射不变性

缺点:(1)曲线的次数取决于特征多边形顶点的数量;当使用n个控制点时,会生成一条n-1阶的贝塞尔曲线。

考虑到Bernstein谐波函数在区间[1, 0]上全部非负特性,则Beizer曲线不具备局部调整能力。

(3)虽然可以通过在点集中绘制一些点来满足多段贝塞尔曲线的光滑条件,但这种方法显得不太方便。

Bezier基函数有n+1项,n+1个基函数的和等于1。

(3)B样条曲线/曲面

为了克服Bezier曲线缺点提出的。

特点:局部调整性、凸包性、几何不变性、变差减少性、造型灵活等。

N次B样条曲线具有N-1阶参数连续性。

(4)NURBS曲线/曲面

改进型B样条方法,在继承了它对自由行曲线与曲面强大描述能力的同时,并进一步增强了对二次曲线与曲面的统一表示能力。即为有理样条(Rational Spline)的方法。在形状描述实践中常采用非均匀有理B样条(NURBS)作为工具,在形状设计中应用广泛。由于在形状描述实践中常采用非均匀类型出现的有理样条作为主要手段,在形状设计中应用广泛

优点:

即为自由曲线也为初等曲线与曲面提供了一个统一的数学表示方法与设计基础,并使两类形状信息得以存储于同一个数据库中

为了调整曲线或曲面的形状, 可以通过调整控制顶点来实现, 也可以通过使用全因子来实现, 从而具有较高的自由度.

计算稳定且速度快。

有清晰明了的几何解析,这一方案尤其适合具备良好几何学素养及掌握画法几何学的专业设计人员.

NURBS(非均匀有理B样条)方法被称为主用于表示任意维度的光滑曲线与曲面类型的几何形状的一种重要工具。

曲线和曲面的表示形式被分为显式的函数表达式、隐式的表达方式以及参数化的表达形式三种

基于构造实体几何法(CSG),实体可由立方体和长方体现在代入基本单元的集合进行组合,并集符号∪用于合并操作;交集符号∩用于相交操作;差集符号-用于生成新形体。

七、真实感图形技术

1.消隐算法

(1)后相面消除

工作原理

  1. 判断面向情况:在一个三维空间中,在每一个三角形面上都存在一个法线矢量(Normal Vector),这个矢量与所在平面正交。通过计算两个矢量——三角形面上法线矢量与观察者的视线方向之间的角度——来判断这个面向着观察者还是远离观察者。
  2. 移除后方目标:当两个矢量之间的角度超过90度时,则表示面对着观察者的方向是背离的这一面向应被移除而不参与绘制;而当两个矢量之间的角度小于或等于90度时,则表示这一面向着观察者而应该被绘制出来。

(2)深度缓冲器算法(z缓存算法)

算法原理

  1. 深度缓冲器的概念:深度缓冲器是一个与屏幕像素点一一对应的二维数组,其大小与屏幕分辨率相同。每个元素存储了对应像素点处物体表面到视点(观察者位置)的距离,通常用 值表示。初始时,深度缓冲器中的所有值被设置为一个很大的数(表示无穷远)。
  2. 颜色缓冲器:同时存在一个颜色缓冲器,用于存储每个像素最终显示的颜色。
  3. 渲染过程:在渲染场景时,对于每个要绘制的多边形(或三角形),计算多边形上每个像素点的 值(即该点到视点的距离)。然后将这个 值与深度缓冲器中对应像素点的当前 值进行比较:

当计算所得之 z 值低于深度缓存中的 z 值时,则表明该像素所对应的多边形表面离观察者较近;因此当前多边形的颜色应在该像素位置绘制。此时需更新深度缓存中匹配该像素的位置其 z 值为计算所得之较小值,并将颜色缓存中匹配该像素的位置颜色设置为当前多边形的颜色。

如果计算所得的 值不小于深度缓冲器中对应的值,则表明该像素点所代表的多边形表面位于图像后方,在这种情况下无需更新深度缓冲器和颜色缓冲器的内容。

当处理具有大量复杂多边形面片的场景时,在这些情况下隐藏表面消隐算法运行效率最高且采用深度缓存技术(Z-Buffer)。

在Z-buffer hidden surface removal algorithm中,在该算法中的每个段元所存储的信息是对应像素点的深度信息。

(3)画家算法

算法原理

画家算法的概念源自艺术家在创作时的表现手法。在艺术创作过程中, 画家通常会遵循由远及近的原则, 先描绘背景直至主体部分, 这种循序渐进的方式使得画面层次感分明, 各部分元素得以妥善安排。对于计算机图形学领域而言, 我们可以通过将场景中的各对象按照其至视点的距离进行排序, 并按照从远到近的顺序进行渲染处理, 这种方法不仅能够保证画面的真实感, 更能有效解决可见性问题。

适用于固定视点的消隐。

该消隐算法按照不同的消隐空间被划分为基于物体的空间消隐方法与基于图像的空间消影方法。

2.光照明模型

(1)环境光:物体和环境间多次反射,最终达到平衡时的一种光。

(2)漫反射光:全局漫反射光照效果的一种近似。

(3)镜面反射光:反射光集中在一个反向,并遵守反射定律。

Phong光照明模型:第一个有影响的光照明模型。

Whitted光照明模型:第一次给出光线追踪算法的范例。

当观测光照下的光滑表面时,在特定方向上呈现明亮光线或强烈光线的现象被称为镜面反射。

在真实感显示过程中,在其基本光照明模式中并不包含透射性质的直接透过介质的光线这一类型。其包括以下几种类型:外部环境直接照射产生的环境反射光、表面粗糙导致的漫反射光以及具有镜面光滑度的表面所呈现的镜面反射光。

在光线追踪算法中需要追踪的情况是:光线与某个目标物体。

3.着色

(1)均匀着色:恒定光强对多边形着色。

(2)平滑着色(Gouraud着色):双线性插值着色。

Phong着色采用双线性插值技术,并对处理多边形边界上的各个点以及内部区域中的各个点使用逐次计算的方法进行处理。

Gouraud明暗处理采用双线性光强插值算法.

4.纹理映射技术

(1)颜色纹理映射

(2)几何纹理映射

(3)环境映射

在纹理映射中,常用的纹理坐标范围是[0,1]。

在真实感纹理技术中,纹理类型主要有颜色纹理和几何纹理两种。

课程推荐信息:华中科技大学mooc平台提供《计算机图形学》课程(即计算图形学课程),访问链接:计算机图形学课程(华中科技大学)

补充练习题:[网站]( "计算机图形学三套试卷及答案")

全部评论 (0)

还没有任何评论哟~