我开始在Python中为Blender开发这个粒子引擎:http://www.youtube.com/watch?v=uoK4QV3jg58&feature=channel_video_title
所有数据都由我的脚本处理,Blender只是用于视觉。我现在的问题是,在上面的视频中,我计算了每个粒子之间的距离,以便所有粒子检测它们是否相互碰撞。
我开始读到:
Kdtree似乎非常有效地搜索最近的邻居,但仅用于静态云。我的粒子总是移动,因此必须在每次迭代时重新生成kdTree,我认为消耗了太多的过程。我看过许多游戏都使用AABB树。我有点失落......我不知道该选择什么。我想要的是:
如果有人能告诉我什么是最好的猜测,我可以在哪里找到Python文档和示例。
答案 0 :(得分:0)
如果“一切都是动态的”,那么您将失去快速查找和慢插入的数据结构的好处。
理想情况下,您可以在数据中找到一些结构以简化运行时间。也许移动的多边形都朝着相同的方向移动,因此您可以将它们用作参照系,从而有效地使它们成为静态。也许运动很小,因此数据结构可以就地更新,而不是在每次通过时从头开始重建。或者粒子和多边形的运动局限于小邻域,因此计算上难以处理的大问题可以减少到更小的问题。
说“没有任何附加约束”的“一切都在移动”类似于说从迭代到迭代的数据是完全随机的;因此,您的问题的关键是确定前一次迭代中的任何计算是否可重用。这将决定适当的数据结构和算法。