计算机图形学
CV
2020-11-03
计算机图形学
第一章 导论
第二章 MFC绘图基础
子主题
第三章 基本图形的扫描转换
第四章 多边形填充
第五章 二维变换与裁剪
第六章 三维变换与投影
第七章 自由曲线曲面
第八章 分形几何
第九章 建模与消隐
第十章 真实感图形
重点
图形学定义
难点
图形图像区别
图形学热点技术
光栅扫描显示器
重点
基本几何变换矩阵
相对于任意方向的三维复合变换
三视图变换矩阵
斜投影变换矩阵
难点
透视投影用到的坐标系
二维透视投影坐标
透视投影的深度坐标
三维基本几何变换分为
平移
比例
旋转
反射
错切
旋转变换矩阵是用
行矩阵
表达的
由于任意方向位于空间中,所以变换方法是
首先对任意方向做旋转变换,使任意方向位于某个坐标面内
然后再旋转任意方向直到与该坐标平面内的某个坐标轴重合
此时对该坐标轴进行三维基本几何变换
最后做反向旋转变换,将任意方向还原到原来的方向
(1)将物体向yOz面做正投影,得到主视图。
(2)将物体向xOz面做正投影,然后将xOz面绕z轴顺时针旋转90°得到俯视图。
(3)将物体向xOy面做正投影,然后将xOy面绕y轴逆时针旋转90°得到侧视图。
将三维物体向投影面内作平行投影,但投影方向不垂直于投影面得到的投影
斜投影
与正交投影相比,斜投影具有
较好的立体感
部分类似正交投影的可测量性
平行于投影面的物体表面的长度和角度投影后
保持不变
透视投影变换中
物体中心位于
视点位于
投影位于
世界坐标系
观察坐标系
屏幕坐标系
右手三维系
左手三维系
视图变换与模型变换
物体的旋转动画可以使用两种方法生成
视图变换
模型变换
物体固定,视点旋转
物体旋转,视点固定
真实感光照场景中,由于世界坐标系中设置了光源的位置,物体的旋转主要采用的是
模
型变换方式
(xs,ys)是透视投影的二维坐标
(xv,yv,zv)是观察坐标
在绘制真实感场景时,常需要使用物体的
透视深度值
进行表面消隐
Near和Far是常数
对于透视投影,场景中所有投影均位于以
视点
为顶点,
连接视点与屏幕四角点为棱边的
没有底面的正四棱锥内
经zv向裁剪后的视域正四棱锥转化为
正四棱台
,也称为
观察空间或视景体
重点
难点
Bezier曲线的定义
de Casteljau算法
Bezier曲面
B样条曲面
Bezier曲线的拼接
给定n+1个控制点Pi(i=0,1,2……n),则n次Bezier曲线定义为
式中,Pi(i=0,1,2……n)是控制多边形的n+1个控制点
控制多边形是连接n条边构成的多边形
是Bernstein基函数,其表达式为
式中0
º
=1,0!=1。
Bezier曲线是
控制多边形的控制点关于Bernstein基函数的加权和
三次Bezier曲线写为
三次Bezier曲线递推如下
Bezier曲面是
由Bezier曲线拓广而来
以两组正交的Bezier曲线控制点构造空间网格来生成曲面
m×n次Bezier曲面的定义为
(u,v)∈[0,1]×[0,1]
依次用线段连接点列Pi,j(i=0,1,…,m;j=0,1,…,n)中相邻两点所形成的空
间网格称为
控制网格
当m=3,n=3时,由4×4=16个控制点构成控制网格,
其相应的曲面称为
双三次Bezier曲面。
三次B样条曲线
双三次B样条曲面
给定m+n+1个控制点Ph(h=0,1,2,…,m+n),n次B样条曲线段的参数表达式为
i= 0,1,2,…,m;k=0,1,2,…,n
为B样条基函数
连接全部曲线段(m+1段)所组成的整条曲线称为
n次B样条曲线
依次用线段连接控制点Pi+k(k=0,1,2,…,n)组成的多边形称为
B样条曲线在第
i段的控制多边形。
B样条曲线是
分段构成的,
所以控制多边形对曲线的控制灵活直观
若给定m+n+1个控制点,可以构造一条
n次B样条曲线
在工程设计中,
二次B样条曲线
和
三次B样条曲线
应用得较为广泛。
B样条曲面是
B样条曲线
的二维推广
m×n次B样条曲面的定义为
依次用线段连接点列Pi,j(i=0,1,…,m;j=0,1,…,n)中相邻两点所形成的
空间网格称为
控制网格
如果m=n=3,则由4×4=16个顶点构成控制网格
其相应的曲面称为
双三次B样条曲面
两段三次Bezier曲线达到G0连续性的条件是:
P3=Q0
达到G1连续性的条件是:
P2、P3(Q0)和Q1三点共线,且P2和Q1位于P3(Q0)的两侧
重点
难点
递归算法
Koch曲线
龟形图法
Menger海绵
L系统绘制Koch曲线
分形草
压缩仿射变换
拼贴方法确定IFS码
重点
难点
重点
难点
双表结构
多面体与曲面体
颜色缓冲与深度缓冲
背面剔除算法
表面内任一点的深度计算方法
首先绘制的是
物体的线框模型
在几何造型阶段
然后通过
填充表面
或
内部
可以绘制
表面模型
或
实体模型
一般情况下,使用
顶点表
边表
面表
可以方便地检索物体的
任意一个顶点
任意一条边
任意一个表面
由于实体模型中定义了表面外环的棱边方向,相邻两个表面上共享的同一条棱边的定义
方向截然相反
导致无法确定棱边的
顶点顺序
因而放弃使用边表
无论建立的是物体的线框模型、表面模型还是实体模型都统一到
只使用顶点表和面表
两种数据结构来表示
并且要求面表中按照
表面法矢量向外的方向遍历多边形顶点索引号
,表明处理的是
物
体的正面
仅使用顶点表和面表表示物体的数据结构的缺点是
物体的每条棱边都要被重复地绘制2次。
柏拉图多面体
正四面体
正六面体
正八面体
正十二面体
正二十面体
属于
凸多面体
是计算机图形学中使用最多的物体
对偶多面体
若
一种多面体的每个顶点均能对应到另一种多面体上的每个面的中心
,二者互称为对偶
多面体
互为对偶的多面体具有
相同的边数E
且一个多面体的
顶点数V
=对偶多面体的
面数F
正四面体
的对偶多面体依然是
正四面体
正六面体
和
正八面体
互为对偶多面体
正十二面体
和
正二十面体
互为对偶多面体
多面体
曲面体
球
圆柱
圆锥
圆环等光滑物体
在计算机上绘制光滑物体时,需要进行
网格划分
即
将光滑曲面离散为平面多边形来表示,
这些多边形一般为
平面四边形
三角形网格
曲面体的网格顶点表和面表由
参数方程离散后计算
得到
颜色缓冲
深度缓冲
Z-Buffer算法需要建立两个缓冲器
深度缓冲器
帧缓冲器
存储图像空间中每一像素的深度值,初始化为
最大深度值(z坐标)
存储图像空间中的每一像素的颜色值,初始化为
屏幕的背景色
Z-Buffer算法计算
准备写入帧缓冲器当前像素的深度值
,并与已经
存储在深度缓冲
器中的原可见像素的深度值
进行比较。
如果当前像素的深度值小于原可见像素的深度值,表明当前像素
更靠近观察者
且遮住了
原像素,则
将当前像素的颜色写入帧缓冲器
,同时
用当前像素的深度值更新深度缓冲器
否则,不作更改
深度优先级排序
深度优先级排序算法的难点在于
确定物体表面的深度优先级
在消隐问题中,
凸多面体消隐
是最简单和最基本的情形
凸多面体具备这样的性质
连接物体上不同表面的任意两点的直线段完全位于该凸多面体之内
凸多面体由
凸多边形
构成,其表面要么完全可见,要么完全不可见
凸多面体消隐算法的关键是
给出测试其表面边界线可见性的判别式
背面剔除方法为
先计算每个表面的法矢量
然后计算表面上任一点的视线矢量
根据二者的点积大于零来绘制该表面
背面剔除算法也是一种
面消隐算法
顶点的深度值可以通过
三维透视变换
得到
面内的深度则需要使用
平面方程计算
得到
多边形表面的
若多边形表面的平面方程已知,一般采用
增量法
计算扫描线上每一像素点的深度值
平面一般方程为:
RGB颜色模型
简单光照模型
Gouraud明暗处理
物体间光强插值公式
圆柱面的uv化表示
三维纹理的特点
Phong明暗处理
投射阴影的计算方法
几何纹理的映射原理
双线性内插法
RGB颜色模型是显示器的
物理模型
无论软件开发中使用何种颜色模型,只要是绘制到显示器上,图像最终是以RGB颜色模
型表示的
RGB颜色模型可以用一个
三维单位立方体
表示
立方体体对角线上的颜色是
互补色
在立方体的主对角线上,颜色从黑色原点过渡到白色顶点,各原色的变化率相等,产生
了由暗到明的灰度变化,称为
灰度色
在计算机上进行颜色设计时,一般选择
RGB宏
表示颜色
RGB颜色总共能组合出2^24=16777216种颜色,通常称为
千万色
或
24位真彩色
。
灰度色就是指
纯白、纯黑以及两者中的一系列从黑到白的过渡色
灰度色中不包含 任何色调
只有当R、G、B三原色的变化率不同步时,才会出现彩色
计算机图形学的光照模型分为
局部光照模型
全局光照模型
仅考虑
光源直接照射到物体表面所产生的效果
,通常假设物体表面不透明且具有均匀的
反射率。
局部光照模型能够表现出光源直接投射在漫反射物体表面上所形成的
连续明暗色调、镜
面高光以及由于物体相互遮挡而形成的阴影
整体光照模型除了考虑上述因素外,还考虑
周围环境对物体表面的影响
,能模拟镜面的
映像、光的折射以及相邻表面之间的色彩辉映等精确的光照效果。
简单光照模型假定
光源为
点光源
,入射光仅由红、绿、蓝3种不同波长的光组成
物体是
非透明物体
物体表面所呈现的颜色仅由反射光决定,
不考虑透射光的影响
反射光被细分为
漫反射光
镜面反射光
物体之间的反射作用,用
环境光
常量统一表示
点光源
是对场景中比物体小得多的光源的最适合的逼近
简单光照模型分为
环境光模型
漫反射光模型
镜面反射光模型
经验模型
表示为
I表示物体表面上一点反射到视点的光强
Ie表示环境光光强
Id表示漫反射光光强
Is表示镜面反射光光强
双线性光强插值模型
,被称为Gouraud明暗处理
先计算物体表面多边形各顶点的
平均法矢量
然后调用
简单光照模型
计算各顶点的光强
多边形内部各点的光强则通过对多边形顶点光强的
双线性插值
得到
概要
优点
算法简单
缺陷
计算量小
(1)使用Gouraud双线性光强插值实现相邻多边形之间的光滑过渡时,由于采用了光
强插值,高光区域的多边形边界明显,
马赫带效应没有完全消除
(2)镜面反射的高光区域只能在最小面片的周围形成,不能在面片的内部形成,导致
Gouraud明暗处理
生成的高光区域明显大于Phong明暗处理生成的高光区域。
为物体表面添加纹理的技术称为
纹理映射
纹理映射是将纹理空间坐标(u,v)映射为物体空间坐标(x,y,z),再进一步映射为
图
像空间二维物体表面
坐标(x,y)的过程。
高度为h、截面半径为r、三维坐标系原点位于底面中心。圆柱面的参数方程为
圆柱面的uv化表示为
使用上式可以将一张图片映射到圆柱表面上
假如在三维物体空间中,物体上的每一个点P(x,y,z)均有一个纹理值t(x,y,z),其值由纹
理函数惟一确定。那么对于物体上的空间点,就可以映射到一个定义了纹理函数的三维
空间上了。由于三维纹理空间与物体空间维数相同,在进行纹理映射时,只需把场景中
的物体变换到纹理空间即可。
双线性法矢插值模型
也称为Phong明暗处理
Phong明暗处理首先计算
多边形网格的每个顶点的
平均法矢量
然后使用
双线性插值
计算多边形内部各点的法矢量
最后才使用多边形网格上各点的法矢量
调用简单光照模型计算其所获得的光强
。
概要
可以产生正确的高光区域
解决了三角形网格之间颜色不连续过渡的问题
优点
缺点
计算时间长,是Gouraud明暗处理的6~8倍
在OpenGL中未提供Phong明暗处理。
对于单点光源,阴影算法和隐面算法相似
隐面算法确定哪些表面从视点看过去是不可见的
阴影算法确定哪些表面从光源看过去是不可见的,从光源位置看过去不可见的区域就是
阴影区域
计算阴影相当于两次消隐过程
对于物体的多边形表面,如果是自身阴影,则该多边形的光强就只有环境光一项
否则就用正常的光照模型计算光强。
透射阴影使用较深的灰度表示
几何纹理的基本思想是
用简单光照模型计算物体表面的光强时,
对物体表面的法矢量的方向进行微小的扰动
,
导致表面光强的突变,产生凹凸不平的真实感效果
纹理映射
是将
纹理图案映射到不同大小的物体表面上
若投影得到的象素数目比原始纹理大,则需要把纹理图像放大
若投影得到的象素数目比原始纹理小,则需要把纹理图像缩小
将二维纹理映射到曲面物体上时,如球面、圆环面等,会产生严重的
走样
简单的纹理反走样技术是
双线性内插法
对于一个目的像素,设其通过透视投影变换得到的坐标为(u,v),u和v位于[0,1]区间
内。则目的像素的颜色f(u,v)可由原图形中的坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对
应的4个像素的颜色来决定
f(i,j)为(i,j)处的像素值
使用双线性内插法
提高了图像质量
,但可能会
使图像在一定程度上变得模糊
,实践已经
证明,内插算法
对于缩放比例较小的情况是完全可以接受的
。
Created With
MindMaster