三维真实感图形

上传人:cl****1 文档编号:570326377 上传时间:2024-08-03 格式:PPT 页数:52 大小:274.50KB
返回 下载 相关 举报
三维真实感图形_第1页
第1页 / 共52页
三维真实感图形_第2页
第2页 / 共52页
三维真实感图形_第3页
第3页 / 共52页
三维真实感图形_第4页
第4页 / 共52页
三维真实感图形_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《三维真实感图形》由会员分享,可在线阅读,更多相关《三维真实感图形(52页珍藏版)》请在金锄头文库上搜索。

1、三维真实感图形三维真实感图形三维真实感图形三维真实感图形真实感图形真实感图形l物体的图形比较真实地反应了物体本身。物体的图形比较真实地反应了物体本身。l对于一个处于静态的物体来说,这种真实感表现在对于一个处于静态的物体来说,这种真实感表现在两个基本方面两个基本方面常规视觉上的真实(区分可见和不可见)常规视觉上的真实(区分可见和不可见)表面效果的真实(表达材质、光照、明暗等)表面效果的真实(表达材质、光照、明暗等)8/3/202422011-2012(2)三维真实感图形三维真实感图形真实感图形真实感图形 在在现现实实世世界界中中,当当观观察察空空间间任任何何一一个个不不透透明明的的物物体体时时,

2、总总能能看看到到该该物物体体上上朝朝向向观观察察者者视视线线方方向向的的那那部部分分表表面面,而而其其余余的的表表面面是是不不可可能能看看见见的的。或或者者在在观观察察包包含含有有多多个个立立体体的的场场景景时时,也也只只能能看看到到近近的的、位位于于前前面面的的立立体体,而而那那些些远远的的立立体体,往往往往被被位位于于它它们们前前面面的的立立体体所所遮遮挡挡,而而不不能能被被看看到,如看一个居民区的楼群,或是看一个室内的陈设。到,如看一个居民区的楼群,或是看一个室内的陈设。 8/3/202432011-2012(2)三维真实感图形三维真实感图形真实感图形真实感图形 所所以以,如如果果对对图

3、图形形信信息息不不加加专专门门的的处处理理,那那么么,在在计计算算机机产产生生的的物物体体的的图图形形中中,物物体体的的所所有有部部分分都都将将被被表表示示出出来来,而而不不管管是是看看得得见见的的,还还是是看看不不见见的的。这这样样,图图形形所所表表示示的的物物体体形形状状是是不不清清楚楚的的,也也是是不不真真实实的的甚甚至至是是根根本本无无法法确定的。确定的。 8/3/202442011-2012(2)三维真实感图形三维真实感图形真实感图形真实感图形 所所以以,要要绘绘制制出出意意义义明明确确的的、富富有有真真实实感感的的立立体体图图形形,首首先先必必须须消消去去形形体体中中的的不不可可见

4、见部部分分,而而只只在在图图形形中中表表现现可可见部分。见部分。 这就要去寻求解决显示三维物体的图形中消去不可见这就要去寻求解决显示三维物体的图形中消去不可见部分的方法,也就是所谓的部分的方法,也就是所谓的“消隐消隐”问题。问题。8/3/202452011-2012(2)三维真实感图形三维真实感图形平面方程及法向量平面方程及法向量 计计算算一一个个立立体体各各表表面面的的法法向向量量及及表表面面所所在在平平面面方方程程的的系数,是在消隐算法中经常要遇到的计算问题。系数,是在消隐算法中经常要遇到的计算问题。 设平面内有不共线的设平面内有不共线的3 3点点P P1 1(x(x1 1,y,y1 1,

5、z,z1 1) )、P P2 2(x(x2 2,y,y2 2,z,z2 2) )、P P3 3(x(x3 3,y,y3 3,z,z3 3) ),则可得:,则可得: P P1 1P P2 2 = (x = (x2 2 x x1 1)i + (y)i + (y2 2 y y1 1)j + (z)j + (z2 2 z z1 1)k)k P P1 1P P3 3 = (x = (x3 3 x x1 1)i + (y)i + (y3 3 y y2 2)j + (z)j + (z3 3 - z - z2 2)k)k8/3/202462011-2012(2)三维真实感图形三维真实感图形平面方程及法向量平面

6、方程及法向量 于是,可通过求叉积计算出该平面的法向量于是,可通过求叉积计算出该平面的法向量 N N。 其中其中A A、B B、C C为法线方向数:为法线方向数:8/3/202472011-2012(2)三维真实感图形三维真实感图形平面方程及法向量平面方程及法向量 将将平平面面内内任任意意一一点点的的坐坐标标值值代代入入,便便可可以以得得到到平平面面的的方方程程。设设以以 P1 P1 点点的的坐坐标标值值(x1x1,y1y1,z1z1)代代入入,即即可可得得到平面的方程式为:到平面的方程式为:A A(x x1x x1)+ B(y y1) + C(z - z1) = 0+ B(y y1) + C(

7、z - z1) = 0归纳整理为归纳整理为Ax + By + Cz (Ax1 + By1 + Cz1) = 0Ax + By + Cz (Ax1 + By1 + Cz1) = 08/3/202482011-2012(2)凸面体的消隐方法凸面体的消隐方法任意平面体的消隐算法任意平面体的消隐算法隐藏面算法隐藏面算法8/3/202492011-2012(2)凸面体的消隐方法凸面体的消隐方法 平面体是由多个平面多边形构成的立体,一般分为凸平面体是由多个平面多边形构成的立体,一般分为凸多面体和凹多面体。凸多面体具备这样一个性质:连接形多面体和凹多面体。凸多面体具备这样一个性质:连接形体上不同表面的任意两

