隐藏面和隐藏线的消除
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
顶点Vi的坐标
• 为了确定多边形的内法线方向,可以计算多边形在oxy平面 上投影的有向面积。有向面积sp可如下计算
1 L 1 sp (v1v k ) (v1v k 1 ) 2 K 2 2 1 L 1 ((x k x1 )( y k 1 y1 ) ( x k 1 x1 )( y k y1 )) 2 K 2
z( x, y) z3 [a( x x3 ) b( y y3 )]/ c
设点v j 的坐标为( x j , y j , z j ) ,若z( x j , y j ) z j ,则 v j 在多边形所在平面的前面,否则认为 v j 在多边 形所在平面的后面。
用边界盒排除不相交的线段求交。 把后向面全部去掉
非垂直投影转换成垂直投影
包围物体投影的边界盒不相交
图7.3 两个物体投影在(x,y)平面,包围投影的边界盒
包围物体投影的边界盒相交
(a) 边界盒和投影均重叠
(b) 边界盒重叠,投影不重叠
一个好的包围盒要具有两个条件:
• 包围和充分紧密 包围着形体;
V3
V2 VL
• 如果 SP 0,则F所在的面为后向面。 • 如果 SP 0,则F所在的面为前向面。
V1
顶点的排列次序,使观察者在多 面体外沿着 V1 V2 VL 走时, 多边形的内部始终在他的右侧。
非垂直投影转换成垂直投影
物体之间的遮挡关系与投影中心和投影方 向有着密切的关系,对物体的可见性判定 也和投影方式有密切的关系。 如果投影为垂直投影,则多边形在oxy平面 上的投影可由忽略了z坐标的顶点得到,从 而可大大减少计算量。
多边形不隐藏的线段
7.2多面体的隐藏线消除
确定L的可见部分的具体计算过程 : (1)确定L顶点处的与遮挡多边形的前后位置关系 ~ v ~ ~ 其坐标为 ( x , y , z ) v 设多边形的顶点为 v1 , 2 ,…, L i i i i=1,2,…,L。
~ ,v ~ , ~ ,v 任取三个不在一直线上的顶点,设为 v 4 3 5 记向量 (a, b, c) (v3v4 v3v5 ) ,则多边形E所在的平 面方程为
• 问题在于如何能预先知道它们是不相 交的,从而把它们排挤在求交计算之 外。(可用7.1中方法)
棱间交点只有五个
7.2多面体的隐藏线消除
隐藏线消除(物体用线框图表示)实际计算过程 : • 要对体一个一个来考虑,如考虑体A的显示时, step1 确定可能遮挡体A的那些体集合B (包括体A本身)。 Step2 对体A的每个多边形G,要从B中找出可能遮挡它的所 有多边形的集合C。 Step3 对多边形G的每一条边L,从集合C中找出可能遮挡它 的所有多边形E。 Step4 求L和多边形E中的边的交点,确定L的可见部分。 对Step1-3可采用边界盒方法进行处理。下面讨论对Step4 的处理技术。
• 对其的测试比较 简单。
用边界盒排除不相交的线段求交
边的边界盒
多边形的边界盒
Q1Q2的边界盒 Q5Q6的边界盒
去掉后向面
• 把内法线方向背 向视点的面称为 前向面 • 其余的面称为后 向面
IJFGH,FABG,HCDI,IDEJ所在的面为前向面 JEAF,DEABC,HGBC所在的面为后向面
• 设多边形 F 的顶点为 V1 ,V2 ,,VL 为( xi , yi , zi ) 。(次序如图所示)
隐藏面和隐藏线的消除有两种基本的算法
基于物体空间的方法
是以三维场景中的物体对象为处理单元:如 光线投射算法 对于三维场景中的每一个物体:
判定场景中的所有可见表面; 用可见表面的颜色填充相应的像素 以构成图形;
假定1:垂直投影
•下面讨论消隐算法时,都假定投影平面是 oxy平面,投影方向为负z轴方向的垂直投 影。 •如果不是这种情况,可对消隐的对象先作 变换,变成这种情况,然后再作消隐计算。
假定2:
• 本章说明的各种消隐方法都假定构成对象的不 同面不能相互贯穿; •也不能有循环遮挡的情况,如果有这种情况, 可把它们剖分成互不贯串和不循环遮挡的情况。
–例如用图中的虚线便可把原来循环遮挡的三个 平面,分割成不互相循环遮挡的四个面。
贯穿和循环遮挡
7.1可见性判断的有效技术
减少求交计算的常用技术:
7.2多面体的隐藏线消除
• 讨论隐藏线消除问题,总假定它们 是用线框方式来表示的。在这种方 式下多面体用棱来表示。
• 如果能把各棱上可见和不可见部分 的分界点找到,消隐问题也就迎刃 而解了。 • 这些分界点都是多面体的各棱在 oxy平面上投影间的交点,如图。
• 这样,问题就转化成了在oxy平面 上求很多直线的交点的计算。
第七章 隐藏面和隐藏线的消除
消隐的几个效果图
隐藏面和隐藏线的消除有两种基本的算法
基于图像空间的方法
以构成图像的每一个像素为处理单元如Z- buffer、扫描线、Warnock算法 对于图像中的每一个像素:
在和投影点到像素连线相交的表面中, 找到离观察点最近的表面; 用该表面上交点处的颜色填充该像素
7.2多面体的隐藏ห้องสมุดไป่ตู้消除
设边L的顶点是vi和vj,对边vivj和每一个可能遮挡它 的多边形E,都要作下列计算和判断,以确定其隐藏关系。 • 如果vi和vj都在多边形E所在平面靠近观察者的一侧,则E 不能遮挡直线段vivj • 如果vi和vj不都在多边形E所在平面靠 近观察者的一侧,且vivj和E在Oxy平面 的投影相交,求出其交点。保留在vivj 上的对应点在多边形E后边的交点。 • 若无交点,这时要判断vi或vj在Oxy平 面上的投影是否在E的投影的内部,若 是,则vivj就会整个被E所遮挡。
BC,BA,BG,EA为隐藏线
7.2多面体的隐藏线消除
在oxy平面上求很多直线的交点的计算。 • 如果消隐对象有N条棱,用两两求交 的方法求所有交点的工作量为 O( N 2 )。 • 实际上交点个数远小于O( N ) ,如图的 多面体有15条边,棱在oxy平面上的 投影相互间只有5个交点。
2