文章目录
-
- 基本概念
- 提高消隐算法效率的常见方法
-
- 利用连贯性
- 包围盒技术
- 背面剔除
- 空间分割技术
- 物体分层表示
- 消隐的分类
-
- 按消隐对象和输出结果分类
- 根据消隐空间分类
- 消除隐藏线
- 消除隐藏面
基本概念
投影变换失去了深度信息,往往导致图形的二义性
- 消隐:为了消除二义性,必须在绘制时消除被遮挡的不可见的线或面,习惯上称作消除隐藏线和隐藏面;
- 经过消隐得到的投影图称为物体的真实图形
- 消隐结果与观察物体有关,也与视点有关
背面剔除
- 外法向:规定每个多边形的外法向都是指向物体外部的。
- 前向面:若多边形的外法向与投影方向(观察方向)的夹角为钝角(V· N
- 后向面:若多边形的外法向与投影方向(观察方向)的夹角为锐角(V· N>0),称为后向面(背面)。
后向面总是看不见的,不会由于后向面的遮挡,而使别的棱成为不可见的。因此计算时,可以把这些后向面全部去掉,这并不影响消隐结果
消隐的分类
按消隐对象和输出结果分类
- 线消隐:消除的是物体上不可见的边。
- 面消隐:消除的是物体上不可见的面。
图像空间的消隐算法:以窗口内的每个像素为处理单元;
for(窗口内的每一个像素)
{确定距视点最近的物体,以该物体表面的颜色来显示像素}

消除隐藏线
坐标变换:通过坐标变换,将视点变换到Z轴的正无穷大处,视线方向变为Z轴的负方向
最基本的运算:线消隐中,判断面对线的遮挡关系:体分解成面,再判断面与线关系。判断过程中需反复地进行线线、线面之间的求交运算。
平面对直线段的遮挡判断算法
- 若线段的两端点及视点在给定平面的同侧,线段不被给定平面遮挡,转(7);
- 若线段的投影与平面投影的包围盒无交,线段不被给定平面遮挡,转(7);
- 求直线与相应无穷平面的交:
- 无交点转(4);
- 若交点在线段内部,交点将线段分成两段,与视点同侧一段不被遮挡,另一段在视点异侧转(4);
- 若交点在线段外部,转(4)。
- 求所剩线段的投影与平面边界投影的所有交点。若无交点,转(7)。
- 以上所求得的各交点将线段的投影分成若干段,求出第一段中点。
- 若第一段中点在平面的投影内,则相应的段被遮挡,否则不被遮挡;其他段的遮挡关系可依次交替取值进行判断。
- 结束。
基本数据结构
面表(存放参与消隐的面) +线表(存放待显示的线)
消除隐藏面
- 画家算法
- Z缓冲算法
- 扫面线Z缓冲算法
- 区间扫面线算法
- 区域子分割(Warnack)算法
- 光线投射算法
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览35213 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!