8、点的线段完全位于形体的内部。体上不同表面的任意两点的线段完全位于形体的内部。 凸多面体由多个平面凸多边形组成,它的多边形表面凸多面体由多个平面凸多边形组成,它的多边形表面要么完全可见,要么完全不可见。无论从哪一个方向去观要么完全可见,要么完全不可见。无论从哪一个方向去观察凸多面体,不会发生表面上一部分可见而另一部分不可察凸多面体,不会发生表面上一部分可见而另一部分不可见的情形。见的情形。 而凹多面体不具备这种性质,其上有些表面存在着部而凹多面体不具备这种性质,其上有些表面存在着部分可见部分不可见。因此凹多面体的消隐要比凸多面体的分可见部分不可见。因此凹多面体的消隐要比凸多面体的消隐复杂得多,要

9、做大量的比较判断和求交工作。消隐复杂得多,要做大量的比较判断和求交工作。8/3/2024102011-2012(2)凸面体的消隐方法凸面体的消隐方法平面体表面法向量与可见性的关系平面体表面法向量与可见性的关系 平面立体是由多个平面多边形构成的。各多边形所在平面立体是由多个平面多边形构成的。各多边形所在的平面均有其法线,规定立体表面法线的方向是由立体内的平面均有其法线,规定立体表面法线的方向是由立体内部指向立体的外部空间,因此,习惯上称它为部指向立体的外部空间,因此,习惯上称它为“外法线外法线”。 假设在右手笛卡尔坐标系中,把假设在右手笛卡尔坐标系中,把 xoz xoz 坐标平面作为坐标平面作为

10、投影面,以投影面,以 y y 轴为深度坐标轴。当往该投影面上作立体轴为深度坐标轴。当往该投影面上作立体的正投影时,则此时的投影线平行于坐标系的的正投影时,则此时的投影线平行于坐标系的 y y 轴,根轴,根据外法线与据外法线与 y y 轴之间夹角的大小,即可以判断该法线所轴之间夹角的大小,即可以判断该法线所在平面的可见性。在平面的可见性。8/3/2024112011-2012(2)凸面体的消隐方法凸面体的消隐方法平面体表面法向量与可见性的关系平面体表面法向量与可见性的关系 设外法线与设外法线与 y y 轴之间的夹角为轴之间的夹角为 。以三棱锥为例,。以三棱锥为例,来说明来说明 角的大小和三棱锥各

11、表面可见性的关系。角的大小和三棱锥各表面可见性的关系。8/3/2024122011-2012(2)凸面体的消隐方法凸面体的消隐方法平面体表面法向量与可见性的关系平面体表面法向量与可见性的关系 (1 1)0 0 0) 此时,平面的外法线在此时,平面的外法线在 y y 轴上的投影和轴上的投影和 y y 轴的正方轴的正方向是一致的,或者说法向量在向是一致的,或者说法向量在 y y 轴方向上的分量为正。轴方向上的分量为正。 反映到空间的情况,则说明该法线所代表的多面体的反映到空间的情况,则说明该法线所代表的多面体的外表面是朝向外表面是朝向 y y 轴的正方向的(面向观察者)。这样的轴的正方向的(面向观

12、察者)。这样的面被称为面被称为“朝前面朝前面”。如。如SPQSPQ,SQOSQO。8/3/2024132011-2012(2)凸面体的消隐方法凸面体的消隐方法平面体表面法向量与可见性的关系平面体表面法向量与可见性的关系 (2 2) = 90(cos = 0) 此时,平面的外法线在此时,平面的外法线在 y y 轴上的投影为零。轴上的投影为零。 反映到空间的情况,则说明该法线所代表的多面体的反映到空间的情况,则说明该法线所代表的多面体的外表面是平行于外表面是平行于 y y 轴的,那么,它在投影面上的投影将轴的,那么,它在投影面上的投影将积聚成一条直线。如积聚成一条直线。如OPQOPQ。8/3/20

13、24142011-2012(2)凸面体的消隐方法凸面体的消隐方法平面体表面法向量与可见性的关系平面体表面法向量与可见性的关系 (3 3)9090 180(cos 0) 此时,平面的外法线在此时,平面的外法线在 y y 轴上的投影和轴上的投影和 y y 轴的负方轴的负方向是一致的,或者说法向量在向是一致的,或者说法向量在 y y 轴方向上的分量为负。轴方向上的分量为负。 反映到空间的情况,则说明该法线所代表的多面体的反映到空间的情况,则说明该法线所代表的多面体的外表面是背向外表面是背向 y y 轴的正方向的(背向观察者)。这样的轴的正方向的(背向观察者)。这样的面被称为面被称为“朝后面朝后面”。

