谈虚拟现实引擎中可见性裁减的一种解决方法.docVIP

  • 4
  • 0
  • 约3.98千字
  • 约 5页
  • 2017-08-12 发布于广西
  • 举报

谈虚拟现实引擎中可见性裁减的一种解决方法.doc

工业设计论文-谈虚拟现实引擎中可见性裁减的一种解决方法   论文关键词:可见性裁减? 扩展投影? 层次遮挡图? 层次深度图   论文摘要:可见性裁减是计算机图形学的基本问题,也是虚拟现实引擎中的一个关键技术。在解决可见性裁减问题时,将 Durand提出的扩展投影作为保守可见性预处理的算法与Greene等人提出的层次遮挡图和层次深度图的算法相结合,根据层次遮挡图来判断被遮挡物是否可见,并对算法中视点单元的大小和遮挡板的数量对裁减结果的影响作了分析。   0? 引? 言   可见性裁减就是找到从视点处可以看到的并需要进一步处理的所有物体。1974年 ,Sutherland等人? 在一份研究报告中已经对已有的隐藏面消除 HSR(Hidden Surface Remova1)算法进行了分类,在当时已经基本解决了隐藏面的消除问题。   但随着三维场景的规模和复杂度的不断增加,这些方法已经不能满足如今大规模场景中隐藏面的消除。大规模场景的绘制时,在性能上至少有三个目标:每秒有更多的帧、更高的分辨率、更多的场景物体。为加速绘制场景,首先是使用裁减(Cul1ing)技术? 。   可见性裁减大致分为三种:背面裁减、视截体裁减和遮挡裁减。视截体和背面裁减是最常用的,而且几乎是必不可少的两种裁减。遮挡裁减比较复杂,对于简单的场景可能并不需要进行遮挡裁减,但是对于大规模密集的场景来说遮挡裁减是必不可少的? 。本文中的方法主要是针对遮挡裁减。 一种改进可见性裁减的方法。   1.1 场景组织   在进行裁减之前,首先要对场景进行组织。场景的组织是个预处理过程。这里采用二叉包围盒树来组织场景,利用两步来递归建立二叉树:(1)建立一组对象的紧密包围盒;(2)把这组对象细分为两组,然后对两组建立紧密包围盒。这个递归过程将场景图元细化成最小的组。场景对象的包围盒采用方向包围盒(OBB),在对象进行遮挡测试时,投影就会更接近对象本身的大小。图 1为实验场景的包围盒。      1.2 可见性裁减算法   1.2.1 视截体裁减   在进行裁减时,首先进行视截体的裁减。判断场景中的对象是否在视截体中,也就是判断包围盒是否在视截体中。包围盒与一个平面的位置关系可以有三种:在平面正面,在平面反面,与平面相交,如图2所示。      如果包围盒在视截体平面的反面则包围盒是不可见的,将不会被渲染;如图包围盒在所有平面的正面,则包围盒是可见的。要判断包围盒是否在平面的正面最直接的方法就是判断包围盒上的每个顶点是否都在平面的正面,同样计算量也是相当巨大的,在这里采用包围盒的中心点与平面的距离来判断包围盒的位置。   1.2.2 遮挡 裁减   (1)选择遮挡板   经过视截体裁减,在剩余的对象中选择一组对象作为遮挡板。选择遮挡板是至关重要的,应该选择那些形状比较大的,距离视点单元较近的对象作为遮挡板,才可能生成较好的遮挡效果,我们根据公式(1)来选择遮挡板? 。      (2)遮挡板和被遮挡物的扩展投影   所谓扩展投影就是将基于点的投影扩展到基于空间区域的投影。算法中的遮挡板和被遮挡物的扩展投影是根据 Durand等人提出的扩展投影作保守可见性预处理算法? 中的定义:遮挡板的扩展投影被定义为视点单元上每个顶点处产生投影的交集;而被遮挡物的扩展投影被定义为视点单元上每个顶点处产生投影的并集。通过扩展投影可以在视点单元内部任一点处观察,被遮挡物的扩展投影都能完全在遮挡板的扩展投影中。   (3)层次遮挡图和层次深度图   计算完遮挡板的扩展投影,将其渲染到帧缓冲区中,生成遮挡图。如图3所示,遮挡图只需要占用信息,不需要纹理和光照信息。因此我们将遮挡板渲染成纯白色,背景为黑色。而遮挡图的层次可以通过对前一层的像素累加平均的方法来获得? 。      通过深度估计缓冲器来生成遮挡板的深度图,它的每个像素记录着对应区域中遮挡板的最大值。如图4所示,每一层中的像素对应着上一层中2×2像素块中的最大值。      (4)重叠测试和深度测试   在重叠测试中,采用一种快速的测试方法,取层次遮挡图中与被遮挡物投影大小接近的矩形,检测矩形所覆盖的遮挡图上的像素是否完全不透明,如图5所示。      图5中矩形 A所占的区域是完全不透明的,那么矩形 A通过了重叠测试。而左图中矩形 B所占的区域是半透明的,将其与下层的遮挡图进行比较,得到右图,可知矩形 B所对应的遮挡图上的像素是完全透明的,则 B是可见的。   当潜在被遮挡物通过了重叠测试,那么接下来进行深度测试。在深度测试中采用与重叠测试类似的方法。将被遮挡物的深度值与最高层上的深度值进行比较,如果被遮挡物的深度值大,则其通过了深度测试,否则将其与下一层深度图进行比较。完成了重叠测试和深度测试 ,就可以根据潜在被遮挡物的

文档评论(0)

1亿VIP精品文档

相关文档