专题栏目:ARVRMR虚拟现实

实时消隐 | 实时消隐是什么意思?

定义:实时消隐是一种快速确定并剔除不可见物体,在后续绘制处理中就不用考虑那些不可见物体,从而大大提高绘制速度的技术,最有代表性的算法是层次Z缓存器算法。

在众多消隐算法中,Z缓存器算法是唯一具有线性计算复杂度的消隐算法。目前,Z缓存器算法可以通过图形硬件来实现,成为应用最为广泛的图形消隐算法。传统的Z缓存器算法是将视域内的景物面片在屏幕上投影区域所覆盖的像素逐一进行深度比较,当场景比较复杂而且遮挡率比较高时(例如,在虚拟城市进行漫游时,绝大多数面片是不可见的),就没有必要对这些面片进行逐个消隐。一个高效的消隐算法应该能根据当前视点位置快速剔除不可见面片。基于这样的想法, Green等提出了层次Z缓存器算法。

层次Z缓存器算法对传统Z缓存器算法进行了改进,将屏幕像素的可见点按其深度值组织成层次包围盒四叉树,简称屏幕包围盒树。该层次包围盒按从下至上的方式构造,叶节点是由单个像素窗口和该像素的可见点定义,合并相邻四个像素可见点的包围盒作为上一层节点的包围盒。上述过程递归进行,直至树的顶层。树的根节点即为整个屏幕可见点集合的包围盒。判断一表面的可见性时,使用该表面包围盒与屏幕包围盒求交测试。若表面包围盒与树中的某一节点的包围盒相交,则继续与该节点的子节点进行求交测试,直到某一层不与所有子节点相交为止。如果此时还没有到达叶节点,那么该面片为不可见,否则按照传统Z缓存器算法绘制。

为进一步提高测试效率,该算法将场景中的景物组织成八叉树结构,并利用景物的空间连贯性来考察每一八叉树节点的可见性。若八叉树节点对应的立方体的六个表面关于当前缓冲器不可见,则立方体上任何景物均不可见,否则,重复迭代其子节点。若为可见叶节点,则该节点内所有景物需逐一绘制。

发表评论

相关文章