2005-01-15

[]ODE ODE - Nao_uの日記 を含むブックマーク はてなブックマーク - ODE - Nao_uの日記 ODE - Nao_uの日記 のブックマークコメント

数日前からODE(Open Dynamics Eengine)のサンプルをいろいろと触っている。

http://f42.aaa.livedoor.jp/~hassaku/crswikicrs/crswikicrs.php?ODE

ODEはオープンソースの剛体力学シミュレーションライブラリで、力学エンジンとしての機能がひととおり揃っていてそれなりに高速で安定した挙動で動いてくれる、よくできたライブラリとなっている。比較的簡潔な設計になっているので、力学ライブラリの入門用の教材としても使いやすい。しばらくはこれでいろいろ遊んでみようと思う。最終的にはODEのシミュレーション環境をLuaスクリプトで外部から制御できるようにすると楽しいかもしれない。

実際に剛体シミュレーションをゲームに導入する際には、地形との当たり判定が一番のネックになってくるのではないかと思う。力学計算そのものはそれほど大きな負荷にはならないけれど、多数の物体を配置して複雑な地形との当たり判定を行うのは現状ではかなり速度的につらいのではないかと思われる。

今までに作ってきたゲームでは、地形との当たりチェックは直線と球くらいしか使用しておらず、アルゴリズムもあまり洗練されているとはいえなかったので、内容・速度ともに物理シミュレーションに耐えうるものではなかった。今まではチェックするオブジェクトやポリゴン数があまり多くなかったのでそれでも何とかごまかしが効いていたが、今後はそうはいかなくなるだろう。おそらく、Havokなどの商用ライブラリを導入しても背景との当たり判定は自前で行うことになるのではないかと思われるので、もう少し高度な判定アルゴリズムを考えておかないといけないのかもしれない・・・。

それ以前に、けっこうなリソースを割いてゲームに導入するからには、それなりに面白い使い方を考えておかないとただの技術とコストの無駄遣いになってしまう。前回もペナルティ法を使った簡単なものは用意してみたたもののあまり有効に使えそうな場面を見つけることができず、処理負荷を考えるとぱっと見の印象にあまり違いがみられなかったので、ほぼ全てを球体近似で重心点で回転するだけの簡易計算に置き換えることになってしまった。

現状で力学エンジンを採用しているゲームでも壊れるモデル以外のうまい使い道を見出せているゲームは少ないように思う。「Psi-Ops*1」も惜しいところまで行っていたが、Half-life2はどうだったんだろうか?本当に物理計算に意味があるゲームとなると「パネキット*2」くらいしか思いつかない。

とりあえず、Havokを導入したけれど全く生かせてなかったPS2版「鉄腕アトム*3」のような失敗は繰り返してはいけない。あのゲームはそれ以前の問題のほうが大きかったのかもしれないけど。