14、如。如SOPSOP。8/3/2024152011-2012(2)凸面体的消隐方法凸面体的消隐方法平面体表面法向量与可见性的关系平面体表面法向量与可见性的关系 很显然,在上述的很显然,在上述的 3 3 种情况中,朝后面处在立体的种情况中,朝后面处在立体的背面,它必被朝前面所遮挡,不能为观察者所看见,所以背面,它必被朝前面所遮挡,不能为观察者所看见,所以是不可见面。是不可见面。 而朝前面只要没有其他的朝前面遮挡它的话,是可以而朝前面只要没有其他的朝前面遮挡它的话,是可以为观察者所看见的,所以可把所以的朝前面称为为观察者所看见的,所以可把所以的朝前面称为“潜在可潜在可见面见面”。 而对于第而对于第

15、2 2 种情况,因为,此时平面在投影面上的种情况,因为,此时平面在投影面上的投影积聚成一条直线,使无论把它作为可见处理还是不可投影积聚成一条直线,使无论把它作为可见处理还是不可见处理,都不会影响图像的正确性。为了简化处理过程,见处理,都不会影响图像的正确性。为了简化处理过程,也把它归入不可见面之列,作为不可见面处理。也把它归入不可见面之列,作为不可见面处理。8/3/2024162011-2012(2)凸面体的消隐方法凸面体的消隐方法平面体表面法向量与可见性的关系平面体表面法向量与可见性的关系 这样,上面所列的这样,上面所列的 3 种情况就可以归结为两类:种情况就可以归结为两类: (1) 90

16、180(cos 0),该外法线所代表的面),该外法线所代表的面为不可见面。为不可见面。 (2) 0 0),该外法线所代表的面为),该外法线所代表的面为潜在可见面。潜在可见面。 从判别式中可得,作为判断的依据,并不需要确切地从判别式中可得,作为判断的依据,并不需要确切地知道知道 角的值,而只要知道角的值,而只要知道 cos 的正负号就可以了。的正负号就可以了。8/3/2024172011-2012(2)凸面体的消隐方法凸面体的消隐方法平面体表面法向量与可见性的关系平面体表面法向量与可见性的关系 设表面外法线设表面外法线 N = Ai + Bj + Ck,那么,那么 cos = B / |N| |

17、N|表示为法向量表示为法向量 N 的模,它恒为正值,所以,的模,它恒为正值,所以, cos 的符号就可以由的符号就可以由 B 值的符号来决定。值的符号来决定。 于是,判别平面是否可见,只需求出该平面的方程系于是,判别平面是否可见,只需求出该平面的方程系数,判别其数,判别其 B 值的符号就可以了。值的符号就可以了。8/3/2024182011-2012(2)凸面体的消隐方法凸面体的消隐方法凸多面体隐线消去的方法凸多面体隐线消去的方法 凸多面体的表面是由多个平面凸多边形组成的,用任凸多面体的表面是由多个平面凸多边形组成的,用任意平面去截切该立体,所得的截面形状均为凸多边形。意平面去截切该立体,所得

18、的截面形状均为凸多边形。 所以,对于单个凸多面体来说,只要画出了立体上的所以,对于单个凸多面体来说,只要画出了立体上的全部朝前面,也就是正确地画出了消除隐藏线后的立体图全部朝前面,也就是正确地画出了消除隐藏线后的立体图形,因为在单个凸多面体上不存在朝前面之间的遮挡关系。形,因为在单个凸多面体上不存在朝前面之间的遮挡关系。 因此。利用表面外法线的方向,来判别区分出立体表因此。利用表面外法线的方向,来判别区分出立体表面中的朝前面,并画出构成朝前面的多边形的棱边,完成面中的朝前面,并画出构成朝前面的多边形的棱边,完成消除隐藏线的工作,是特别有效的。消除隐藏线的工作,是特别有效的。 8/3/20241

19、92011-2012(2)凸面体的消隐方法凸面体的消隐方法凸多面体隐线消去的方法凸多面体隐线消去的方法 其处理过程为:其处理过程为: 建立描述立体的数据表;建立描述立体的数据表; 根据要生成立体图的种类,对顶点进行矩阵变换;根据要生成立体图的种类,对顶点进行矩阵变换; 计算每个面的计算每个面的 B 值,根据值,根据 B 值的符号,判别面的可值的符号,判别面的可见性;见性; 对于可见面,则画出该多边形面的边界线段。对于可见面,则画出该多边形面的边界线段。8/3/2024202011-2012(2)凸面体的消隐方法凸面体的消隐方法凸多面体隐线消去的方法凸多面体隐线消去的方法 该方法简单易行,可以有

