第九章消隐 消除隐藏面 基本概念 ■Z缓冲区(Z- Buffer)算法 ■扫描线Z- buffer算法 区间扫描线算法 光线投射算法 2021/1/21 浙江大学计算机图形学
2021/1/21 浙江大学计算机图形学 1 第九章 消隐 ◼ 消除隐藏面 ◼ 基本概念 ◼ Z缓冲区(Z-Buffer)算法 ◼ 扫描线Z-buffer算法 ◼ 区间扫描线算法 ◼ 光线投射算法
基本概念 ■投影变换失去了深度信息,往往导致图形的 义性 ■要消除二义性,就必须在绘制时消除被遮挡的不可 见的线或面,习惯上称作消除隐藏线和隐藏面,简 称为消隐。 经过消隐得到的投影图称为物体的真实图形。 长方体线框投影图的二义性 2021/1/21 浙江大学计算机图形学
2021/1/21 浙江大学计算机图形学 2 基本概念 ◼ 投影变换失去了深度信息,往往导致图形的 二义性 ◼ 要消除二义性,就必须在绘制时消除被遮挡的不可 见的线或面,习惯上称作消除隐藏线和隐藏面,简 称为消隐。 ◼ 经过消隐得到的投影图称为物体的真实图形。 长方体线框投影图的二义性
基本概念 消隐的对象是三维物体。三维体的表示 主要有边界表示和CSG表示等。 ■消隐结果与观察物体有关,也与视点有关。 线框图 消隐图 真实感图形 2021/1/21 浙江大学计算机图形学
2021/1/21 浙江大学计算机图形学 3 基本概念 ◼ 消隐的对象是三维物体。三维体的表示 主要有边界表示和CSG表示等。 ◼ 消隐结果与观察物体有关,也与视点有关。 线框图 消隐图 真实感图形
消隐的分类 ■按消隐对象分类 ■线消隐 消隐对象是物体上的边,消除的是物体上不可见的边 ■面消隐 消隐对象是物体上的面,消除的是物体上不可见的面 2021/1/21 浙江大学计算机图形学
2021/1/21 浙江大学计算机图形学 4 消隐的分类 ◼ 按消隐对象分类 ◼ 线消隐 ◼ 消隐对象是物体上的边,消除的是物体上不可见的边。 ◼ 面消隐 ◼ 消隐对象是物体上的面,消除的是物体上不可见的面
面消隐 面消隐算法的分类 Z缓冲器算法 扫描线Z缓冲器算法 区间扫描线算法 光线投射算法 2021/1/21 浙江大学计算机图形学
2021/1/21 浙江大学计算机图形学 5 面消隐 面消隐算法的分类 Z缓冲器算法 扫描线Z缓冲器算法 区间扫描线算法 光线投射算法
面消隐算法的分类 消隐算法的分类 第一类(图像空间的消隐算法):以窗口内的每个像 素为处理单元;如Z一 buffer、扫描线算法 for(窗口内的每一个像素) 确定距视点最近的物体,以该物体表面的颜色来显示像素} 第二类(物体空间的消隐算法):以场景中的物体为 处理单元;如光线投射算法 for(场景中的每一个物体) 将其与场景中的其它物体比较,确定其表面的可见部分; 显示该物体表面的可见部分; 2021/1/21 浙江大学计算机图形学
2021/1/21 浙江大学计算机图形学 6 面消隐算法的分类 ◼ 消隐算法的分类 第一类(图像空间的消隐算法):以窗口内的每个像 素为处理单元;如Z-buffer、扫描线算法 for (窗口内的每一个像素) { 确定距视点最近的物体,以该物体表面的颜色来显示像素} 第二类(物体空间的消隐算法):以场景中的物体为 处理单元;如光线投射算法 for (场景中的每一个物体) { 将其与场景中的其它物体比较,确定其表面的可见部分; 显示该物体表面的可见部分; }
面消隐算法的分类 第一类(图像空间的消隐算法):以窗口内 的每个像素为处理单元 for(窗口内的每一个像素) {确定距视点最近的物体,以该物体表面的颜色 来显示像素} 假设场景中有k个物体,平均每个物体表面 由h个多边形构成,显示区域中有mxn个 像素,则 算法的复杂度为:0(mnkh 2021/1/21 浙江大学计算机图形学 7
2021/1/21 浙江大学计算机图形学 7 面消隐算法的分类 第一类(图像空间的消隐算法):以窗口内 的每个像素为处理单元; for (窗口内的每一个像素) { 确定距视点最近的物体,以该物体表面的颜色 来显示像素} ◼ 假设场景中有k个物体,平均每个物体表面 由h个多边形构成,显示区域中有m x n个 像素,则: 算法的复杂度为:O(mnkh)
面消隐算法的分类 第二类(物体空间的消隐算法):以场景中的 物体为处理单元; for(场景中的每一个物体) 将其与场景中的其它物体比较,确定其表面的可见部 分 显示该物体表面的可见部分; 假设场景中有k个物体,平均每个物体表面由h个 多边形构成,显示区域中有mxn个像素,则: 算法的复杂度为:0(kh)*(kh)) 2021/1/21 浙江大学计算机图形学
2021/1/21 浙江大学计算机图形学 8 面消隐算法的分类 第二类(物体空间的消隐算法 ):以场景中的 物体为处理单元; for (场景中的每一个物体) { 将其与场景中的其它物体比较,确定其表面的可见部 分; 显示该物体表面的可见部分; } 假设场景中有k个物体,平均每个物体表面由h个 多边形构成,显示区域中有m x n个像素,则: 算法的复杂度为:O((kh)*(kh))
Z- Buffer算法 由来 帧缓冲器一保存各像素颜色值 Z缓冲器一-保存各像素处物体深度值 Z缓冲器中的单元与帧缓冲器中的单元 对应 屏幕 帧缓冲器 Z缓冲器 每个单元存放对应 每个单元存放对应 象素的颜色值 象素的深度值
2021/1/21 浙江大学计算机图形学 9 Z-Buffer算法 ◼ 由来: 帧缓冲器 – 保存各像素颜色值 Z缓冲器 --保存各像素处物体深度值 Z缓冲器中的单元与帧缓冲器中的单元一 一对应 屏幕 帧缓冲器 Z缓冲器 每个单元存放对应 象素的颜色值 每个单元存放对应 象素的深度值
Z- Buffer算法 思想:先将Z缓冲器中每个单元的初始值置为最 小值。当要改变某个像素的颜色值时,首先检 查当前多边形的深度值是否大于该像素原来的 深度值(保存在该像素所对应的Z缓冲器的单 元中),如果大于,说明当前多边形更靠近观 察点,用它的颜色替换像素原来的颜色;否则 说明在当前像素处,当前多边形被前面所绘制 的多边形遮挡了,是不可见的,像素的颜色值 不改变 2021/1/21 浙江大学计算机图形学
2021/1/21 浙江大学计算机图形学 10 Z-Buffer算法 思想:先将Z缓冲器中每个单元的初始值置为最 小值。当要改变某个像素的颜色值时,首先检 查当前多边形的深度值是否大于该像素原来的 深度值(保存在该像素所对应的Z缓冲器的单 元中),如果大于,说明当前多边形更靠近观 察点,用它的颜色替换像素原来的颜色;否则 说明在当前像素处,当前多边形被前面所绘制 的多边形遮挡了,是不可见的,像素的颜色值 不改变