Bullet 2.76 Physics Japanese Manual
2010/11/24更新

Bullet 2.76 Physics SDK マニュアル

9. アクションインターフェース: 車両、キャラクタコントローラ


アクションインターフェース

物理パイプラインの内側で独自の物理ゲームコードを処理したほうが便利な場合があります。tickコールバックでも可能ですが、複数のオブジェクトが更新されるような場合は、btActionInterfaceから独自クラスを派生させ、btActionInterface::updateAction(btCollisionWorld* world, btScalar deltaTime)を実装するのがより効果的です。この実装例が btRaycastVehicle と btKinematicCharacterController であり、これらはライブラリに組み込まれています。


Raycast Vehicle(車両)

アーケード型の車両シミュレーション用に、簡易なBullet車両モデルがbtRaycastVehicleというクラスで提供されています。ホイールやシャーシを別々の剛体として生成、互いに拘束条件で結び、シミュレーションさせなくても、この簡易モデルを使って車両シミュレーションを実施できます。この簡易モデルは多くの利点があり、商用レーシングゲームにも幅広く使えます。

車両全体は、シャーシと呼ばれる1つの剛体で表されます。ホイールの衝突判定はレイキャストで近似し、タイヤの摩擦にはベーシック異方性摩擦モデルが使われます。

詳細は src/BulletDynamics/Vehicle と Demos/VehicleDemo 、またBulletフォーラムをご覧ください。

 

Kester Maddock氏によるBullet車両シミュレータに関する面白い記事が下記サイトにて公開されています。

http://tinyurl.com/ydfb7lm


キャラクターコントローラ

ゲームのプレイヤーやNPCは、カプセルや球体などの形状を使って構成されます。回転しないようにするために、'angular factor'をゼロにし、衝突や他拘束条件へ影響を与えないよう設定します。これについてはbtRigidBody::setAngularFactorをご覧ください。上方向への軸について逆慣性をゼロにしたり、1軸の蝶番拘束条件を使うといった他のやり方もあります(あまり推奨しませんが)。

 

試験的に(*3)ですが、キャラクタコントローラの例としてbtKinematicCharacterControllerがあります。これはbtGhostShapeを使って、階段を上ったり、壁に沿って滑らかに滑ったりといった衝突判定を実装したものです。使い方については、src/BulletDynamics/Character および Demos/CharacterDemo をご覧ください。


*3)btKinematicCharacterController は未解決のバグがあります

 

inserted by FC2 system