20、效地消去凸多面体本身的隐该方法简单易行,可以有效地消去凸多面体本身的隐藏线。但对于由多个凸多面体组成的立体群,则除了消除藏线。但对于由多个凸多面体组成的立体群,则除了消除每个立体本身的隐藏线外,还要在立体和立体之间进行比每个立体本身的隐藏线外,还要在立体和立体之间进行比较和运算,以消去由于立体之间的相互遮挡而产生的隐藏较和运算,以消去由于立体之间的相互遮挡而产生的隐藏线。线。8/3/2024212011-2012(2)凸面体的消隐方法凸面体的消隐方法任意平面体的消隐算法任意平面体的消隐算法隐藏面算法隐藏面算法8/3/2024222011-2012(2)任意平面体的消隐算法任意平面体的消隐算法

21、凸多面体消隐方法的应用范围并不大,原因在于通常凸多面体消隐方法的应用范围并不大,原因在于通常需要处理的平面体中,属于单纯凸多面体的情况并不多见,需要处理的平面体中,属于单纯凸多面体的情况并不多见,更一般的应是任意平面体,或者是由多个立体组成的群体更一般的应是任意平面体,或者是由多个立体组成的群体场景。场景。 对于这些问题,用凸多面体的简单消隐方法是不能解对于这些问题,用凸多面体的简单消隐方法是不能解决问题的,但凸多面体的消隐方法是解决问题的基础。决问题的,但凸多面体的消隐方法是解决问题的基础。 在一般任意形状的平面体中消去隐藏线的方法如下、在一般任意形状的平面体中消去隐藏线的方法如下、8/3/

22、2024232011-2012(2)任意平面体的消隐算法任意平面体的消隐算法算法思想算法思想 算法的思想是算法的思想是 逐个处理逐个处理“朝前面朝前面”。 计算出立体各表面外法线的方向值计算出立体各表面外法线的方向值 B ,根据,根据 B 值值的符号,把立体上所有的表面分为潜在可见面和不可见面的符号,把立体上所有的表面分为潜在可见面和不可见面两类。然后删去所有的不可见面,保留潜在可见面。两类。然后删去所有的不可见面,保留潜在可见面。 在保留下的潜在可见面之间进行隐藏关系的判别和在保留下的潜在可见面之间进行隐藏关系的判别和计算。这一步处理工作的对象是围成潜在可见面(多边形)计算。这一步处理工作的

23、对象是围成潜在可见面(多边形)的边框线段。要计算判别哪些线段被遮挡,遮挡在什么部的边框线段。要计算判别哪些线段被遮挡,遮挡在什么部位,逐一确定线段上的可见子段。位,逐一确定线段上的可见子段。8/3/2024242011-2012(2)任意平面体的消隐算法任意平面体的消隐算法算法思想算法思想 求出可见子段的交集,用于输出最终的可见子段,求出可见子段的交集,用于输出最终的可见子段,以组成图形。因为当其中的一个表面和线段比较后,可以以组成图形。因为当其中的一个表面和线段比较后,可以计算得出一种可见子段的分布情况。如果有多个表面均和计算得出一种可见子段的分布情况。如果有多个表面均和该线段有遮挡隐藏关系

24、,那么就可以计算得到多种可见子该线段有遮挡隐藏关系,那么就可以计算得到多种可见子段的分布情况。在这种分布情况中,只有同时都属于可见段的分布情况。在这种分布情况中,只有同时都属于可见段的子段才能最终可见。所以,当所有能遮挡该线段的表段的子段才能最终可见。所以,当所有能遮挡该线段的表面都进行比较计算后,必须求出一个可见子段的交集,用面都进行比较计算后,必须求出一个可见子段的交集,用于作为最终可见子段的输出。于作为最终可见子段的输出。8/3/2024252011-2012(2)任意平面体的消隐算法任意平面体的消隐算法算法流程算法流程 (1)根据要生成立体图的种类,对顶点进行矩阵变换。)根据要生成立体

25、图的种类,对顶点进行矩阵变换。 (2)逐个处理立体的所有表面。)逐个处理立体的所有表面。 计算表面的计算表面的 B 值。值。 B 0,则删除该面。,则删除该面。 B 0,则将组成该面的边界线段存入线段表,计,则将组成该面的边界线段存入线段表,计算平面方程系数、多边形的最小投影矩形参数及深度坐标,算平面方程系数、多边形的最小投影矩形参数及深度坐标,均存入相应的数据表,并记下地址。均存入相应的数据表,并记下地址。8/3/2024262011-2012(2)任意平面体的消隐算法任意平面体的消隐算法算法流程算法流程 (3)逐个处理线段表中的边线段。)逐个处理线段表中的边线段。 每条边线段要与所有保留下

26、来的朝前面进行比较。每条边线段要与所有保留下来的朝前面进行比较。 面不遮挡线段,则跳过。面不遮挡线段,则跳过。 面遮挡线段,则求出面边框与该线段的交点,并面遮挡线段,则求出面边框与该线段的交点,并判别记下可见段。判别记下可见段。 (4)可见段求交输出。)可见段求交输出。 对保留下的可见段求交集。对保留下的可见段求交集。 如果交集为空,则说明该线段全部被隐藏。如果交集为空,则说明该线段全部被隐藏。 如果交集不为空,则输出集中的可见段。如果交集不为空,则输出集中的可见段。8/3/2024272011-2012(2)任意平面体的消隐算法任意平面体的消隐算法曲面体的消隐方法曲面体的消隐方法 实现曲面体

