これが私の問題です。私はゲームを作成していますが、衝突を行う方法について疑問に思っています。分析して最適な解決策を見つける必要があるケースがいくつかあります。
前もって言っておきますが、私はサードパーティの物理ライブラリを使用していませんが、社内で行うつもりです。(これは教育プロジェクトなので、スケジュールがなく、学びたいです)
衝突を作成する必要がある 2 種類のメッシュがあります。
1) スタティック メッシュ (画面上を移動しますが、アニメーションはありません)
2) スキン/ボーン メッシュ (アニメーション)
実際、私はこの解決策を持っています(かなりハック:|)
まず、完全なメッシュ (私の場合はカプセル) を囲むバウンディング ボリュームに対するテストがあります。
1) 静的メッシュについては、手動で (モデラー上で) ブロックに分割し、これらのブロックごとに球体/AABB テストを使用します。(正常に動作しますが、すべてのメッシュをスライスするのは少し面倒です:P) (メッシュを平面に分割する自動システムを試しましたが、悪い結果が得られました:()
2) アニメーション化されたメッシュ ATM の場合、実行時にメッシュを x ブロック (x はボーンの数) に分割しています。各ブロックには、そのボーンが主要なインフルエンサーである頂点が含まれています。(うまくいくこともあれば、本当に悪い結果になることもあります。:|)
メッシュの分割は毎回ではなく、読み込み時に行われることに注意してください (そうしないと、スライドショーのように実行されます:D)
そして、ここに質問があります:
これら2つのケースに使用する最も正気なアイデアは何ですか? これらの方法を研究するための資料はありますか? (いくつかのソースコードと説明があればさらに良いでしょう(言語は重要ではありません。アルゴリズムを理解していれば、実装は簡単です))そのソリューションが他のソリューションよりも優れている理由を議論できますか?kd-tree、octree などについて多くの話を聞きました。それらの構造は理解していますが、衝突検出シナリオでの有用性を見逃しています。
答えてくれてありがとう!!!
編集:ネット上で説明のあるK-Dopの例を見つけようとしています。まだ何も見つかっていません。:(手がかりはありますか? K-Dopを他のタイプのバウンディングボリュームなどで効率的にテストする方法に興味があります...しかし、ネット上のドキュメントは非常に不足しているようです. :(