我开始在Python这个粒子引擎工作的搅拌机:http://www.youtube.com/watch?v=uoK4QV3jg58&feature=channel_video_title的Python:最佳颗粒自碰撞/三角形碰撞算法
所有数据都由我的脚本处理,搅拌机就在那里为视觉。我现在的问题是,在上面的视频中,我计算了每个粒子之间所有粒子之间的距离,以检测它们是否相互碰撞。
我开始阅读:
- 八叉树
- kdTree
- BVHTree
- AABBtree
- ...等等
Kdtree似乎是搜索最近的邻居非常高效,但仅适用于静态云。我的粒子总是移动,所以每次迭代必须重新生成kdTree,我认为这消耗了太多的过程。我读了很多游戏使用AABB树。我有点失落......我不知道该选什么。我要的是:
- 碰撞检测量非常大颗粒(250 000或以上)
- 无需之间是实时的(反正有250个000颗粒它不是真的有可能)。对于200万个粒子,每帧20分钟对我来说不是问题。
- 我颗粒总是球体
- 检测粒子和多边形物体 之间的碰撞
- 算法来减少必要的(避免像计算所有粒子相互颗粒或多边形,即使他们离我很远的东西)距离计算
- 我的粒子是动态的,我的多边形对象可以是动态的或静态的。
如果有人能告诉我什么是最好的猜测,我可以在哪里找到Python文档和示例。
我的脚本是一个verlet集成。我在每次迭代中都有当前和前一帧。我不是一个非常有经验的编码员,我从来没有为此做过研究,但是我创造了我自己的“蹩脚的算法”,并且我的速度有了很大提高。从那以后,我正在考虑将许多人使用的“真正的”algorythm集成到许多游戏或应用程序中,从而可以提高我的脚本的性能。我有点困惑。 –