27、或曲面片的隐藏线消去方法,一般可以有实现曲面体或曲面片的隐藏线消去方法,一般可以有两种途径:两种途径: 用平面去逼近曲面,这是在处理曲面问题中的经典用平面去逼近曲面,这是在处理曲面问题中的经典武器,即把曲面离散成许多小平面片,然后用平面体的消武器,即把曲面离散成许多小平面片,然后用平面体的消隐方法去实现曲面体的隐藏线消去,称之为隐方法去实现曲面体的隐藏线消去,称之为离散法离散法。 离散法通常是使用许多四边形或三角形小平面去逼近离散法通常是使用许多四边形或三角形小平面去逼近曲面,使原来的曲面被表达成由许多平面片组成的平面多曲面,使原来的曲面被表达成由许多平面片组成的平面多面体,然后用平面多面体的

28、消隐算法来实现其隐藏线的消面体,然后用平面多面体的消隐算法来实现其隐藏线的消去。去。8/3/2024282011-2012(2)任意平面体的消隐算法任意平面体的消隐算法曲面体的消隐方法曲面体的消隐方法 显然,曲面被离散得愈细,网格四边形或三边形就愈显然,曲面被离散得愈细,网格四边形或三边形就愈多,逼近曲面的精度就愈高,逼近效果就愈好,即曲面看多,逼近曲面的精度就愈高,逼近效果就愈好,即曲面看起来越光滑,但计算工作量和处理速度随之增大。一般根起来越光滑,但计算工作量和处理速度随之增大。一般根据实际需要来确定合适的逼近精度即网格多边形数目。据实际需要来确定合适的逼近精度即网格多边形数目。 对于双参

29、数曲面,是用双参数曲线组成的网格来表对于双参数曲面,是用双参数曲线组成的网格来表示的,这时只要消去双参数曲线上的不可见网格点,再求示的,这时只要消去双参数曲线上的不可见网格点,再求出曲面的轮廓线就行了。这种方法称为出曲面的轮廓线就行了。这种方法称为扫描网格法扫描网格法。8/3/2024292011-2012(2)凸面体的消隐方法凸面体的消隐方法任意平面体的消隐算法任意平面体的消隐算法隐藏面算法隐藏面算法8/3/2024302011-2012(2)隐藏面算法隐藏面算法 用线框图来表达形体,内容显得过于单调。人们一般用线框图来表达形体,内容显得过于单调。人们一般希望能得到色彩丰富和逼真的图形,这就

30、首先要从线框图希望能得到色彩丰富和逼真的图形,这就首先要从线框图发展到面图,即用不同的颜色或灰度来表示立体的各表面。发展到面图,即用不同的颜色或灰度来表示立体的各表面。于是也就引出来对隐藏面消去算法的研究。于是也就引出来对隐藏面消去算法的研究。 8/3/2024312011-2012(2)隐藏面算法隐藏面算法深度缓冲器算法深度缓冲器算法l基本思想基本思想 对于显示屏上的每一个像素点,记录下位于该像素内对于显示屏上的每一个像素点,记录下位于该像素内最靠近观察者的那个景物面的深度坐标,同时相应记录下最靠近观察者的那个景物面的深度坐标,同时相应记录下用来显示该景物的色彩,那么,所有记录下的这些像素所

31、用来显示该景物的色彩,那么,所有记录下的这些像素所对应的颜色就可以形成最后要输出的图形。对应的颜色就可以形成最后要输出的图形。 8/3/2024322011-2012(2)隐藏面算法隐藏面算法深度缓冲器算法深度缓冲器算法 为了记录下每个像素所对应的颜色和深度这两个参数,为了记录下每个像素所对应的颜色和深度这两个参数,就需要定义两个数组:一个是深度数组就需要定义两个数组:一个是深度数组depthmn;另一;另一个是颜色数组个是颜色数组colormn。这里,。这里,m 和和 n 分别表示显示屏分别表示显示屏幕上沿幕上沿 x 轴方向和沿轴方向和沿 y 方向上分布的像素数目,所以方向上分布的像素数目,

32、所以 mn即为整个显示屏上所包含的全部像素数。每个数组中存储即为整个显示屏上所包含的全部像素数。每个数组中存储的内容均以像素的坐标作为地址索引。的内容均以像素的坐标作为地址索引。 8/3/2024332011-2012(2)隐藏面算法隐藏面算法深度缓冲器算法深度缓冲器算法l算法步骤算法步骤 (1)给深度数组和颜色数组赋初值。)给深度数组和颜色数组赋初值。 即对于显示屏上的全部像素,置即对于显示屏上的全部像素,置 depthij=max(最大(最大深度),深度),colorij=bkcolor(背景色)。(背景色)。 (2)对于景物中的每个多边形平面,计算出该多边形平)对于景物中的每个多边形平面

