第9章消隐 提出问题 物体的消隐或隐藏线面的消除:在给定视点和视 线方向后,决定场景中哪些物体的表面是可见的, 哪些是被遮挡不可见的。物体的消隐或隐藏线面 的消除。 2021/2/21 华中理工大学计算机学院陆枫 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 1 第9章 消隐 提出问题 • 物体的消隐或隐藏线面的消除:在给定视点和视 线方向后,决定场景中哪些物体的表面是可见的, 哪些是被遮挡不可见的。物体的消隐或隐藏线面 的消除
图象空间消隐算法以屏幕象素为采样单位,确定投 影于每一象素的可见景物表面区域,并将其颜色作 为该象素的显示颜色。 景物空间消隐算法直接在景物空间(观察坐标系) 中确定视点不可见的表面区域,并将它们表达成同 原表面一致的数据结构 2021/2/21 华中理工大学计算机学院陆枫 2 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 2 图象空间消隐算法以屏幕象素为采样单位,确定投 影于每一象素的可见景物表面区域,并将其颜色作 为该象素的显示颜色。 景物空间消隐算法直接在景物空间(观察坐标系) 中确定视点不可见的表面区域,并将它们表达成同 原表面一致的数据结构
图象空间消隐算法:有深度缓冲器算法、A缓冲器算法 区间扫描线算法等。 景物空间消隐算法:BSP算法、多边形区域排序算法。 介于二者之间:深度排序算法、区域细分算法、光线投 射算法等。 两个基本原则:排序、连贯性 选择油轴的负向为观察方向 2021/2/21 华中理工大学计算机学院陆枫 3 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 3 图象空间消隐算法:有深度缓冲器算法、A缓冲器算法、 区间扫描线算法等。 景物空间消隐算法:BSP算法、多边形区域排序算法。 介于二者之间:深度排序算法、区域细分算法、光线投 射算法等。 两个基本原则:排序、连贯性 选择z轴的负向为观察方向
9深度缓存器算法( Z-buffer算法) Z- buffer算法的原理: 例如: R P x, y) 屏幕 图91深度缓存器算法的原理(P1近,可见 2021/2/21 华中理工大学计算机学院陆枫 4 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 4 9.1 深度缓存器算法(Z-buffer算法) Z-buffer算法的原理: 例如: 图9-1 深度缓存器算法的原理(P1近,可见) z x y (x,y) P1 P2 屏幕 0 R
两块缓冲区: Z缓存:保存屏幕坐标系上各象素点所对应的 深度值 帧缓存:保存各点的颜色。 2021/2/21 华中理工大学计算机学院陆枫 5 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 5 两块缓冲区: Z缓存:保存屏幕坐标系上各象素点所对应的 深度值 帧缓存:保存各点的颜色
Z-bufr算法的步骤如下: 1.初始化:把Z缓存中各(xy)单元置为z的最小值,而 帧缓存各(xy)单元置为背景色 2.在把物体表面相应的多边形扫描转换成帧缓存中的 信息时,对于多边形内的每一采样点(xy)进行处理: (1)计算采样点xy)的深度z(xy); (2)如z(xy)大于Z缓存中在(xy)处的值,则把z(xy)存入Z 缓存中的(xy)处,再把多边形在z(xy)处的颜色值存入 帧缓存的(xy)地址中 2021/2/21 华中理工大学计算机学院陆枫 6 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 6 Z-buffer算法的步骤如下: 1.初始化:把Z缓存中各(x,y)单元置为z的最小值,而 帧缓存各(x,y)单元置为背景色。 2.在把物体表面相应的多边形扫描转换成帧缓存中的 信息时,对于多边形内的每一采样点(x,y)进行处理: (1)计算采样点(x,y)的深度z(x,y); (2)如z(x,y)大于Z缓存中在(x,y)处的值,则把z(x,y)存入Z 缓存中的(x,y)处,再把多边形在z(x,y)处的颜色值存入 帧缓存的(x,y)地址中
问题:计算采样点(x2y)的深度x2y) 假定多边形的平面方程为:Ax+By+Cz+D=0。 z(x,y)=s4x-By-D C 2021/2/21 华中理工大学计算机学院陆枫 7 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 7 问题:计算采样点(x,y)的深度z(x,y)。 假定多边形的平面方程为:Ax+By+Cz+D=0。 C Ax By D z x y − − − ( , ) =
利用连贯性加速深度的计算: y 人多边形 y-1 扫描线 x+1 图92利用扫描线的连贯性加速深度的计算 2021/2/21 华中理工大学计算机学院陆枫 8 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 8 利用连贯性加速深度的计算: 图9-2 利用扫描线的连贯性加速深度的计算 0 x y x x+1 y y-1 扫描线 多边形
扫描线上所有后继点的深度值: z(x+ )-A(x+1)-B-D=2(xy子 C C ·当处理下一条扫描线y=y-1时,该扫描线上与多边形相 交的最左边(x最小)交点的x值可以利用上一条扫描线 上的最左边的x值计算: 1 xy-1,min=x y,mn 2021/2/21 华中理工大学计算机学院陆枫 9 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 9 扫描线上所有后继点的深度值: • 当处理下一条扫描线y=y-1时,该扫描线上与多边形相 交的最左边(x最小)交点的x值可以利用上一条扫描线 上的最左边的x值计算: ( , ) ( 1) ( 1, ) C A z x y C A x By D z x y = − − + − − + = 1 1,min ,min k x x y− = y −
Ax B(y-1)-D 2(x y-l, min 2 y-1)= ly-1, min C A( ly, min )-B(y-1)-D k A +B 2(x IJ, min,1)+ 扫描线深度缓存器算法(扫描线Z- buffer算法) 特点分析:A缓冲器算法 2021/2/21 华中理工大学计算机学院陆枫 10 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 10 ( , ) ) ( 1) 1 ( ( 1) ( , 1) ,min ,min 1,min 1,min C B k A z x y C B y D k A x C Ax B y D z x y y y y y + = + − − − − − = − − − − − = − − 扫描线深度缓存器算法(扫描线Z-buffer算法) 特点分析:A缓冲器算法