空间划分及可见性算法【三】

本文介绍了室外场景管理中常用的BHV(包围体层次结构)和八叉树,强调了它们在面对3D坐标系特性时的优势。同时,探讨了遮掩剔除(OC)技术,包括其适用场景、操作步骤,并提出了离线选择遮掩物以提高运行效率的方法。文章最后提到,这些技术通常与BSP、Portal等结合使用,以实现更高的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面讨论的BSP和Portal大多数情况会被用于室内场景的管理,更确切的说是在充满分割面的场景中。在室外场景管理中一般会用到BHV(包围体层次结构)或八叉树(num_division = 2的一种特殊的BHV)。

 

关于如何创建BHV及如何遍历BHV树利用视椎体进行剔除就不在赘述了。但需要认识到以下几点:

<1>BHV树也是需要离线创建的。

<2>层数的限制很自由,至少有以下选择:

      (1)在节点的大小达到特定值时;

      (2)在达到特定层数时;

      (3)在每个节点包含的多边形的数目达到特定值时;

 

<3>8叉树比较常用,是因为它能很好的模拟3D坐标系有8个象限组成的特性。

 

最后,让我们来探讨一下OC(遮掩剔除):

      在实际应用中,有时候不想使用有关可见性的静态解决方案,因为游戏世界可能频繁变换,PVS、BSP、BHV都不适合。

      可喜的是,我们发现在游戏中经常会有一些很大的物体,它们会遮掩大部分场景,这就为OC提供了可能性。

      OC技术的步骤如下:

<1>遍历完全位于视椎体内的且可见的所有的物体,选择n个最近、最大的物体。

<2>将物体投影到屏幕空间,并计算投影区域的面积。从中选择m个投影面积较大的物体,然后计算每个遮掩物的内接矩形。

<3>将遮掩矩形加入到遮掩体中,然后根据遮掩体对所有多边形和物体进行检测,剔除所有被遮掩的物体。

 

下面是使用OC需要注意的几点:

<1>可以离线选择一部分遮掩物,在运行阶段根据潜在的遮掩物进行选择,速度会很快。

<2>一般结合BSP、Portal、8叉树等场景管理,才能使效率很高。

 

 

到此为止,关于空间划分和可见性算法基本介绍完毕。后面会结合具体引擎,关于该专题进行深入分析,并对以前留下的问题进行阐述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值