33、,计算出该多边形平面的投影所包含的全部像素的位置,然后对所包含的全部面的投影所包含的全部像素的位置,然后对所包含的全部像素逐一做如下的两步工作:像素逐一做如下的两步工作: 计算出该多边形平面在对应于像素(计算出该多边形平面在对应于像素(i i,j j)处的深)处的深度值度值 z z。8/3/2024342011-2012(2)隐藏面算法隐藏面算法深度缓冲器算法深度缓冲器算法l算法步骤算法步骤 比较此比较此z z值和原先深度数组所记录的值值和原先深度数组所记录的值 depthij depthij 的大小。若的大小。若 z z depthij ,则说明当前该则说明当前该多边形所处的位置比原先已经记

34、录的多边形更靠近观察者,多边形所处的位置比原先已经记录的多边形更靠近观察者,所以应该用当前的所以应该用当前的 z 值去替换原先的值去替换原先的 depthij的值,即重的值,即重置置 depthij=z,然后重置然后重置 colorij 为当前多边形所表现为当前多边形所表现的颜色值。反之,则不进行替换。的颜色值。反之,则不进行替换。 依次处理完所有的多边形,则颜色数组中所存储的内依次处理完所有的多边形,则颜色数组中所存储的内容即为最终应该显示在屏幕上的图形内容,可以进行输出。容即为最终应该显示在屏幕上的图形内容,可以进行输出。8/3/2024352011-2012(2)隐藏面算法隐藏面算法深度

35、缓冲器算法深度缓冲器算法 深度缓冲器算法的主要问题是需要较大空间的存储缓深度缓冲器算法的主要问题是需要较大空间的存储缓冲区,并且随着分辨率的提高,存储量的增大是可观的。冲区,并且随着分辨率的提高,存储量的增大是可观的。 为了减少所需的存储量,可以采用分区的办法。即把原为了减少所需的存储量,可以采用分区的办法。即把原先的整幅图形细分为几个子区,这样一幅大图就分割成来先的整幅图形细分为几个子区,这样一幅大图就分割成来多幅较小的子图,然后把算法依次应用于每幅子图。多幅较小的子图,然后把算法依次应用于每幅子图。 8/3/2024362011-2012(2)隐藏面算法隐藏面算法深度缓冲器算法深度缓冲器算

36、法 采用分区的办法来实现深度缓冲器算法,可以大大减采用分区的办法来实现深度缓冲器算法,可以大大减少所需的存储量,并且对最终生成图形的质量没有影响。少所需的存储量,并且对最终生成图形的质量没有影响。如果可以考虑适当降低一些图形的质量,例如降低图形的如果可以考虑适当降低一些图形的质量,例如降低图形的分辨率,那么就可以采用分辨率,那么就可以采用“大像素大像素”的办法。例如把原先的办法。例如把原先的一个像素为单位扩大成以的一个像素为单位扩大成以 55 55 个像素为单位的大像素,个像素为单位的大像素,这就可使所需的存储量和计算工作量两者都大幅度下降,这就可使所需的存储量和计算工作量两者都大幅度下降,但

37、生成的图形将会因此而变得比较粗糙。但生成的图形将会因此而变得比较粗糙。8/3/2024372011-2012(2)隐藏面算法隐藏面算法扫描线算法扫描线算法 扫描线算法在实质上可以说是深度缓冲器算法的一种延扫描线算法在实质上可以说是深度缓冲器算法的一种延伸。假如在屏幕的分区中采取仅在伸。假如在屏幕的分区中采取仅在 y y 方向细分,而在方向细分,而在 x x 方向不分,那么,整个显示屏幕将分成许多长条的子区。方向不分,那么,整个显示屏幕将分成许多长条的子区。如果在如果在 y y 方向是以像素为单位细分,那么,这样得到的每方向是以像素为单位细分,那么,这样得到的每个子区就是一条水平线条,称之为个子

38、区就是一条水平线条,称之为“扫描线扫描线”。 扫描线算法的基本思想:扫描线算法的基本思想: 当包含一条扫描线的水平平面(称为当包含一条扫描线的水平平面(称为“扫描线平面扫描线平面”)与景物中的立体相交时,组成立体的诸表面就会与该扫描与景物中的立体相交时,组成立体的诸表面就会与该扫描线平面相交而形成若干条截交线,如图(线平面相交而形成若干条截交线,如图(a a)所示,这些截)所示,这些截交线把整条扫描线分割成一些间隔,如图(交线把整条扫描线分割成一些间隔,如图(b b)所示。)所示。8/3/2024382011-2012(2)隐藏面算法隐藏面算法扫描线算法扫描线算法8/3/2024392011-

39、2012(2)隐藏面算法隐藏面算法扫描线算法扫描线算法 在扫描线平面在扫描线平面 xoz xoz 内,按间隔比较各线段距离视点的内,按间隔比较各线段距离视点的远近,距离近的线段部分地或全部地遮挡住距离远的线段。远近,距离近的线段部分地或全部地遮挡住距离远的线段。用这样的方法确定线段的可见部分,也就是确定来立体表用这样的方法确定线段的可见部分,也就是确定来立体表面的可见部分。面的可见部分。 在扫描线上形成的间隔可以分为在扫描线上形成的间隔可以分为 3 3 类:类: (1 1)不包含任何截交线的间隔,如图()不包含任何截交线的间隔,如图(b b)中的间隔)中的间隔 1 1和和 5 5。对于这类间隔

