计算机图形学(消隐)

一、概念
决定场景中哪些物体的表面是可见的,哪些是被遮挡不见的。为获取真实感图形,将隐藏线消除的过程称为消隐,未经消隐的图形,可能存在二义性。

二、消隐算法分类
按消隐对象分类:
(1)隐藏线消隐:消隐的对象是物体上不可见的线,消隐后输出线框图
(2)隐藏面消隐:消隐的对象是物体上不可见的面,消隐后输出表面图
按消隐空间分类:
(1)对象空间消隐:消隐算法在物体所在的三维空间中进行,此时消隐算法将三维场景中的每个面与其余每个面进行比较,确定点、边、面的遮挡关系
(2)图像空间消隐:消隐算法在屏幕空间中进行,此时消隐算法对屏幕中每个像素,判断哪个表面该像素点可见

三、消隐基本原则
(1)排序
排序的目的主要是判别消隐对象的体、面、边、点与观察点几何距离的远近,确定遮挡关系,在xyz轴上分别排序,通常以z轴为先。
(2)连贯性
连贯性指从一个事物到另一个事物,其属性值(如颜色值、空间位置)一般是平缓过渡的。
在这里插入图片描述
在这里插入图片描述
(3)常用假设
投影平面是oxy平面;投影方向为负z轴方向的平行投影,z值越大,离视点越近(右手系坐标系);没有相互贯穿或循环遮挡的物体。

四、常用消隐算法
1.面剔除:适用于物体自身的遮挡
欧拉定理:如果多面体在它们每一个面所决定的平面的同一侧,则称此多面体为凸多面体,一个凸多面体的表面可连续地变形为一个球面,称之为简单多面体,简单多面体满足如下关系式:
V - E + F = 2
凸多面体特性:
在投影关系上,要么完全可见,要么完全不可见;各朝向面均不发生相互重叠现象。
根据这个性质,进行消隐时,画出朝前的可见面,消隐朝后的不可见面。通过给出表面的法向量来判断超前面和超后面。形体表面的法向量称为外法向量和内法向量,形体表面(外)法向量是由形体内部指向外部,或由形体表面指向外部空间,通常用外法向量比较表面的可见性。根据表面外法向以及给定视点位置确定的视线向量可以判断出当前表面的可见性,当视线向量与表面外法向量夹角小于90度时,表面可见,当视线向量与表面外法向量夹角大于90度时,表面不可见。
在这里插入图片描述
实际应用中,为简化表面可见性的判断,通常定义视线矢量平行于某一基本坐标轴。当视线矢量vi平行于某一基本坐标轴时,平面的外法矢量n{A,B,C}与视线矢量的夹角就是外法矢量n与某一基本坐标轴的夹角。分别用在这里插入图片描述
表示视线矢量平行于X,Y,Z轴时平面的外法矢量n{A,B,C}与坐标轴的夹角。
如果当前视线矢量平行于z坐标轴,则表面外法矢量与z轴之间的夹角余弦值为:
在这里插入图片描述
此时该平面的可见性由该平面外法矢量n在z轴的方向分量C的符号所决定。
平面外法矢量的计算方法:
在这里插入图片描述
总结面剔除算法:
在这里插入图片描述
2.z-buffer消隐(深度缓冲区消隐算法):适用于物体之间的遮挡,用于消除不可见的面,通常输出表面图
算法中要用到两个缓冲器,分别为帧缓冲器和深度缓冲器,两个缓冲器的大小都至少定义为屏幕的大小,帧缓冲器的每个单元与屏幕像素一一对应.帧缓冲器又称属性数组FB(x,y),每个单元存放对应像素的属性值(主要是颜色信息),深度缓冲器又称深度数组ZB(x,y)或称z缓冲器,每个单元存放对应像素的深度值.
设计思想:假设三维直角坐标系中每个点的坐标为(x,y,z),视点设在z坐标轴正向无穷远处,点的z坐标又称为该点的深度坐标,体现了空间中点与视点的距离.算法中z缓冲器中各单元的初始值置为最小值,表示离视点最远.当要改变平面某个像素的颜色值时,先检查当前扫描转换的多边形上对应点的深度值是否大于该像素点原来对应的像素值,深度值保存在该像素点对应的z缓冲器的相应单元中,如果当前深度值大于原来的z值,说明当前多边形更靠近观察点,则用它的颜色值替换像素点原来的颜色值,如下图:
在这里插入图片描述
在这里插入图片描述
注意:z(x,y)表示点(x,y)的深度值,是一个值不是坐标.
深度缓冲区算法是当前应用广泛的一个消隐算法,该算法已被固化在硬件中实现.深度缓冲区算法思想简单,易于处理复杂场景,无需排序,复杂度与屏幕分辨率相关,易于硬件实现.但是该算法中需要有一个较大容量的z缓冲区,消耗的存储单元太多,而且,该算法有它的局限性,无法处理透明物体间的遮挡关系.

3.画家消隐:适用于物体之间的遮挡,消除隐藏面,输出表面图
在物体空间中确定物体之间的可见性顺序(即物体离视点远近),由远及近地绘制出正确地结果.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值