《计算机图形学-第九章讲义.ppt》由会员分享,可在线阅读,更多相关《计算机图形学-第九章讲义.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第九章第九章 可见面判别算法可见面判别算法本章重点讲述内容:本章重点讲述内容:后向面消除法后向面消除法深度缓存算法深度缓存算法可见面判别:判别从某一选定观察位置所能可见面判别:判别从某一选定观察位置所能看到的场景中的内容看到的场景中的内容消隐:在绘制时隐藏实际不可见的线和面消隐:在绘制时隐藏实际不可见的线和面消隐的考虑:消隐的考虑:三维物体的真实图形三维物体的真实图形选择不同的消隐算法选择不同的消隐算法第九章第九章 可见面判别算法可见面判别算法l可见面判别算法,按实现空间分类可见面判别算法,按实现空间分类物空间算法物空间算法像空间像法像空间像法第九章第九章 可见面判别算法可见面判别算法可见面判
2、别算法可见面判别算法物空间算法物空间算法在对象定义时所处的坐标系中实现。在对象定义时所处的坐标系中实现。这这种种方方法法把把物物体体和和物物体体的的某某些些部部分分彼彼此此比比较较,通通过过有有关关几几何何运运算算,以以确确定定哪哪些些线线或或表表面面是是不不可见的。然后仅显示可见线,以此实现消隐可见的。然后仅显示可见线,以此实现消隐算算法法精精度度较较高高,生生成成的的图图形形可可以以放放大大多多倍倍而而仍仍然令人满意,适用于精密的工程应用领域然令人满意,适用于精密的工程应用领域像空间算法像空间算法在显示图形的屏幕坐标系中实现在显示图形的屏幕坐标系中实现对对投投影影平平面面或或显显示示屏屏幕
3、幕上上的的每每一一个个像像素素位位置置逐逐点地检测其可见性。点地检测其可见性。算算法法比比较较粗粗糙糙而而且且按按图图像像空空间间算算法法得得到到的的画画面在放大后往往不能令人满意。面在放大后往往不能令人满意。算算法法计计算算效效率率比比较较高高,因因为为在在光光栅栅扫扫描描过过程程中中可以充分利用画面的连贯性等性质可以充分利用画面的连贯性等性质可见面判别算法可见面判别算法两两类类方方法法一一般般都都利利用用排排序序和和连连贯贯性性来来提提高高算算法性能法性能排序主要用在深度比较排序主要用在深度比较连贯性利用图形的规则性连贯性利用图形的规则性可见面判别算法可见面判别算法提高可见面判别算法效率的
4、常用方法提高可见面判别算法效率的常用方法扫描线连贯性扫描线连贯性:一条扫描:一条扫描线可能包含相同强度的像线可能包含相同强度的像素区段,并且相邻扫描线素区段,并且相邻扫描线之间的图案变化很小之间的图案变化很小区域连贯性区域连贯性:动画中的各帧之间仅在运动对象的:动画中的各帧之间仅在运动对象的相邻区域内有差异,并且通常可以建立起场景中相邻区域内有差异,并且通常可以建立起场景中的对象与场景表面之间的稳定关系的对象与场景表面之间的稳定关系l利用利用连贯性连贯性:充分利用场景的规则性特征:充分利用场景的规则性特征提高可见面判别算法效率的常用方法提高可见面判别算法效率的常用方法将场景中的对象表面根据它们
5、与观察平将场景中的对象表面根据它们与观察平面的距离进行排序,可以加速深度比较面的距离进行排序,可以加速深度比较l利用利用排序排序提高效率提高效率13.1 可见面判别算法的分类可见面判别算法的分类可见面判别算法可见面判别算法后向面消除法后向面消除法深度缓存算法深度缓存算法后向面判别后向面判别平面方程:平面方程:Ax+By+Cz+D=0点点(x,y,z)与平面的位置关系与平面的位置关系Ax+By+Cz+D 0 (x,y,z)在平面上在平面上Ax+By+Cz+D 0 (x,y,z)在平面前方在平面前方后向面判别后向面判别l后向面判别思想后向面判别思想 设点设点(x,y,z)满足满足Ax+By+Cz+
6、D 0,则为后向面则为后向面后向面判别后向面判别可通过视角可通过视角 判别判别VN=|V|N|cos,if 090,then 面不可见面不可见l简单测试方法二简单测试方法二 若将对象描述转换至投影坐标系后,观察方向若将对象描述转换至投影坐标系后,观察方向平行于观察坐标系中平行于观察坐标系中zv轴,则仅需要考虑法向轴,则仅需要考虑法向量量N(A,B,C)的)的z分量分量后向面判别后向面判别右手观察坐标系右手观察坐标系若若C 0,则为后向面,则为后向面 后向面判别后向面判别总结总结对于一个对象的所有表面,通过检查对于一个对象的所有表面,通过检查C,可,可迅速判别出所有的后向面迅速判别出所有的后向面
7、v凸多面体:面要么完全可见,要么完全不凸多面体:面要么完全可见,要么完全不可见,该方法能判别出所有隐藏面可见,该方法能判别出所有隐藏面v凹多面体:有遮挡,主要是部分遮挡,还凹多面体:有遮挡,主要是部分遮挡,还需要其他方法检查部分遮挡需要其他方法检查部分遮挡是一种高效的物空间算法是一种高效的物空间算法可用于预处理可用于预处理l思想:思想:是一个比较常用的判定对象表面可见性的是一个比较常用的判定对象表面可见性的像像空间算法空间算法在投影面上的每个像素位置比较场景中所有在投影面上的每个像素位置比较场景中所有面的面的深度深度对场景中的各个对象表面单独进行处理,且对场景中的各个对象表面单独进行处理,且在
8、表面上逐点进行在表面上逐点进行由于通常沿着观察系统的由于通常沿着观察系统的z轴来计算各对象轴来计算各对象距观察平面的深度,也叫距观察平面的深度,也叫Z缓冲器算法缓冲器算法深度缓存算法深度缓存算法s3s2s1ls1平面距离投影平面最近,所以投影点平面距离投影平面最近,所以投影点(x,y)将将保存保存s1平面上相应点的属性信息平面上相应点的属性信息深度缓存算法深度缓存算法XvZvYv观察方向观察方向(x,y)l深度与可见性深度与可见性uvnumaxvmax深度缓存算法深度缓存算法l缓冲区:两个缓冲区缓冲区:两个缓冲区深度深度缓冲区(缓冲区(Z缓冲区)缓冲区)刷新刷新缓冲区缓冲区l算法实质:算法实质
9、:对给定的对给定的x,y,寻找最小的,寻找最小的z(x,y)深度缓存算法深度缓存算法深度缓存算法深度缓存算法算法描述:算法描述:(1)缓冲器初始化缓冲器初始化depth(x,y)=1.0;初始化为;初始化为0 refresh(x,y)=Ibg;背景色;背景色(2)计算多边形上各点的深度值计算多边形上各点的深度值z(x,y),并判断,并判断 if z(x,y)depth(x,y)depth(x,y)=z(x,y),refresh(x,y)=Isurf(x,y);表面颜色;表面颜色 深度缓存算法深度缓存算法(3)最终结果:最终结果:深度缓冲器深度缓冲器中保存的是可见面的中保存的是可见面的深度值深度
10、值 刷新缓冲器刷新缓冲器中保存的是这些表面的对应中保存的是这些表面的对应属性值属性值如何计算多边形平面上各点的深度如何计算多边形平面上各点的深度z(x,y)?l采用采用连贯性连贯性方法以提高效率:方法以提高效率:扫描线扫描线深度缓存算法深度缓存算法x yz水平方向水平方向:线上相:线上相邻点间的邻点间的x水平位移水平位移为为1竖直方向竖直方向:相邻扫:相邻扫描线间的描线间的y垂直位移垂直位移也为也为1l沿一条沿一条y=const的扫描线计算各点的深度的扫描线计算各点的深度 设平面方程为:设平面方程为:Ax+By+Cz+D=0 已知已知z(x,y),求,求z(x+1,y)z(x+1,y)=z-(
11、A/C)l沿多边形的左边界计算各点的深度,设边斜率沿多边形的左边界计算各点的深度,设边斜率为为m 已知已知z(x,y),求,求z(x-1/m,y-1)z(x-1/m,y-1)=z+(A/m+B)/C深度缓存算法深度缓存算法l改进算法改进算法采用采用中点法中点法或或Bresenham类类算法,为每条扫算法,为每条扫描线确定最左边的描线确定最左边的x坐标,可回忆多边形扫坐标,可回忆多边形扫描线填充算法描线填充算法改进算法还用于处理曲面,计算各表面投影改进算法还用于处理曲面,计算各表面投影点的深度和颜色值点的深度和颜色值深度缓存算法深度缓存算法l评价评价易于实现,无需将场景中的表面进行排序;易于实现
12、,无需将场景中的表面进行排序;空间需求大:除帧缓存外,需要深度缓存;空间需求大:除帧缓存外,需要深度缓存;基本深度缓存算法经常执行一些不需要的计算;基本深度缓存算法经常执行一些不需要的计算;只能处理非透明表面;只能处理非透明表面;对于复杂场景的性能较好;对于复杂场景的性能较好;高档计算机图形系统一般集成了深度缓存算法的高档计算机图形系统一般集成了深度缓存算法的硬件实现。硬件实现。深度缓存算法深度缓存算法l不同的算法有不同的应用背景不同的算法有不同的应用背景如果场景中的表面沿视线的分布较广,从而如果场景中的表面沿视线的分布较广,从而在深度上重叠较少,则深度排序或在深度上重叠较少,则深度排序或BSP树方树方法的效率一般较高法的效率一般较高在投影面上的投影有较少投影时,扫描线或在投影面上的投影有较少投影时,扫描线或区域细分方法是较快定位可见面的方法区域细分方法是较快定位可见面的方法l可见面判别算法常常是硬件实现可见面判别算法常常是硬件实现可见面判别算法小结可见面判别算法小结