40、,就以背景色来显示该区域。对于这类间隔,就以背景色来显示该区域。 8/3/2024402011-2012(2)隐藏面算法隐藏面算法扫描线算法扫描线算法 (2 2)其中只包含有一条线段的间隔,如图()其中只包含有一条线段的间隔,如图(b b)中的间)中的间隔隔 2 2 和和 4 4。很明显,由于位于这类间隔内的线段是唯一的,。很明显,由于位于这类间隔内的线段是唯一的,因此,必然是可见的,于是,就以线段所在表面的颜色来因此,必然是可见的,于是,就以线段所在表面的颜色来显示该区域。显示该区域。 (3 3)同时存在多条线段的间隔,如图()同时存在多条线段的间隔,如图(b b)中的间隔)中的间隔 3 3

41、。在这种情况下,需要经过计算和比较,从中找出距离视点在这种情况下,需要经过计算和比较,从中找出距离视点最近的那条线段,然后显示该线段所在的平面的颜色。最近的那条线段,然后显示该线段所在的平面的颜色。 算法从上至下地逐条处理扫描线,判别完所有扫描线平算法从上至下地逐条处理扫描线,判别完所有扫描线平面内线段的可见部分,并显示它们,则立体的隐藏面也就面内线段的可见部分,并显示它们,则立体的隐藏面也就得到了处理。得到了处理。 8/3/2024412011-2012(2)隐藏面算法隐藏面算法扫描线算法扫描线算法 综上所述,实施扫描线算法的基本步骤如下:综上所述,实施扫描线算法的基本步骤如下: 定义两个数

42、组:深度数组定义两个数组:深度数组 depthm 和颜色数组和颜色数组colorm,用以保存单条扫描线上的数据值。,用以保存单条扫描线上的数据值。 算法开始执行时,先对深度数组和颜色数组赋初值。算法开始执行时,先对深度数组和颜色数组赋初值。即置即置depthi = max;colori = bkcolor。 8/3/2024422011-2012(2)隐藏面算法隐藏面算法扫描线算法扫描线算法 综上所述,实施扫描线算法的基本步骤如下:综上所述,实施扫描线算法的基本步骤如下: 在在y方向上排序。在逐条处理扫描线的过程中,扫描方向上排序。在逐条处理扫描线的过程中,扫描线平面的位置是不断变化的。在这个

43、变化的过程中,有些线平面的位置是不断变化的。在这个变化的过程中,有些立体表面要开始进入扫描线平面,有些则要退出扫描线平立体表面要开始进入扫描线平面,有些则要退出扫描线平面,还有一些则仍然留在扫描线平面中,这是一个动态的面,还有一些则仍然留在扫描线平面中,这是一个动态的过程。所以要判别出哪些表面与当前的扫描线平面相交,过程。所以要判别出哪些表面与当前的扫描线平面相交,从而可以求出当前扫描线平面与表面的截交线段。从而可以求出当前扫描线平面与表面的截交线段。 8/3/2024432011-2012(2)隐藏面算法隐藏面算法扫描线算法扫描线算法 综上所述,实施扫描线算法的基本步骤如下:综上所述,实施扫

44、描线算法的基本步骤如下: 在在 x 方向上排序。按照落在当前扫描线平面内各线方向上排序。按照落在当前扫描线平面内各线段两端段两端 x 坐标值的大小,顺序将扫描线划分为若干个间隔。坐标值的大小,顺序将扫描线划分为若干个间隔。 按照上面所说的对不同间隔的处理办法,确定不同按照上面所说的对不同间隔的处理办法,确定不同类别的间隔所在区域的颜色值,并置入颜色数组。类别的间隔所在区域的颜色值,并置入颜色数组。 当一条扫描线处理完毕后,就把颜色数组中的内容当一条扫描线处理完毕后,就把颜色数组中的内容复制到帧缓冲器中(或直接输出到屏幕上)。然后从复制到帧缓冲器中(或直接输出到屏幕上)。然后从开开始继续处理下一

45、条扫描线。始继续处理下一条扫描线。 8/3/2024442011-2012(2)隐藏面算法隐藏面算法扫描线算法扫描线算法 扫描线算法的突出特点是把原来要处理的三维问题降扫描线算法的突出特点是把原来要处理的三维问题降级为只要处理二维问题,这就大大简化了计算和判别工作。级为只要处理二维问题,这就大大简化了计算和判别工作。但是当处在当前扫描线平面内的截交线段数量较多时,间但是当处在当前扫描线平面内的截交线段数量较多时,间隔的划分还是比较费事的。隔的划分还是比较费事的。 8/3/2024452011-2012(2)隐藏面算法隐藏面算法面积相关算法面积相关算法l基本思想基本思想 对图形显示屏幕采取递归细

