第九章消隐 ·消隐的分类 ·消除隐藏线 ·消除隐藏面 基本概念 提高消隐算法效率的常见方法 画家算法 Z缓冲区区- Buffer)算法 扫描线z- buffer算法 扫描线算法 区域子分割算法 光线投射算法
第九章 消隐 • 消隐的分类 • 消除隐藏线 • 消除隐藏面 –基本概念 –提高消隐算法效率的常见方法 –画家算法 –Z缓冲区(Z-Buffer)算法 –扫描线Z-buffer算法 –扫描线算法 –区域子分割算法 –光线投射算法
9.1基本概念 投影变换失去了深度信息,往往导致图形的 义性 要消除二义性,就必须在绘制时消除被遮挡的不可 见的线或面,习惯上称作消除隐藏线和隐藏面,简 称为消隐。 经过消隐得到的投影图称为物体的真实图形 长方体线框投影图的二义性
9.1基本概念 • 投影变换失去了深度信息,往往导致图形的 二义性 • 要消除二义性,就必须在绘制时消除被遮挡的不可 见的线或面,习惯上称作消除隐藏线和隐藏面,简 称为消隐。 • 经过消隐得到的投影图称为物体的真实图形。 长方体线框投影图的二义性
基本概念 消隐的对象是三维物体。三维体的表示 主要有边界表示和CSG表示等。 ·消隐结果与观察物体有关,也与视点有关 线框图 消隐图 真实感图形
基本概念 • 消隐的对象是三维物体。三维体的表示 主要有边界表示和CSG表示等。 • 消隐结果与观察物体有关,也与视点有关。 线框图 消隐图 真实感图形
9.2消隐的分类 ·按消隐对象分类 线消隐 消隐对象是物体上的边,消除的是物体上不可见的边 面消隐 消隐对象是物体上的面,消除的是物体上不可见的面
9.2 消隐的分类 • 按消隐对象分类 –线消隐 • 消隐对象是物体上的边,消除的是物体上不可见的边。 –面消隐 • 消隐对象是物体上的面,消除的是物体上不可见的面
消除隐藏线 ·对造型的要求 在线框显示模型中,要求造型系统中有面的 信息,最好有体的信息。 坐标变换 将视点变换到Z轴的正无穷大处,视线方向 变为Z轴的负方向。 最基本的运算 判断面对线的遮挡关系反复地进行线线、 线面之间的求交运算
消除隐藏线 • 对造型的要求 –在线框显示模型中,要求造型系统中有面的 信息,最好有体的信息。 • 坐标变换 –将视点变换到Z轴的正无穷大处,视线方向 变为Z轴的负方向。 • 最基本的运算 –判断面对线的遮挡关系.反复地进行线线、 线面之间的求交运算
面消隐 面消隐算法的分类 提高消隐算法效率的常见方法 画家算法 Z缓冲器算法 扫描线Z缓冲器算法 区域子分算法 光线投射算法
面消隐 • 面消隐算法的分类 • 提高消隐算法效率的常见方法 • 画家算法 • Z缓冲器算法 • 扫描线Z缓冲器算法 • 区域子分算法 • 光线投射算法
9.2.1面消隐算法的分类 消隐算法的分类 第一类(图像空间的消隐算法):以窗口内的每个像 素为处理单元;如Z一 buffer、扫描线、 Warnock算法 for(窗口内的每一个像素 {确定距视点最近的物体,以该物体表面的颜色来显示像素} 第二类(物体空间的消隐算法):以场景中的物体为 处理单元;如光线投射算法 for(场景中的每一个物体) {将其与场景中的其它物体比较,确定其表面的可见部分; 显示该物体表面的可见部分;
9.2.1 面消隐算法的分类 • 消隐算法的分类 第一类(图像空间的消隐算法):以窗口内的每个像 素为处理单元;如Z-buffer、扫描线、Warnock算法 for (窗口内的每一个像素) { 确定距视点最近的物体,以该物体表面的颜色来显示像素} 第二类(物体空间的消隐算法):以场景中的物体为 处理单元;如光线投射算法 for (场景中的每一个物体) { 将其与场景中的其它物体比较,确定其表面的可见部分; 显示该物体表面的可见部分; }
9.2.2面消隐算法的分类 第一类(图像空间的消隐算法):以窗口内 的每个像素为处理单元 for(窗口内的每一个像素) {确定距视点最近的物体,以该物体表面的颜色来 显示像素} 假设场景中有k个物体,平均每个物体表 面由h个多边形构成,显示区域中有mxn 个像素,则: 算法的复杂度为:O(mnkh)
9.2.2面消隐算法的分类 第一类(图像空间的消隐算法):以窗口内 的每个像素为处理单元; for (窗口内的每一个像素) { 确定距视点最近的物体,以该物体表面的颜色来 显示像素} • 假设:场景中有k个物体,平均每个物体表 面由h个多边形构成,显示区域中有m x n 个像素,则: 算法的复杂度为:O(mnkh)
面消隐算法的分类 第二类(物体空间的消隐算法):以场景中的物 体为处理单元; for(场景中的每一个物体) {将其与场景中的其它物体比较,确定其表面的 可见部分; 显示该物体表面的可见部分; 假设场景中有k个物体,平均每个物体表面由h个 多边形构成,显示区域中有mxn个像素,则 算法的复杂度为:O(kh)*(kh)
面消隐算法的分类 第二类(物体空间的消隐算法 ):以场景中的物 体为处理单元; for (场景中的每一个物体) { 将其与场景中的其它物体比较,确定其表面的 可见部分; 显示该物体表面的可见部分; } 假设场景中有k个物体,平均每个物体表面由h个 多边形构成,显示区域中有m x n个像素,则: 算法的复杂度为:O((kh)*(kh))
9.3提高消隐算法效率的常见 方法 利用连贯性 将透视投影转换成平行投影 包围盒技术 背面剔除 空间分割技术 ·物体分层表示
9.3 提高消隐算法效率的常见 方法 • 利用连贯性 • 将透视投影转换成平行投影 • 包围盒技术 • 背面剔除 • 空间分割技术 • 物体分层表示