[Bullet Physics] 衝突判定や物理シミュレーションの各種設定について

後々使う事になるかもしれないので調査 + Skype 談義

番役に立つのは Bullet DocumentationのArticleの部分



Collision Filteringには衝突判定において、特定の物体同士を衝突させるか、させないかについてどうやって実装すればよいか説明をしており、シミュレーション及びゲーム開発時には有用な資料


以下の例は物体同士の衝突ルールを決めるための簡単なソースコード

#define BIT(x) (1<<(x))
enum collisiontypes {
    COL_NOTHING = 0, //<Collide with nothing
    COL_SHIP = BIT(1), //<Collide with ships
    COL_WALL = BIT(2), //<Collide with walls
    COL_POWERUP = BIT(3) //<Collide with powerups
}

int shipCollidesWith = COL_WALL;
int wallCollidesWith = COL_NOTHING;
int powerupCollidesWith = COL_SHIP | COL_WALL;

btRigidBody ship; // Set up the other ship stuff
btRigidBody wall; // Set up the other wall stuff
btRigidBody powerup; // Set up the other powerup stuff

mWorld->addRigidBody(ship, COL_SHIP, shipCollidesWith);
mWorld->addRigidBody(wall, COL_WALL, wallCollidesWith);
mWorld->addRigidBody(powerup, COL_POWERUP, powerupCollidesWith);

Code Snippetsは物体の動きを2次元に限定させる手法や簡単な三角メッシュの使い方の説明がなされている。但し、量はまだまだ少ない


Collision Callbacks and Triggers はどの物体が現在衝突しているかを判別する手法について解説がなされており、やはりゲーム等において重要。


とりあえず現在必要な資料はこれくらいかな。。