39_2012三维图形学_平面物体的线框与表面模型显示(1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)用斜边排序代替交点的排
序;填充前排序;填充过程中出 现新激活斜边,也要动态排序。
叠加分量
结束条件
(4)利用成对交点画直线。
2020/12/12
消隐线、消隐面算法
10
一. Z缓冲器算法(主要用硬件方法实现)
原理:记录显示器屏幕中每个像素点的颜色与该点 的相对深度,当填充的新点的深度比原点的深度浅时, 就用新点的颜色替代原点的颜色并用新点的深度替代 原点的深度。当所有的三维多边形(或点、线)等绘 制完毕之后,就自然达到了显示可见多边形,消除其 隐藏线、隐藏面的目的。
投影直线P1P2位于 投影多边形之后
2020/12/12
消隐线、消隐面算法
6
④除此之外,还要找出该条投影直线被其他投影
多边形遮挡所形成的隐藏线。
下图为直线P1P2被两个有界平面遮挡后,形成的 隐藏线。利用一维线段的布尔运算求不可见子线段
的“并”集。
P1
P2
2020/12/12
消隐线、消隐面算法
7
2020/12/12
隐藏面消除算法,它不光要画出物体的各可见棱边, 而且还要求填充多面体中各有界平面的颜色与亮度。
无透明表面,可先删除物体的背面,以加快显示处 理速度。
三维多边形显示的复杂性
2020/12/12
消隐线、消隐面算法
9
复习单个二维多边形填充的基本知识
(1)计算多边形各斜边与扫描线(即填充线)的交点,
补充规则,使其交点一定成对出现。
显然,位于投影平面之前的部分投影直线不可能被遮 挡,而位于投影平面之后的部分投影直线可能被遮挡;
2020/12/12
消隐线、消隐面算法
5
③对于位于投影平面之后的部分投影直线,要判断它 究竟有哪些部分被投影多边形遮挡(即投影直线的哪些 部位被投影多边形包含)这才能找出一条投影直线中被 投影平面遮挡的隐藏线。
顶点 P3
多边形斜边
2020/12/12
P1P2
上交点的递推与扫描线填充点的递推关系示意图
消隐线、消隐面算法
13
注:新点的深度比旧点的浅,
才置换新点的深度与颜色 高度值
…
各扫描线与高度
Ymax为 30
30
B多边形
数组索
引 20
…
…
20
16
A多边形
9
16 …
指针 9
数组
…
2
表头指针
活动边表的动 态变化情况
投影平面又称观察平面
2020/12/12
消隐线、消隐面算法
3
第三步,考虑投影直线与投影多边形之间的遮挡关系。 ①即投影多边形与投影直线是否发生重叠:不重叠, 则不可能发生遮挡;
2020/12/12
消隐线、消隐面算法
4
②若重叠,还要判断投影直线与投影多边形的前后关 系,此时要把投影直线分成位于投影平面之前、之后的 两部分投影直线;
(2)交点从上到下、从左到右排序。
(3)利用成对交点之间的连线填充多边形的内部区域,
处理完所有的交点即完成填充多边形。
复习改进方法(多边形的Y-X填充算法)
(1)用记录斜边代替记录斜边上的各交点,其存储空
间小、排序快;再根据填充要求,同步递推斜边上的各
交点,以满足多边形的填充要求。
初始条件
(2)递推交点的斜边称激活斜边
2020/12/12
COS(β)≤0,平面π不可见
消隐线、消隐面算法
Note: backface culling alone doesn’t solve the
hidden-surface and hidden-line problem!
2
第二步,根据投影条件,把三维多边形与三维直线往 规格化三维齐次坐标系上投影,形成多个投影直线与 投影多边形。
斜边结点数据格式等见教材内容
简记斜 边结点 初始边表示意图
2020/12/12
消隐线、消隐初面算始法 边表与活动边表的动态变14 化
扫描线深度缓存算法的初始边表与活动边表的功能描述
(即按ymax从大到小排 序);然后对ymax相同的各斜边,从左到右排序,这一排序结果用初始 边表记录。而活动边表(初始值为空)记录在多边形的填充过程中的激活 斜边(即递推交点的斜边),且其斜边按多边形编号排序以及斜边从左到
§8.4 平面物体线框模型的真实感图形输出 显示——隐藏线的消除
非重点内容
隐藏线:是指在物体的投影过程中,在投影平面 上,物体的边线被其它平面遮挡不能被观察者看见, 从而形成了隐藏线。
意 义:消除隐藏线的显示,能消除物体图形显 示的多义性。
或
立体图形显示的二义性示意图
2020/12/12
消隐线、消隐面算法
生成的结果又称三维图像
2020/12/12
消隐线、消隐面算法
11
二.扫描线深度缓存算法(主要用软件方法实现)
①只记录当前扫描线上各 点的深度(称扫描线深度缓 存); ②在一条扫描线上, 计算并填充各多边形的填 充线,仅当填充线上各新 点的深度比扫描线深度缓 存中旧点的深度浅,才置 换新象素值与新深度值;
2020/12/12
消隐线、消隐面算法
12
多边形的编号 奇数斜边
顶点P1(x1 ,ymax,z1) 偶数斜边
斜边交点(xy ,y,zy) 递推交点(xy+⊿xy,y -1,源自文库y+⊿zy)
y 当前扫描线的高度
顶点P2( x2 ,ymin,z2)
⊿ xy 填充点( xx ,y - 1 ,zx )
水平递推填充点 (xx+1 ,y-1,zx+⊿zx)
第四步:一条直线 段,在被剔除了所有 的隐藏线段之后,它 剩余的投影直线段才 是可见的投影直线, 只有经过这样处理后, 才能形成经过消隐处 理后的正确图形。
消隐线的处理过程 复杂、费时,需动态 管理图形的模型数据, OpenGL不支持该功能。
消隐线、消隐面算法
8
§8.5 平面物体表面模型的真实感图形输出显 示——隐藏面的消除(1)
1
隐藏线消除算法的基本原理(找隐藏线) 右手坐标系中有数个待显示的多面体,架设相机后, 第一步,先剔除各多面体中背向照相机的有界平面与 它对应的各边线(见下图);后把数个多面体中剩余 各有界平面与它对应的各边线,从其相应物体的数据 结构中分离出来,在删除重复的边线之后,组成了待 显示处理的有效多边形集(遮挡边线)与有效边线集。
③之后刷新扫描线深度缓 存数组(置最大z值),以便 计算下一行扫描线上对应 的所有图形。
i i+1
该算法的基本原则 ①类似二维多边形的Y-X填充算 法,但要递推各填充点的深度; ②斜边交点递推计算,且与填充 次序保持同步;各点深度要递推 ③填充前斜边从上到下排序 ④填充中斜边先按多边形编号排 序,同编号斜边再从左到右排序 ⑤成对交点画直线完成填充任务