物理エンジンの解説

物理エンジンの研究について思ったこと

  • 当時気づいていなかったけど、Mihai Anitescuという人が多体剛体運動の解法についてしっかり研究している。ややこしい解法の細かなことについて、一つずつ解決していっているように見える。(2011.2)

物理エンジン全般についての講演

CEDEC 2008

2008年9月10日にCEDEC(CESA デベロッパーズカンファレンス)で衝突判定についての講演(チュートリアル)をしました.衝突判定アルゴリズムの速さはソート検索アルゴリズムの速さと比べると分かりやすいです.という内容です.

並列計算の場合は?という質問に,また別のことを考える必要がおきますと答えましたが,どちらが大事かを言うのを忘れました.
アルゴリズムのオーダーの方がずっと大事です.並列化は並列計算機の数(PS3なら7)倍早くなるだけですが,オーダーは∞倍です.なので,数が多ければ,アルゴリズムの速さにはかないません.
ただ物理シミュレータでは n = 100~1000くらいということが多くて,オーダーでは大雑把過ぎるということになります.

EC2006

2006年9月15日に、エンタテインメントコンピューティング2006のチュートリアルとして、「物理シミュレーションの現状と未来」と題してチュートリアルを行いました。 内容は、物理シミュレーションのお役立ちどころ、所謂ゲーム用のエンジンのシミュレーション方法の解説、今後の予想です。

(Featherstoneの方法の説明にミスがありました 2008.5.27) (陰積分の説明にミスがありました 2008.7.16)

CEDEC 2004

2004年9月7日にCEDEC(CESA デベロッパーズカンファレンス)で物理シミュレータについて講演をさせていただきました.
資料(ppt) 沢山の方にお集まりいただきありがたかったのですが,どれだけの方にご満足いただけたか少し不安に思っています.
ですので,いくつか教科書などを紹介させていただきます.

力学について勉強したい方
戸田盛和「物理入門コース1 力学」
剛体の運動方程式って? という方
中川憲治「工科のための一般力学」
行列,ベクトルの計算が? という方
プログラミングのための線形代数 平岡 和幸 (著), 堀 玄 (著) 非常に分かりやすい&面白い.
Eric Lengyel著 狩野智英訳「ゲームプログラミングのための3Dグラフィックス数学」高いですけど必要なことだけきちんとまとまってて良いです.剛体の運動も書いてあるので,こっちだけで良いかも.さすが狩野君訳.(狩野君の今後の活動に期待してます)

Web上でもベクトルと行列とか,行列代数これだけとかあります.
クォータニオンについてはベクトル・複素数・クォータニオンが面白そうです(私は全部は読んでません).

拘束力の求め方についてもっと詳しく
講演資料が一番簡単に書いてあると思っています.より詳細を知りたいならば,David Baraffの"Siggraph Course Notes"を見てください.
Featherstone法について
これも講演資料が一番簡単に書いてあると思っています.より詳しくはBrian Vincent MirtichのPh.D. Thesisの4章(P.92〜)がお勧めです.原著より分かりやすいらしいです(原著を読んでないもので).

ゲームテクノロジー研究会

4月10日にゲームテクノロジー研究会で物理シミュレータについて講演をさせていただきました.

デモと資料

発表資料(ppt), 制御(安定性)についてのメモ
実行ファイルとデータのセット(Windows用)起動用batファイルをつけました

参考文献

今回の発表資料(ppt)よりも進んだ内容を知りたい方向けです.pptに疑問点がある場合はお問い合わせください.
Springheadの物理シミュレータについての日本語論文
Open Dynamics Engine, Tokamak
Solid これを参考にして衝突判定を作りました.
QhallMullerとPreparataのアルゴリズムを実装するために最初に使ったQuickHullエンジン.現在は高速化のため独自開発.
David Baraff解析法をアニメーションに最初に応用した人.SIGGGRAPHペーパー沢山ありますが,Courseの方がお勧めです.
中村研山根さんFeatherstoneと似ているが,輪が合っても解ける高速解析法を作った人.OpenHRPにも使われているが,残念ながらOpenHRPは他によほど遅いところがあるみたいで,いまいち.