46、分的办法,以产生大小不对图形显示屏幕采取递归细分的办法,以产生大小不等的窗口,使得落在该窗口内的图形变得相当简单以致于等的窗口,使得落在该窗口内的图形变得相当简单以致于能够容易地决定其显示情况。能够容易地决定其显示情况。 8/3/2024462011-2012(2)隐藏面算法隐藏面算法面积相关算法面积相关算法 当窗口内只包含有一个多边形表面或者根本就不包含任当窗口内只包含有一个多边形表面或者根本就不包含任何多边形表面的时候,那么决定该窗口内显示的颜色值是何多边形表面的时候,那么决定该窗口内显示的颜色值是相当简单的。但是当窗口内同时包含有几个相互交叉重叠相当简单的。但是当窗口内同时包含有几个相互

47、交叉重叠的多边形表面时,输出情况的决定就变得相对地复杂。的多边形表面时,输出情况的决定就变得相对地复杂。 此时,就必须对这样的窗口进行再分割,使其细分为四此时,就必须对这样的窗口进行再分割,使其细分为四个大小相等的子窗口。然后根据同样的原则判断这些子窗个大小相等的子窗口。然后根据同样的原则判断这些子窗口内的图形情况,以决定哪些子窗口内的图形可以显示,口内的图形情况,以决定哪些子窗口内的图形可以显示,哪些子窗口还必须进一步地再细分。如此不断地进行下去。哪些子窗口还必须进一步地再细分。如此不断地进行下去。 8/3/2024472011-2012(2)隐藏面算法隐藏面算法面积相关算法面积相关算法 如

48、果在某个区域内图形的情况很复杂,那么这个窗口如果在某个区域内图形的情况很复杂,那么这个窗口再分的过程会一直进行下去,窗口将越分越小。但整个过再分的过程会一直进行下去,窗口将越分越小。但整个过程总能圆满结束,因为不断再分的结果总会使得落在窗口程总能圆满结束,因为不断再分的结果总会使得落在窗口内的图形变成是简单的情况。内的图形变成是简单的情况。 极限情况是分到最后把窗口极限情况是分到最后把窗口分成只有一个像素点那么大,此分成只有一个像素点那么大,此时只要显示该像素点所包含的图时只要显示该像素点所包含的图形的颜色就行了。见图所示。形的颜色就行了。见图所示。 8/3/2024482011-2012(2

49、)隐藏面算法隐藏面算法面积相关算法面积相关算法 在算法的执行过程中,窗口和图形中多边形之间的关在算法的执行过程中,窗口和图形中多边形之间的关系可以归纳为以下三种情况:系可以归纳为以下三种情况: 窗口和多边形分离,窗口和多边形分离,如图中的如图中的a a和和b b。 窗口和多边形相交,窗口和多边形相交,指多边形部分地或全部地落入指多边形部分地或全部地落入到窗口内的一个区域,见图中的到窗口内的一个区域,见图中的c c和和d d。 窗口被多边形所包含,见图中的窗口被多边形所包含,见图中的e e。 eabc d窗口8/3/2024492011-2012(2)隐藏面算法隐藏面算法面积相关算法面积相关算法

50、 对这三种情况的处理方法如下:对这三种情况的处理方法如下: 因为多边形不会影响窗口内的图形输出情况,所以因为多边形不会影响窗口内的图形输出情况,所以可以把这种无关的多边形舍去。可以把这种无关的多边形舍去。 如果仅有一个多边形和窗口相交,或者虽有几个多如果仅有一个多边形和窗口相交,或者虽有几个多边形和窗口相交,但这几个多边形落入窗口内的部分并不边形和窗口相交,但这几个多边形落入窗口内的部分并不相互重叠;那么输出情况是容易决定的,只要在多边形占相互重叠;那么输出情况是容易决定的,只要在多边形占据的窗口内部分显示该多边形表面的颜色就行了。如果不据的窗口内部分显示该多边形表面的颜色就行了。如果不是属于

51、这种情况,则是在窗口内同时存在几个相互交叉重是属于这种情况,则是在窗口内同时存在几个相互交叉重叠的多边形,那么就要进一步细分窗口。叠的多边形,那么就要进一步细分窗口。8/3/2024502011-2012(2)隐藏面算法隐藏面算法面积相关算法面积相关算法 如果窗口被一个多边形或者是被几个多边形所包含,如果窗口被一个多边形或者是被几个多边形所包含,那么就要找出距离视点最近的那个多边形,并且要判断其那么就要找出距离视点最近的那个多边形,并且要判断其他凡是与该窗口有关(不管是相交还是包含)的多边形是他凡是与该窗口有关(不管是相交还是包含)的多边形是否全部位于该包含着窗口的多边形之后。如果是,则该窗否全部位于该包含着窗口的多边形之后。如果是,则该窗口内全部显示该多边形表面的颜色;如果不是,则要再进口内全部显示该多边形表面的颜色;如果不是,则要再进一步细分窗口。一步细分窗口。8/3/2024512011-2012(2)结束结束

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号