我開始在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集成到許多遊戲或應用程序中,從而可以提高我的腳本的性能。我有點困惑。 –