私はPythonでBlender用のこのパーティクルエンジンに取り組み始めています:http ://www.youtube.com/watch?v = uoK4QV3jg58&feature = channel_video_title
すべてのデータは私のスクリプトによって処理されます。Blenderはビジュアルのためだけにあります。今のところ、私の問題は、上のビデオで、すべてのパーティクルの各パーティクル間の距離を計算して、それらが互いに衝突しているかどうかを検出することです。
私はについて読み始めています:
- 八分木
- kdTree
- BVHTree
- AABBtree
- ...などなど
Kdtreeは、最も近いネイバーを検索するのに非常に効率的であるように見えますが、静的クラウドのみを検索します。私のパーティクルは常に移動するため、反復ごとにkdTreeを再生成する必要があり、多くのプロセスを消費すると思います。私は多くのゲームがAABBツリーを使用していることを読みました。少し迷ってしまいました…何を選べばいいのかわかりません。私が欲しいのは:
- 非常に大量の粒子(25万以上)間の衝突を検出します
- リアルタイムである必要はありません(とにかく250000個のパーティクルでは実際には不可能です)。200万個のパーティクルに対してフレームあたり20分は私にとって問題ではありません。
- 私の粒子は常に球です
- パーティクルとポリゴンオブジェクト間の衝突を検出します
- 必要な距離計算を減らすためのアルゴリズム(遠くにある場合でも、互いにすべてのパーティクルまたはポリゴンを計算するなどの回避)
- パーティクルは動的であり、ポリゴンオブジェクトは動的または静的にすることができます。
誰かが私に最良の推測が何であるか、そして私がPythonのドキュメントとその例をどこで見つけることができるかを教えてくれるなら。