元記事:
Bullet Physics
Bullet による物理計算
Bob Holcomb 氏著
新しい Bullet 物理エンジンが Erwin氏により Blender に組み込まれ、game engine 内で剛体物理シミュレーションが可能になりました。このエンジンは Object の落下や回転、他の Object との衝突を、現実の法則に従い行います。開発中の物ですが、現時点でも十分使用可能です。
Clear Rotation と Apply Rot/Size
シミュレーションに使用されるそれぞれの Object に対し、まず最初に 'Clear Rotation'([Alt]+[R])と、その後に 'Apply Size/Rot'([Ctrl]+[A])を ObjectMode で行う必要があります。これをしなければ、衝突判定が正しく行われず、変な結果になります(例:Object が Plane と接触した瞬間に爆発するように反応するなど)。(注:あとで自分で回転sしなおすこともできます)。この作業はリリース作業が完了した後で見つかったバグにより必要となったものです。
シミュレーションの焼付け(Bake)
Simulation Baking
この物理エンジンはゲーム専用というわけではありません。一度シミュレーションを実行しすれば、それを Ipo(Blender アニメーション Curve) に焼き付け、レンダリングや修正することができます。Game メニューのこの機能を有効にすると、それぞれの Object の移動と回転は Ipo に記録されます。この機能により、複数の Object 間のリアルな衝突や落下のアニメーションが、すばやく正確に作成できます。
Ipo の作成には、ユーザが物理シミュレーションのための Scene を設定しなければなりません。これには Actor として影響を受け、Attribute が設定されたそれぞれの Object の認識も含まれます。まず、"Record Game Phiysics to IPO" オプションを、Game メニューからチェックし、Game メニューの "Start Game"、もしくは3DWindow 上で[P]キーを押して game engine をスタートします。シミュレーション実行中、毎回 Object の動きが Ipo に記録されます。
Ipo データをクリアするには、"Record Game Physics to IPO" のチェックをはずし、シミュレーションをもう一度実行して下さい。
ここに Elusiun.com に投稿された MrFranz 氏のビデオチュートリアルがあります。(訳注:当サイトの記事は
こちら)
設定
Bullet 物理エンジンを有効にするには、WorldButtons([F8])の "Stars, Mist, Physics" パネルから(リストボックスを)選択する必要があります。
また、重力定数も設定可能です。Bullet の物理エンジンはこの値を、World 内の Object が落下するスピードを決定するのに使用します。
Actor
物理シミュレーションで作用させたい Object ごとに、LogicButtons([F4])の Actor をONにする必要があります。まず Object を選択し、LogicButtons([F4])に入ります。Actor ボタンを押せば、物理エンジンによるシミュレーション内でその Object が有効になります。
- Do Fh: Bullet では使用しません。
- Rot Fh: Bullet では使用しません。
- Mass: Dynamic Actor の重さ。その Actor に力が加えられた時、どれだけ反応するかに影響します。重い Object を動かすには、大きな力が必要です。重い Object は早く落ちないことに注意して下さい! 私たちの環境では、空気抵抗により落下スピードの違いが生じます(空気のない月などでは、羽とかなづちのは同じスピードで落下します)。空気抵抗のシミュレートは "Damp"値で行います。
- Size: バウンディング形状(Bounding Shape)の大きさ。Bounding Shape は衝突が起こるエリアを決定します。
- Form: Bullet では使用しません。
- Damp: Object の全体的な(移動の)減衰度。この値は空気や水の抵抗をシミュレートするのに使用します。宇宙のシーンでは非常に低い、もしくは0の Damp を使用し、空気中ではより高い Damp 値が必要になります。水中では非常に高い Damp 値を使用して下さい。
- RotDamp: "Damp" と同じですが、Object の回転用です。
- Anisotropic: Bullet では使用しません。
Bounding Shape(バウンディング形状)
また、物理エンジンに使用される、Object のバウンディング(境界)形状を決定する方法がいくつか選択できるようになりました。テニスボールのバウンディング形状は Sphere で、木箱は Box にするのが簡単です。より複雑な Object には、Concave Mesh(凹 Mesh)や Convex Polytope(凸ポリトープ)が使用されるでしょう。
- Box: 立方体の境界をその Object の物理シミュレーションに使用します。
- Sphere: 球の境界をその Object の物理シミュレーションに使用します。
- Cylinder: 円柱の境界をその Object の物理シミュレーションに使用します。
- Cone: 円錐の境界をその Object の物理シミュレーションに使用します。
- Concave Mesh: Mesh の三角形を衝突判定に使用します。動かない地形や建物(ビルなど)に使用するのに最適です。
- Convex Polytope: Mesh を包む、きつい風船のようなものです。Dynamic や動く Object に非常に便利です。
- 注意: Size のサポートをしているものの、現在は大きさを変化した場合の、Object の境界にバグがあります。また、Friction に調整が必要です。2.41には修正されると予想されます。
サンプルファイルこちらに、
いくつかの箱とボールによるサンプルがあります。
元記事:
Bullet PhysicsLast update: Dec 23 2005.
This section is maintained by Ton Roosendaal.