欢迎来到天天文库
浏览记录
ID:61970470
大小:3.97 MB
页数:79页
时间:2021-04-07
《计算机图形学-第7章-消除隐藏线和隐藏面.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章隐藏面的消除这一章我们将介绍消除隐藏面的方法。7.1概述第一章我们曾将输出的图形分为线条图和具有明暗效果的真实感图形(面图),在绘制或显示三维图形时,无论采用那种图形表示三维形体,都要消除不可见的线或面,即消除隐藏线或隐藏面(简称消隐),它是计算机图形学的重要内容,其算法有很多种,本章只介绍隐藏面的消除。7.1概述当我们观察空间任何一个不透明的物体时,只能看到该物体上朝向我们的那部分表面,其余的表面由于被物体所遮挡我们看不到。如果把可见不可见的线都用一种线型表示出来,不仅表示不清,很混乱,而且还会产生“二义性”。7.1概述未
2、经消隐的图形如图7.1所示的物体(组合体)在消除隐藏线之前,显然可以有四种不同的理解。其中(a)是未消隐的原图,(b)、(c)、(d)和(e)表示四种可能的物体。可能的四种形体隐藏线和隐藏面不可见的线和面分别称为隐藏线和隐藏面。隐藏线和面不仅仅有形体自身的,而且还有形体之间互相遮挡的。消除它们即称为消除隐藏线和消除隐藏面。形体之间互相遮挡的隐藏线当我们显示线条图或用笔式绘图仪或其它线画设备绘制线条图形时,要解决的主要是消除隐藏线的问题。而当用光栅扫描显示器显示物体的明暗图形时,就必须要解决消除隐藏面的问题。鉴于消隐问题的重要性和复
3、杂性,自60年代以来,人们就消隐问题进行了大量的、深入的研究,提出了许多种算法。60年代初期,由于当时的显示器只能显示线条图,所以研究出了消除隐藏线算法,其中最著名的是罗伯茨(L.G.Roberts)算法(1963年)。从60年代以来,能产生具有真实感明暗图形的光栅扫描显示器逐渐成为显示器市场的主流,于是人们又研究出了多种隐藏面消除算法。并且随着计算机硬件技术的飞速发展,有些隐藏面消除算法已经固化,从而极大的提高了处理速度。然而,在多种消隐算法中,没有一种是完美的,它仍吸引人们去不断研究和探索。真实感图形(物体的相互遮挡)消隐与消
4、隐对象有关,也与观察者的位置有关从另一个角度观察1.物体空间的消隐算法一般是指规范化投影空间或观察空间。在规范化投影空间,物体的平行投影和透视投影的消隐算法得到了统一(视点都在轴正向无穷远处),但在透视变换后,物体形状产生了变形。在物体空间进行消隐需将画面中的k个对象都与画面中的其余k-1个对象一一比较,精确的求出它们之间的遮挡关系。因此,这类算法的计算量正比于k2。2.图象空间的消隐算法图象空间是指投影后,算法在物体显示时所在的屏幕坐标系中实现的空间。画面中的每个对象必须与屏幕坐标系中的每个象素点进行比较,以决定哪个对象在该点的
5、象素是可见的。若屏幕上有mn个象素点,则这类算法的计算量为mnk。一般来说,当k6、元素一般都是点、直线段和平面多边形,消隐算法需要对它们之间进行大量的计算和比较。7.2.1平面多边形的外法矢量为了判别物体上各表面是朝前面还是朝后面,需求出各表面(平面多边形)指向体外的法矢量。设物体在右手坐标系中,多边形顶点按逆时针排列。当多边形为凸多边形时,则其法矢可取成多边形相邻两边矢量的叉积。P1P2P3n这种算法虽然简单,但当多边形为凹多边形时,则可能出现错误,即所求的多边形法矢量指向体内。这时可采用如下的计算方法。设n={A,B,C},而式中若in,则j=i+1;否则i=n,j=1。以上算法适合任何平面多边形。非平面7、但接近平面的多边形的最佳逼近平面的法矢量也可用此算法求出。为避免在程序中出现两种计算平面外矢量的方法,建议凸多边形也采用该算法计算外法矢量。多边形所在平面的方程可写成其中,为平面上任意一点。7.2.2深度检验深度检验是比较位于同一条投射线的若干个点的深度坐标(一般为z坐标),以确定哪个点是可见的,将可见点表示出来。消隐时必须进行深度检验。一般将需要比较的各点的z坐标按递增或递减排序,也可从中选出最大或最小的z坐标。至于选最大或最小与所选的坐标系有关。zyxs深度检验AB7.2.3排序上面已经提到,不仅需要对深度坐标排序,而且需要对8、x坐标排序,以将其两两配对。7.2.4求交点、交线求直线与平面、曲面的交点,平面与平面、曲面的交线,是消隐中经常需要的计算。例如:光线追踪算法,80%的计算是求交。求直线与平面的交点和两平面的交线是容易的。求直线与平面的交点一般将直线方程表示成参数
6、元素一般都是点、直线段和平面多边形,消隐算法需要对它们之间进行大量的计算和比较。7.2.1平面多边形的外法矢量为了判别物体上各表面是朝前面还是朝后面,需求出各表面(平面多边形)指向体外的法矢量。设物体在右手坐标系中,多边形顶点按逆时针排列。当多边形为凸多边形时,则其法矢可取成多边形相邻两边矢量的叉积。P1P2P3n这种算法虽然简单,但当多边形为凹多边形时,则可能出现错误,即所求的多边形法矢量指向体内。这时可采用如下的计算方法。设n={A,B,C},而式中若in,则j=i+1;否则i=n,j=1。以上算法适合任何平面多边形。非平面
7、但接近平面的多边形的最佳逼近平面的法矢量也可用此算法求出。为避免在程序中出现两种计算平面外矢量的方法,建议凸多边形也采用该算法计算外法矢量。多边形所在平面的方程可写成其中,为平面上任意一点。7.2.2深度检验深度检验是比较位于同一条投射线的若干个点的深度坐标(一般为z坐标),以确定哪个点是可见的,将可见点表示出来。消隐时必须进行深度检验。一般将需要比较的各点的z坐标按递增或递减排序,也可从中选出最大或最小的z坐标。至于选最大或最小与所选的坐标系有关。zyxs深度检验AB7.2.3排序上面已经提到,不仅需要对深度坐标排序,而且需要对
8、x坐标排序,以将其两两配对。7.2.4求交点、交线求直线与平面、曲面的交点,平面与平面、曲面的交线,是消隐中经常需要的计算。例如:光线追踪算法,80%的计算是求交。求直线与平面的交点和两平面的交线是容易的。求直线与平面的交点一般将直线方程表示成参数
此文档下载收益归作者所有