前面讨论的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叉树等场景管理,才能使效率很高。
到此为止,关于空间划分和可见性算法基本介绍完毕。后面会结合具体引擎,关于该专题进行深入分析,并对以前留下的问题进行阐述。
今天的文章空间划分及可见性算法【三】分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/60077.html