物理エンジンに必要なアドバイス


12

私は最近、物理エンジンを構築するプロジェクトを開始しました。このためのドキュメントや最高の技術に関連するアドバイスをいただければ幸いです。

まず第一に、当面の課題にはGame-Physics-Engine-Developmentが強く推奨されていることを見てきましたが、セカンドオピニオンを提供できるかどうか疑問に思っていました。また、Amazonをブラウズしているときに、Game Engine Architectureにつまずきました。 ゲーム用の物理エンジンを構築したいので、これも読みやすいと思いました。

第二に、物理シミュレーションの計算は非常に計算集約的であることがわかっているので、CUDAまたはOpenCLのいずれかを使用したいと思いますが、今ではNVIDIAとATIチップセットの両方で動作するため、OpenCLに傾倒しています。

PS:LinuxのC ++でこれを実装します。

回答:


10

ここに私が物理エンジンを書くことを学んだ方法があります。すべて無料で非常に推奨できます:

  1. デイビッド・バラフの論文、特に物理ベースのモデリングの紹介

  2. ブライアンヴィンセントミルティッチの論文インパルスベースの剛体システムの動的シミュレーション

  3. Kacic / Bullock "実用的なダイナミクスシステム" SIGRAPH 2003、編集:リンクが追加されました

これらの論文は、gems-books Gems 4「Welling a Verlet-Based Physics Engine」の1つで、Nick Porcino(LucasArts)の別の素晴らしい記事で言及されました。無料ではありませんが、あらゆる価値があります。

他のエンジンもご覧ください。BulletPhysics Engineのソースはこちらです。

それは最初のCPU上で実行させる、それが十分に複雑だ:):CUDA / OpenCLの実装について

最も可能性が高いあなたがその安定を作ることがあまりにもハード、よく統合物理エンジン以来、しばらく離れてあなたのエンジンをスローすることに注意してください独自の競争力のある機能リストですが、素晴らしい学習体験です!

簡単なエンジンを実行したらすぐに、テストシナリオを作成して、エンジンの結果を別のエンジンの結果と比較します。これは多くのエラーを見つけるのに役立ち、インターフェイスが改善されました。両方のエンジンで同じボディに1秒間同様の力をかけるようなものです。

最後になりましたが、開始時に衝突を無視し、最初に安定したシミュレーションに焦点を合わせます。


すばらしい答えのように見えますが、少し書式を整えたい場合があります。
共産主義のカモ

フィードバックをありがとう。競争力のあるエンジンを作ることができないことに同意しますが、これに関する私の主な目標は学習の部分です。
-adivasile

1
@共産主義者のダックはヒントに感謝します、私は側に新しく、私はフォーマットオプションをチェックアウトするのが
面倒

1
Kacicの論文へのリンク、うまくいけば、それは正しいものだ:)が追加されました
レイ・デイ

5

マイクは正しい、バラフの論文は素晴らしいスタートだが、リジッドボディダイナミクスに関するクリスヘッカーズの記事を忘れないでください:http ://chrishecker.com/Rigid_Body_Dynamics

また、「[..]エンジンを捨てる」という彼のアドバイスは完全に真実です。しかし、あなたは多くを学びます!

質問のCUDA / OpenCL部分について:CUDAを知っている場合、OpenCLへの切り替えは非常に簡単になります。最初にCUDAを学ぶことをお勧めします。非常に多くの優れたチュートリアル、サンプルコード、計算ライブラリがそこにあるからです。例えば:

ただし、CUDAを使い始めるのは簡単です。物理シミュレーションを始めるのは少し難しいですが、両方を組み合わせるのは非常に難しいことです。


あなたはクリス・ヘッカーの論文について言及する必要があります別の偉大なリソース、1だという、絶対的に正しいです
はMaik Semder

4

私もバラフから始めましたが、今では少し時代遅れです。必要なのは反復ソルバーであり、その上で最も優れた論文はErin Cattoの Catto Iterative Dyanmicsです。物理エンジンを実装するために必要なものはすべて揃っています。より詳細な情報(ジョイントや数学など)が必要な場合は、Erlebenの博士論文を少し掘り下げることができますが、それだけです。最初から見つけていたらよかった-Bulletフォーラムを少し調べてみてください。そこにはたくさんの情報があります(多すぎるかもしれません)。

書籍に関しては、多くの書籍が期待はずれですが、ケニーエルレーベンによる物理ベースのアニメーションまたはGame Physics Pearlsをお勧めします。

CUDA / OpenCLについてはあまり知りませんが(私はいつもやりたいと思っていましたが)、原田貴宏の作品をぜひチェックしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.