From BlenderWiki

Jump to: navigation, search

剛体(Rigid Body)シミュレーション

はじめに

剛体シミュレーションは固体のオブジェクトの動きをシミュレーションするのに使用できます。オブジェクトの位置と方向に影響を与え、変形はしません。

他の Blender のシミュレーションとは違い、この剛体シミュはアニメーションシステムと密接に働きます。これは剛体が通常のオブジェクトのように使用でき、親子関係やアニメーションコンストレイント、ドライバーの一部とすることができるということを意味します。

剛体(Rigid Body)オブジェクト

現時点ではメッシュオブジェクトのみが剛体シミュレーションに参加できます。 剛体を作成するには、物理演算(Physics)プロパティの「剛体(Rigid Body)」をクリックするか、ツールシェルフの「アクティブ/パッシブを追加(Add Active/Passive)」を使用します。

剛体には二つのタイプ、アクティブ(Active)とパッシブ(Passive)があります。 アクティブボディは動的にシミュレートされ、一方、パッシブボディは静止したままです。両タイプは「アニメ(Animated)」オプションを使用することで、アニメーションシステムから操作できます。

シミュレーション中、剛体システムは動的剛体オブジェクトの場所と方向を上書きします。ただしそのオブジェクトの位置と回転は変更されないため、剛体シミュはコンストレイントと同様の挙動であることに注意してください。剛体のトランスフォームを適用するには、「オブジェクトメニュー→適用→ビジュアルトランスフォーム(Objectメニュー→Apply→Visual Transform)」を使用してください。

剛体オブジェクトのスケールもシミュレーションに影響しますが、常にアニメーションシステムにコントロールされています。

プロパティ

  • タイプ(Type): シミュレーション中の剛体の役割。アクティブオブジェクトは動的にシミュレートでき、パッシブオブジェクトは静止したままになります。
  • 有効化(Enabled): オブジェクトのシミュレーションのON/OFF。
  • アニメ(Animated): 剛体をアニメーションシステムで駆動可能にします。
  • 重量(Mass): オブジェクトの重さを指定します。

剛体コリジョン(Rigid Body Collisions)

全体的な設定

  • 摩擦(Friction): オブジェクトが衝突しあう時、速度が低下する量を指定します。
  • バウンス(Bounciness): オブジェクトが衝突後に反発する量を指定します。

衝突判定の形状

シェイプ(Shape) 設定で、オブジェクトの衝突判定を行う形状を決めます。以下の形状が使用可能です。

プリミティブ形状 - これらはメモリとパフォーマンスの点においてベストですが、そのオブジェクトの実際の形状を反映するとは限りません。オブジェクトのバウンディングボックスを元に計算されます。当分、重心は常にその中心となります。
  • ボックス(Box): バウンディングボックスから軸毎の大きさが計算されます。
  • 球(Sphere): 半径がバウンディングボックスの最大の軸の長さになります。
  • カプセル(Capsule): Z軸を上とします。
  • 円柱(Cylinder): Z軸を上とします。高さはZ軸から取り、半径は X または Y 軸の大きい方になります。
  • 円錐(Cone): Z軸を上とします。高さはZ軸から取り、半径は X または Y 軸の大きい方になります。
'メッシュを元にした形状' - これらはオブジェクトの形状を元に計算されるため、オブジェクトの再現性が向上します。これらの形状の重心はオブジェクトの原点となります。
  • 凸包(Convex Hull): オブジェクトを凸型で近似します。パフォーマンスと安定性に優れています。
  • メッシュ(Mesh): 凹型のオブジェクトをシミュレートできます。ただし遅くて不安定です。

衝突のマージン(Collision Margin)

衝突のマージンは剛体のパフォーマンスと安定性を向上するのに使用されます。形状によって挙動が変化し、いくつかの形状では付加すると、もう一方とそれらの周囲に隙間が見えます。

マージンは以下の形状に付加されます。

  • 球(Sphere)
  • 立方体(Box)
  • カプセル(Capsule)
  • 円柱(Cylinder)
  • 凸包(Convex Hull): 付加時、スケールの3軸が同じでないといけません。

マージンは以下の形状には付加されません

  • 円錐(Cone)
  • アクティブ三角形メッシュ(Triangle Mesh)
  • パッシブ三角形メッシュ(Triangle Mesh): 大抵の場合、0に設定できます。

剛体力学(Rigid Body Dynamics)

  • 非アクティブ化を有効(Enable Deactivation): シミュレーション時、オブジェクトを非アクティブ化(沈静化)できるようにします(パフォーマンスと安定性は向上しますが、問題が起こる恐れがあります)。
  • 非アクティブ化を開始(Start Deactivated): オブジェクトの非アクティブ化を開始します。他のオブジェクトと衝突するとアクティブになります。

Starts objects deactivated. They're activated on collision with other objects.

  • 非アクティブ化速度(Deactivation Velocity): 剛体が非アクティブ化される線形・角度を下に指定します。
  • 減衰(Damping): 時間とともに失われる線形・角速の量。

剛体ワールド(Rigid Body World)

剛体ワールドは、シミュレーション中のすべての剛体に適用される設定を保持します。

剛体ワールド中でグループが指定されている場合、その剛体オブジェクトとコンストレイントのみがシミュレーションに考慮されるようになります。

  • グループ(Group): シミュレーションに寄与する剛体。
  • コンストレイント(Constraints): シミュレーションに寄与するコンストレイント。

