如何从后到前遍历BSP树

How to traverse a BSP tree back to front

本文关键字:遍历 BSP      更新时间:2023-10-16

嗨,我正在写一个Quake关卡渲染器。我已经到了需要考虑透明度的地步了。我知道二进制空间分区器(BSP)树的格式化方式是数据按距离排序,或者至少我听说过这样,但我不知道如何实现这一点。我建立了我的BSP树,并解码了我的PVS。

我:1. 找出我在哪个叶子上。例如:6。2. 渲染从最大到叶子6,假定这些叶子在我的视锥体和pv中。3.从最小渲染到第6叶,再次考虑到pv和截锥体。

这不是BSP树的工作方式吗?

这就是问题1。第二个问题是关于pv的。我知道在过去,当空间是一个问题时,pv很棒,因为它是压缩的。我现在的方式是,我不会在每次渲染一帧时都解压pv,我只做一次,并将叶子的可见性存储在渲染过程中遍历的向量中。这样做有意义吗?还是会适得其反?

所以再次回顾一下,我可以假设一个BSP树的结构使得叶子已经按距离排序,并且在叶子6(总共9个叶子),我应该渲染9,8,7,6,1,2,3,4,5(假设所有9都在叶子6的pv中可见),再考虑到pv和截体。

谢谢。

要从后到前渲染,我建议首先遍历/递归相机所在的节点(近节点)。完成后,将遍历远节点。