如何知道粒子系统的哪些粒子在截锥体中

时间:2012-01-16 11:59:08

标签: collision-detection three.js frustum particle-system

我正在使用Three.js和webGLrender来展示一个带座椅(80k颗粒)的曲棍球体育场,我希望能够在每个座位上进行挑选。我试图创建一个隐藏的对象来使用光线拦截但是80k对象都变得太慢了。所以我认为最好的方法只是在变焦足够接近时才创建对象,只显示一组座位。问题是我不太清楚如何检测粒子系统的哪些粒子(顶点)落在平截头体内。

任何想法或样品?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我并不特别了解three.js,但看看视锥体剔除,这个链接详细解释了它是如何完成的:

http://www.lighthouse3d.com/tutorials/view-frustum-culling/

最快和最不准确的方法可能是计算每个座位的重心,然后进行点包含测试以确定座位是否应该考虑采摘。更复杂的方法可能涉及为每个座位预先计算边界立方体/球体,并对其进行包含测试。

另一种方法可能是使用空间索引数据结构来降低查找成本,例如八叉树。