シミュレーション品質とタイミング設定

  • 速度(Speed): シミュレーションの速度を変更するのに使用できます。
  • 分離の衝撃(Split Impulse): オブジェクト群が衝突で分離される力を制限します。一般的に結果が改善されますが、シミュレーションの安定性が低下します(特に多数のオブジェクトを積み上げた時)。
  • 毎秒ステップ数(Steps Per Second): 毎秒のシミュレーションのステップ量。これは精度にのみ影響し、シミュレーションの速度には影響しません。
  • ソルバー反復数(Solver Iterations): シミュレーションステップ毎にコンストレイントソルバーを繰り返す量。コンストレイントとオブジェクト積み上げ時の安定性を向上します。

キャッシュ(Cache)

シミュレーションが有効になるフレーム範囲を指定します。

シミュレーションのベイクに使用できます。 注意: いくつかのキャッシュの機能はまだ利用できません(ディスクへのキャッシュ保存など)。

フィールドの重み付け(Field Weights)

剛体のフィールドの重み付けを、いくつかのフォースフィールドと重力(Gravity)の影響を制限するのに使用できます。

剛体コンストレイント(Rigid Body Constraint)

コンストレイント(ジョイントとして知られている物)は二つの剛体をつなぎます。通常のアニメーションコンストレイントとは違い、これらのオブジェクトは分離しています。

剛体コンストレイントを作成する最も簡単な方法は、ツールシェルフにある、"接続(Connect)" ボタンを使用することです。また、物理演算(Physics)プロパティにある「剛体コンストレイント(Rigid Body Constraint)」ボタンをクリックし、手動でどのオブジェクトをつなぐかを指定することもできます。

シミュレーション中のコンストレイントのピボットになるため、コンストレイントオブジェクトの位置と方向は重要です。 以下のコンストレイントタイプが利用可能です。

  • 定値(Fixed) - 剛体同士を接着します。
  • ポイント(Point) - 共通のピボットポイントの周囲に剛体の動きを制限します。
  • ヒンジ(Hinge) - コンストレイントオブジェクトのZ軸のみ中心にして回転できます。
  • スライダー(Slider) - コンストレイントオブジェクトのX軸のみに移動を制限します。
  • ピストン(Piston) - スライダーに似ていますが、コンストレイントオブジェクトのX軸で回転することもできます。
  • 汎用(Generic) - 制約する軸をカスタマイズ可能です。
  • 汎用スプリング(Generic Spring) - 汎用にばねの動きを追加したようなものです。
  • 有効(Enabled): シミュレーション中、そのコンストレイントを有効にするかどうかを指定します。
  • 衝突を無効(Disable Collisions): オブジェクトの衝突を制限できます。
  • オブジェクト(Object1): コンストレイントする最初のオブジェクト。
  • オブジェクト(Object2): コンストレイントする二つめのオブジェクト。
  • 破壊可能(Breakable): シミュレーション中、コンストレイントを破壊可能にします。
  • 破壊のしきい値(Breaking Threshold): コンストレイントが破壊されるのに必要な衝撃力。
  • 反復を上書き(Override Iterations): 剛体ワールド設定よりコンストレイントを強くする(繰り返しを増やす)、または弱くする(繰り返しを減らす)ことができます。
  • 反復(Iterations): このコンストレイントでシミュレーションステップ毎にコンストレイントソルバーを繰り返す回数。
  • 制限(Limits): オブジェクトをさらに指定の移動・回転範囲に制限することができます。
    • 有効(Enable): 指定の軸での制限を有効にします。
    • 小文字(下限)(Lower Limit): 移動・回転制限の下限。
    • 大文字(上限)(Upper Limit): 移動・回転制限の上限。
ある軸をロックするには、両方の値を 0 にします。

(訳注:小文字と大文字は後のリビジョンで治る予定です)

  • ばね(Springs):
    • 有効(Enable): 軸のばねを有効にします。
    • 剛性(Stiffness): ばねの「曲がりやすさ」を指定します。
    • 減衰(Damping): ばねの減衰量。

エフェクター(Effectors)

剛体シミュレーションは Blender のフォースフィールドとともに働きます。単にいつもどおり作成・使用するだけです。

シミュレーションの安定性

シミュレーションの安定性を向上する一番簡単な方法は、毎秒ステップ数(Steps Per Second)を増やすことです。しかし、ステップを多くしすぎると問題が生じる可能性があり、シミュレーションがさらに安定しなくなるので注意が必要です(1000ステップ以上が必要な場合、他の安定性を向上する方法に目を向けるべきです)。

ソルバーの繰り返し(solver iterations)数を増やすとコンストレイントが強くなり、オブジェクトの積み上げの安定性が向上します。

一番いいのは現在不安定である、小さなオブジェクトを避けることです。理想ではオブジェクトは少なくとも直径20cm以上にすべきです。さらに必要なら、一般的には推奨できませんが、衝突のマージンを0に設定すれば、小さなオブジェクトの挙動がより自然になるのに役立つでしょう。

剛体と他のシミュレーションとの組み合わせ

剛体シミュはアニメーションシステムの一部であるため、ちょうどアニメーションシステムができること同様に、他のシミュレーションにも影響を与えることができます。

これを行うには、剛体オブジェクトにはコリジョン(Collision)モディファイアを付ける必要があります。単に物理演算(Physics)プロパティで、[コリジョン(Collision)]をクリックするだけです。

剛体のスケーリング

剛体オブジェクトは拡大縮小可能で、シミュレーション中も同じです。大半のケースではうまくいきますが、問題が発生することもあります。

動的なスケーリングが必要ない場合は、"適用→拡大縮小(Apply Scale)" を使用し、剛体オブジェクトにスケールを適用すべきです。

以下は(若干古くなっていますが)デモとチュートリアルビデオです。