您如何修改BSP遍历算法以将视点和视图方向作为参数而不修改树?

问题描述 投票:0回答:1

所以我最近一直在研究图形,并且一直在研究BSP算法。 BSP算法仅考虑视点,而忽略了摄像头注视的方向。考虑视图方向的一种方法是在插入任何其他多边形之前,将图像平面(视锥的“近”平面)插入树中。然后,仅遍历前(即左)子树。但是,如果视点在移动,这将不是有效的,因为每当眼睛移动时,都必须重新构建BSP树。

您如何修改BSP遍历算法以将视点和视图方向作为参数,而无需修改树?我一直在尝试想出一种有趣的算法来做到这一点,但我做不到。

graphics 3d
1个回答
0
投票

BSP(二进制空间分区)是静态数据结构。最初,最普遍地,它用于射线投射。每个节点通过一个平面将空间一分为二。左边的孩子在飞机的左边,右边的孩子在右边。

一旦构建了BSP,它就可以有效地回答任何射线查询。射线是位置加方向。然后按顺序返回与射线相交的事物列表。也就是说,第一个交叉点将是最近的一个。

查询是一个两步过程:首先将树与射线原点一起向下遍历,直到到达叶子为止。然后,使用方向向上移动树。如果方向与分割平面相交,请在相交处计算新射线并检查两侧。否则,您可以丢弃大量测试。

通常,永远不会(或很少)重建BSP。您可以轻松地将其扩展为平截头体查询,而不是射线查询。

© www.soinside.com 2019 - 2024. All rights reserved.