我如何为我的相机的平截头体构造飞机?

我试图去处理截锥体,但是我还没有完成。

相机Fr

我在三维空间有一个相机

Camera position (cx, cy, cz) rotation (tx, ty, tz) fieldofview near-plane far-plane 

和一个包含我的大块地形的四叉

 Quadtree Chunk bottomleft (x, y) width length heightmap 

目前,我正在渲染四叉树内的每个块。 不过,我想剔除相机平截头体六个平面以外的所有块。

我不确定如何:

  1. 根据相机类中的信息生成这些平面。
  2. 使用我的四叉树高效地testing相交。 如果四叉树的一个区域出现故障,请尽其所有的孩子(这似乎是合理的,我只是想确定)? 通过四叉树进行剔除的过程是什么?
  3. 使用飞机和我的地形块进行路口testing。 如何快速判断一个地形(y值不同的方形)是否位于6个摄像机平面内?

Solutions Collecting From Web of "我如何为我的相机的平截头体构造飞机?"

视野和长宽比定义了多less平截头的飞机发散,所以一个小math应该让你定义视口的四架飞机…但是然后你坚持飞机/飞机相交testing

一种方法是使用你的相机和投影matrix的逆来将视口的角落投影到环境中一些定义的距离…math与用于处理3D对象的鼠标拾取相同…将告诉你平截头体飞机的范围。 使用相同的math,以一个​​非常短的(零)距离来获得范围内的接近,然后使用较大的边使矩形平面扩展得更小。

既然你只使用四叉树(对于我认为的地形),最好使用相机matrix将叶子的交叉点投影到视口空间,然后testing它们是否可见…如果你得到点击,然后在给定点周围的四片叶子是可见的,你可以开始向上/向下钻find相邻的部分,也是有可见的角落…开始与你是/上面的叶子4点和从那里工作。