2011/02/13

Bullet - strange collision of TriangleMesh このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

しばらくブログを更新しない間に SIO2 が v1.4 -> v2.0 になったりしているようです。
今日は Bullet の不具合?回避のネタです。

TriangleMesh の道路だと引っくり返る

SIO2 ゲームエンジンは物理エンジンとして Bullet を使っています。
で、Vehicle を TriangleMesh 製の道路上で走らせてみたところ、Triangle の境界で急に車体がひっくり返ってしまい、ゲームにならない!ということがあって困っていました。

で、調べたところ、こんなスレがありました。
http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?p=&f=9&t=3052

そこに載っている NotifyOnCollision 関数を定義して、


gContactAddedCallback = NotifyOnCollision;


を初期化時に実行するようにしたところ、解決。

gContactAddedCallback というのは bullet で定義されているシンボルで、以下の extern 宣言をすれば参照できます。


extern ContactAddedCallback gContactAddedCallback;