一、概述
由于投影变换失去了深度信息,往往导致图形的二义性。要消除二义性,就必须在绘制时消除被遮挡的不可见的线或面,习惯上称作消除隐藏线和隐藏面(或可见线判定、可见面判定),或简称为消隐。经过消隐得到的投影图称为物体的真实感图形。
下面这个图就很好体现了这种二义性。
消隐后的效果图:
消隐算法的分类
所有隐藏面消隐算法必须确定:
在沿透视投影的投影中心或沿平行投影的投影方向看过去哪些边或面是可见的
两种基本算法
1、以构成图像的每一个像素为处理单元,对场景中的所有表面,确定相对于观察点是可见的表面,用该表面的颜色填充该像素.
适于面消隐。
算法步骤:
a.在和投影点到像素连线相交的表面中,找到离观察点最近的表面;
b.用该表面上交点处的颜色填充该像素;
2、以三维场景中的物体对象为处理单元,在所有对象之间进行比较,除去完全不可见的物体和物体上不可见的部分.适于面消隐也适于线消隐。
算法步骤:
a.判定场景中的所有可见表面;
b.用可见表面的颜色填充相应的像素以构成图形;
提醒注意
1.假定构成物体的面不能相互贯穿,也不能有循环遮挡的情况。
2.假定投影平面是oxy平面,投影方向为z轴的负方向。
如果构成物体的面不满足该假定,可以把它们剖分成互不贯穿和不循环遮挡的情况。
例如,用图b中的虚线便可把原来循环遮挡的三个平面,分割成不存在循环遮挡的四个面。
二、可见面判断的有效技术
1、边界盒
指能够包含该物体的一个几何形状(如矩形/圆/长方体等),该形状有较简单的边界。
边界盒技术用于判断两条直线是否相交。
进一步简化判断
2、后向面消除(Back-face Removal)
思路:把显然不可见的面去掉,减少消隐过程中的直线求交数目